c_src: update
authorJean Privat <jean@pryen.org>
Thu, 16 Feb 2012 18:33:48 +0000 (13:33 -0500)
committerJean Privat <jean@pryen.org>
Thu, 16 Feb 2012 18:33:48 +0000 (13:33 -0500)
Signed-off-by: Jean Privat <jean@pryen.org>

152 files changed:
c_src/abstracttool._sep.c
c_src/abstracttool._sep.h
c_src/analysis._sep.h
c_src/analysis___allocate_iregister_slots._sep.c
c_src/analysis___allocate_iregister_slots._sep.h
c_src/analysis___cha_analysis._sep.c
c_src/analysis___cha_analysis._sep.h
c_src/analysis___dead_method_removal._sep.c
c_src/analysis___dead_method_removal._sep.h
c_src/analysis___icode_dump._sep.c
c_src/analysis___icode_dump._sep.h
c_src/analysis___inline_get_and_set._sep.c
c_src/analysis___inline_get_and_set._sep.h
c_src/analysis___inline_methods._sep.c
c_src/analysis___inline_methods._sep.h
c_src/analysis___instantiated_type_analysis._sep.c
c_src/analysis___instantiated_type_analysis._sep.h
c_src/analysis___reachable_as_init._sep.h
c_src/analysis___reachable_as_init_impl._sep.h
c_src/analysis___reachable_from_init_method_analysis._sep.h
c_src/analysis___reachable_from_init_method_analysis_impl._sep.c
c_src/analysis___reachable_from_init_method_analysis_impl._sep.h
c_src/analysis___reachable_method_analysis._sep.h
c_src/analysis___remove_out_of_init_get_test._sep.c
c_src/analysis___remove_out_of_init_get_test._sep.h
c_src/analysis___rta_analysis._sep.c
c_src/analysis___rta_analysis._sep.h
c_src/compiling._sep.c
c_src/compiling._sep.h
c_src/compiling___compiling_base._sep.c
c_src/compiling___compiling_base._sep.h
c_src/compiling___compiling_global._sep.c
c_src/compiling___compiling_global._sep.h
c_src/compiling___compiling_icode._sep.c
c_src/compiling___compiling_icode._sep.h
c_src/compiling___compiling_writer._sep.c
c_src/compiling___compiling_writer._sep.h
c_src/compiling___icode_generator._sep.c
c_src/compiling___icode_generator._sep.h
c_src/compiling___table_computation._sep.c
c_src/compiling___table_computation._sep.h
c_src/environ._nitni.h
c_src/environ_nit.h
c_src/exec._nitni.h
c_src/exec_nit.h
c_src/file._nitni.h
c_src/file_nit.c
c_src/icode._sep.h
c_src/icode___icode_base._sep.c
c_src/icode___icode_base._sep.h
c_src/icode___icode_builder._sep.c
c_src/icode___icode_builder._sep.h
c_src/icode___icode_tools._sep.c
c_src/icode___icode_tools._sep.h
c_src/location._sep.c
c_src/location._sep.h
c_src/math._nitni.c
c_src/math._nitni.h
c_src/metamodel._sep.h
c_src/metamodel___abstractmetamodel._sep.c
c_src/metamodel___abstractmetamodel._sep.h
c_src/metamodel___genericity._sep.c
c_src/metamodel___genericity._sep.h
c_src/metamodel___inheritance._sep.c
c_src/metamodel___inheritance._sep.h
c_src/metamodel___partial_order._sep.c
c_src/metamodel___partial_order._sep.h
c_src/metamodel___static_type._sep.c
c_src/metamodel___static_type._sep.h
c_src/metamodel___type_formal._sep.c
c_src/metamodel___type_formal._sep.h
c_src/metamodel___vararg._sep.c
c_src/metamodel___vararg._sep.h
c_src/metamodel___virtualtype._sep.c
c_src/metamodel___virtualtype._sep.h
c_src/mmloader._sep.c
c_src/mmloader._sep.h
c_src/native_interface._sep.h
c_src/native_interface___frontier._sep.c
c_src/native_interface___frontier._sep.h
c_src/native_interface___ni_metamodel._sep.c
c_src/native_interface___ni_metamodel._sep.h
c_src/native_interface___ni_tools._sep.h
c_src/nit_version._sep.c
c_src/nit_version._sep.h
c_src/nitc._build.sh
c_src/nitc._sep.c
c_src/nitc._sep.h
c_src/nitc._tables.c
c_src/opts._sep.c
c_src/opts._sep.h
c_src/parser._sep.c
c_src/parser._sep.h
c_src/parser___lexer._sep.c
c_src/parser___lexer._sep.h
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/parser___tables._sep.h
c_src/primitive_info._sep.c
c_src/primitive_info._sep.h
c_src/program._sep.c
c_src/program._sep.h
c_src/separate_options._sep.c
c_src/separate_options._sep.h
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___array._sep.h
c_src/standard___collection___hash_collection._sep.c
c_src/standard___collection___hash_collection._sep.h
c_src/standard___collection___list._sep.c
c_src/standard___collection___list._sep.h
c_src/standard___collection___range._sep.c
c_src/standard___collection___sorter._sep.c
c_src/standard___environ._sep.c
c_src/standard___exec._sep.c
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___math._sep.h
c_src/standard___stream._sep.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._sep.c
c_src/stream._nitni.h
c_src/string._nitni.h
c_src/syntax._sep.c
c_src/syntax._sep.h
c_src/syntax___flow._sep.c
c_src/syntax___flow._sep.h
c_src/syntax___icode_generation._sep.c
c_src/syntax___icode_generation._sep.h
c_src/syntax___mmbuilder._sep.c
c_src/syntax___mmbuilder._sep.h
c_src/syntax___scope._sep.c
c_src/syntax___scope._sep.h
c_src/syntax___syntax_base._sep.c
c_src/syntax___syntax_base._sep.h
c_src/syntax___typing._sep.c
c_src/syntax___typing._sep.h
c_src/tables._nitni.c
c_src/tables._nitni.h
c_src/time._nitni.h
c_src/utils._sep.c
c_src/utils._sep.h

index 9d099b0..e380868 100644 (file)
@@ -163,11 +163,11 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
   /* ./abstracttool.nit:55 */
   fra.me.REG[1] = CALL_mmloader___ToolContext___option_context(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_opts___OptionContext___rest(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./abstracttool.nit:55 */
@@ -175,7 +175,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./abstracttool.nit:55 */
     REGB2 = REGB1;
@@ -231,69 +231,84 @@ void abstracttool___AbstractCompiler___exec_cmd_line(val_t p0){
   CALL_mmloader___ToolContext___info(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], REGB2);
   /* ./abstracttool.nit:64 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB0)) {
       /* ./abstracttool.nit:64 */
       REGB0 = REGB2;
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[3] = fra.me.REG[1];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = REGB0;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label10;
     }
   }
@@ -706,7 +721,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./abstracttool.nit:119 */
     REGB2 = REGB1;
@@ -746,7 +761,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./abstracttool.nit:121 */
       REGB0 = REGB1;
index 4484cdb..1a6838e 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/abstracttool. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./abstracttool. */
 #ifndef abstracttool_sep
 #define abstracttool_sep
 #include "syntax._sep.h"
index d47410b..c41b9a7 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/analysis. */
 #ifndef analysis_sep
 #define analysis_sep
 #include "analysis___icode_dump._sep.h"
index 2ef8c1a..4780967 100644 (file)
@@ -113,7 +113,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./analysis//allocate_iregister_slots.nit:53 */
     REGB2 = REGB1;
@@ -131,7 +131,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* ./analysis//allocate_iregister_slots.nit:57 */
       REGB1 = REGB2;
@@ -193,7 +193,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./analysis//allocate_iregister_slots.nit:65 */
     REGB2 = REGB1;
@@ -244,7 +244,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* ./analysis//allocate_iregister_slots.nit:72 */
       REGB1 = REGB2;
@@ -296,6 +296,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___defe
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_analysis___allocate_iregister_slots;
@@ -335,7 +336,12 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___defe
         nit_abort("Uninitialized attribute %s", "_born_rank", LOCATE_analysis___allocate_iregister_slots, 102);
       }
       REGB1 = ATTR_analysis___allocate_iregister_slots___IRegister____born_rank(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
       /* ./analysis//allocate_iregister_slots.nit:102 */
       if (UNTAG_Bool(REGB1)) {
@@ -387,7 +393,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./analysis//allocate_iregister_slots.nit:112 */
     REGB2 = REGB1;
@@ -409,7 +415,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -464,7 +470,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./analysis//allocate_iregister_slots.nit:126 */
     REGB2 = REGB1;
@@ -480,7 +486,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -543,7 +549,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./analysis//allocate_iregister_slots.nit:145 */
     REGB2 = REGB1;
@@ -753,7 +759,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___regi
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
       /* ./analysis//allocate_iregister_slots.nit:191 */
       REGB0 = REGB1;
@@ -823,6 +829,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_analysis___allocate_iregister_slots;
@@ -846,7 +853,7 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
       /* ./analysis//allocate_iregister_slots.nit:208 */
       REGB0 = REGB1;
@@ -868,7 +875,12 @@ void analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___free
     nit_abort("Uninitialized attribute %s", "_current_rank", LOCATE_analysis___allocate_iregister_slots, 209);
   }
   REGB1 = ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____current_rank(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* ./analysis//allocate_iregister_slots.nit:209 */
   if (UNTAG_Bool(REGB1)) {
@@ -1061,7 +1073,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -1080,7 +1092,7 @@ void analysis___allocate_iregister_slots___SlotGroup___register(val_t p0, val_t
   return;
 }
 void analysis___allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -1088,25 +1100,28 @@ void analysis___allocate_iregister_slots___SlotGroup___free(val_t p0, val_t p1){
   fra.me.line = 259;
   fra.me.meth = LOCATE_analysis___allocate_iregister_slots___SlotGroup___free;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./analysis//allocate_iregister_slots.nit:259 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./analysis//allocate_iregister_slots.nit:262 */
-  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_free", LOCATE_analysis___allocate_iregister_slots, 262);
   }
-  fra.me.REG[0] = ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[0]);
+  fra.me.REG[2] = ATTR_analysis___allocate_iregister_slots___SlotGroup____free(fra.me.REG[2]);
   fra.me.REG[1] = ATTR_analysis___allocate_iregister_slots___IRegister____slot_index(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_analysis___allocate_iregister_slots, 262);
   }
-  CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
index 7cedeb1..ed00b4f 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/allocate_iregister_slots. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/allocate_iregister_slots. */
 #ifndef analysis___allocate_iregister_slots_sep
 #define analysis___allocate_iregister_slots_sep
 #include "icode._sep.h"
index 346953b..b659714 100644 (file)
@@ -483,45 +483,51 @@ void analysis___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
       /* ./analysis//cha_analysis.nit:103 */
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 103);
-      }
-      fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_analysis___cha_analysis, 103);
-      }
-      /* ./analysis//cha_analysis.nit:104 */
-      fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
-      fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      /* ./analysis//cha_analysis.nit:105 */
-      fra.me.REG[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
+      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 105);
+        /* ./analysis//cha_analysis.nit:104 */
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 104);
+        }
+        fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
+        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+        REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+        if (UNTAG_Bool(REGB1)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_analysis___cha_analysis, 104);
+        }
+        /* ./analysis//cha_analysis.nit:105 */
+        fra.me.REG[5] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+        /* ./analysis//cha_analysis.nit:106 */
+        fra.me.REG[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 106);
+        }
+        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
+        REGB1 = TAG_Bool(false);
+        REGB0 = TAG_Bool(false);
+        CALL_analysis___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
       }
-      fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
-      REGB1 = TAG_Bool(false);
-      REGB0 = TAG_Bool(false);
-      CALL_analysis___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
     } else {
-      /* ./analysis//cha_analysis.nit:106 */
+      /* ./analysis//cha_analysis.nit:108 */
       REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ISuper, ID_icode___icode_base___ISuper)) /*cast ISuper*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./analysis//cha_analysis.nit:107 */
+        /* ./analysis//cha_analysis.nit:109 */
         fra.me.REG[6] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 107);
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 109);
         }
         fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(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_analysis___cha_analysis, 107);
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 109);
         }
         fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
         fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[5])(fra.me.REG[5]);
@@ -529,19 +535,19 @@ void analysis___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
         REGB1 = TAG_Bool(true);
         CALL_analysis___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[5], REGB0, REGB1);
       } else {
-        /* ./analysis//cha_analysis.nit:108 */
+        /* ./analysis//cha_analysis.nit:110 */
         REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
         if (UNTAG_Bool(REGB1)) {
-          /* ./analysis//cha_analysis.nit:109 */
+          /* ./analysis//cha_analysis.nit:111 */
           fra.me.REG[5] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
           REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 109);
+            nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 111);
           }
           fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
           REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 109);
+            nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 111);
           }
           fra.me.REG[6] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
           fra.me.REG[6] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[6])(fra.me.REG[6]);
@@ -549,47 +555,47 @@ void analysis___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
           REGB0 = TAG_Bool(false);
           CALL_analysis___cha_analysis___ChaBuilder___add_search(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], REGB1, REGB0);
         } else {
-          /* ./analysis//cha_analysis.nit:110 */
+          /* ./analysis//cha_analysis.nit:112 */
           REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICheckInstance, ID_icode___icode_base___ICheckInstance)) /*cast ICheckInstance*/;
           if (UNTAG_Bool(REGB0)) {
-            /* ./analysis//cha_analysis.nit:111 */
+            /* ./analysis//cha_analysis.nit:113 */
             REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 111);
+              nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 113);
             }
             fra.me.REG[6] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
-            /* ./analysis//cha_analysis.nit:112 */
+            /* ./analysis//cha_analysis.nit:114 */
             fra.me.REG[4] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
             fra.me.REG[4] = CALL_analysis___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
             fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
             fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
             fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./analysis//cha_analysis.nit:113 */
+            /* ./analysis//cha_analysis.nit:115 */
             fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./analysis//cha_analysis.nit:114 */
+            /* ./analysis//cha_analysis.nit:116 */
             fra.me.REG[6] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
             REGB0 = TAG_Bool(true);
             REGB1 = TAG_Bool(false);
             CALL_analysis___cha_analysis___ChaBuilder___add_search(fra.me.REG[6])(fra.me.REG[6], NIT_NULL, fra.me.REG[4], REGB0, REGB1);
           } else {
-            /* ./analysis//cha_analysis.nit:115 */
+            /* ./analysis//cha_analysis.nit:117 */
             REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IInitAttributes, ID_icode___icode_base___IInitAttributes)) /*cast IInitAttributes*/;
             if (UNTAG_Bool(REGB1)) {
-              /* ./analysis//cha_analysis.nit:116 */
+              /* ./analysis//cha_analysis.nit:118 */
               REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
               if (UNTAG_Bool(REGB1)) {
-               nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 116);
+               nit_abort("Reciever is null", NULL, LOCATE_analysis___cha_analysis, 118);
               }
               fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
-              /* ./analysis//cha_analysis.nit:117 */
+              /* ./analysis//cha_analysis.nit:119 */
               fra.me.REG[4] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
               fra.me.REG[4] = CALL_analysis___cha_analysis___ChaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
               fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
               fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
               fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
-              /* ./analysis//cha_analysis.nit:118 */
+              /* ./analysis//cha_analysis.nit:120 */
               fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
-              /* ./analysis//cha_analysis.nit:119 */
+              /* ./analysis//cha_analysis.nit:121 */
               fra.me.REG[2] = CALL_analysis___cha_analysis___ChaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
               REGB1 = TAG_Bool(true);
               REGB0 = TAG_Bool(false);
@@ -600,7 +606,7 @@ void analysis___cha_analysis___ChaVisitor___visit_icode(val_t p0, val_t p1){
       }
     }
   }
-  /* ./analysis//cha_analysis.nit:121 */
+  /* ./analysis//cha_analysis.nit:123 */
   CALL_SUPER_analysis___cha_analysis___ChaVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -612,7 +618,7 @@ void analysis___cha_analysis___ChaVisitor___init(val_t p0, val_t p1, int* init_t
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis___cha_analysis;
-  fra.me.line = 124;
+  fra.me.line = 126;
   fra.me.meth = LOCATE_analysis___cha_analysis___ChaVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -621,10 +627,10 @@ void analysis___cha_analysis___ChaVisitor___init(val_t p0, val_t p1, int* init_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//cha_analysis.nit:124 */
+  /* ./analysis//cha_analysis.nit:126 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./analysis//cha_analysis.nit:126 */
+  /* ./analysis//cha_analysis.nit:128 */
   ATTR_analysis___cha_analysis___ChaVisitor____builder(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
index 4e50845..e7d2bc0 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/cha_analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/cha_analysis. */
 #ifndef analysis___cha_analysis_sep
 #define analysis___cha_analysis_sep
 #include "analysis___reachable_method_analysis._sep.h"
index 42c4255..c54156a 100644 (file)
@@ -90,7 +90,7 @@ void analysis___dead_method_removal___Program___optimize_dead_methods(val_t p0){
       /* ./analysis//dead_method_removal.nit:32 */
       REGB0 = CALL_analysis___dead_method_removal___Program___nb_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ./analysis//dead_method_removal.nit:32 */
       ATTR_analysis___dead_method_removal___Program____nb_removed_iroutines(closctx->REG[0]) = REGB1;
@@ -98,7 +98,7 @@ void analysis___dead_method_removal___Program___optimize_dead_methods(val_t p0){
       /* ./analysis//dead_method_removal.nit:34 */
       REGB1 = CALL_analysis___dead_method_removal___Program___nb_not_removed_iroutines(closctx->REG[0])(closctx->REG[0]);
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
       /* ./analysis//dead_method_removal.nit:34 */
       ATTR_analysis___dead_method_removal___Program____nb_not_removed_iroutines(closctx->REG[0]) = REGB0;
index 35bb46a..1f2dd38 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/dead_method_removal. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/dead_method_removal. */
 #ifndef analysis___dead_method_removal_sep
 #define analysis___dead_method_removal_sep
 #include "analysis___reachable_method_analysis._sep.h"
index 437b346..e7e6a23 100644 (file)
@@ -4,6 +4,7 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_2; /* Once value */
     static val_t once_value_3; /* Once value */
@@ -117,7 +118,12 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
   /* ./analysis//icode_dump.nit:38 */
   REGB0 = CALL_analysis___allocate_iregister_slots___IRoutine___std_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./analysis//icode_dump.nit:38 */
   if (UNTAG_Bool(REGB1)) {
@@ -151,7 +157,12 @@ void analysis___icode_dump___IRoutine___dump(val_t p0, val_t p1){
   /* ./analysis//icode_dump.nit:41 */
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___tag_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* ./analysis//icode_dump.nit:41 */
   if (UNTAG_Bool(REGB0)) {
@@ -458,7 +469,7 @@ val_t analysis___icode_dump___ICodeDumper___register(val_t p0, val_t p1){
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
         /* ./analysis//icode_dump.nit:86 */
         REGB0 = REGB1;
@@ -468,7 +479,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       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;
@@ -517,7 +528,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       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;
@@ -803,7 +814,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -895,7 +906,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -987,7 +998,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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     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;
@@ -1091,11 +1102,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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./analysis//icode_dump.nit:173 */
       REGB2 = TAG_Int(0);
@@ -1110,14 +1126,14 @@ void analysis___icode_dump___ICodeDumper___write(val_t p0, val_t p1){
       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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -1165,7 +1181,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   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;
@@ -1188,7 +1204,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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   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;
@@ -2709,7 +2725,7 @@ val_t analysis___icode_dump___ITypeCheck___dump_intern(val_t p0, val_t p1){
   } 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]);
-  fra.me.REG[3] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_analysis___icode_dump___ICodeDumper___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]);
   if (!once_value_2) {
@@ -3189,7 +3205,7 @@ val_t analysis___icode_dump___INot___dump_intern(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 void analysis___icode_dump___IOnce___dump(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   static val_t once_value_1; /* Once value */
@@ -3200,61 +3216,64 @@ void analysis___icode_dump___IOnce___dump(val_t p0, val_t p1){
   fra.me.line = 435;
   fra.me.meth = LOCATE_analysis___icode_dump___IOnce___dump;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./analysis//icode_dump.nit:435 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./analysis//icode_dump.nit:437 */
   REGB0 = TAG_Int(3);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
-    fra.me.REG[3] = BOX_NativeString("");
+    fra.me.REG[4] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_1 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    once_value_1 = fra.me.REG[4];
     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]);
-  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+  } else fra.me.REG[4] = once_value_1;
+  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[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_analysis___icode_dump, 437);
   }
-  fra.me.REG[3] = CALL_analysis___icode_dump___ICodeDumper___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]);
+  fra.me.REG[4] = CALL_analysis___icode_dump___ICodeDumper___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   if (!once_value_2) {
-    fra.me.REG[3] = BOX_NativeString(" := ONCE {");
+    fra.me.REG[4] = BOX_NativeString(" := ONCE {");
     REGB0 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_2 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    once_value_2 = fra.me.REG[4];
     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[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_analysis___icode_dump___ICodeDumper___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  } else fra.me.REG[4] = once_value_2;
+  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]);
+  CALL_analysis___icode_dump___ICodeDumper___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./analysis//icode_dump.nit:438 */
   CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
   /* ./analysis//icode_dump.nit:439 */
-  fra.me.REG[0] = CALL_icode___icode_base___IOnce___body(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_analysis___icode_dump___ICode___dump(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  fra.me.REG[2] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_analysis___icode_dump___ICode___dump(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   /* ./analysis//icode_dump.nit:440 */
   CALL_analysis___icode_dump___ICodeDumper___unindent(fra.me.REG[1])(fra.me.REG[1]);
   /* ./analysis//icode_dump.nit:441 */
   if (!once_value_3) {
-    fra.me.REG[0] = BOX_NativeString("}");
+    fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-    once_value_3 = fra.me.REG[0];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
-  } else fra.me.REG[0] = once_value_3;
-  fra.me.REG[0] = fra.me.REG[0];
-  CALL_analysis___icode_dump___ICodeDumper___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  } else fra.me.REG[2] = once_value_3;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_analysis___icode_dump___ICodeDumper___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
index 9280692..64c103b 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/icode_dump. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/icode_dump. */
 #ifndef analysis___icode_dump_sep
 #define analysis___icode_dump_sep
 #include "analysis___allocate_iregister_slots._sep.h"
@@ -180,7 +180,7 @@ val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1);
 static const char * const LOCATE_analysis___icode_dump___ITypeCheck___dump_intern = "icode_dump::ITypeCheck::(icode_dump::ICode::dump_intern)";
 val_t analysis___icode_dump___ITypeCheck___dump_intern(val_t p0, val_t p1);
 typedef val_t (*analysis___icode_dump___ITypeCheck___dump_intern_t)(val_t p0, val_t p1);
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_analysis___icode_dump___INative___dump_intern = "icode_dump::INative::(icode_dump::ICode::dump_intern)";
 val_t analysis___icode_dump___INative___dump_intern(val_t p0, val_t p1);
 typedef val_t (*analysis___icode_dump___INative___dump_intern_t)(val_t p0, val_t p1);
index efaa81b..63aa951 100644 (file)
@@ -132,7 +132,7 @@ void analysis___inline_get_and_set___Program___inline_get_set(val_t p0){
     /* ./analysis//inline_get_and_set.nit:42 */
     REGB0 = ATTR_analysis___inline_get_and_set___Program____number_getter_setter_inlined(closctx->REG[0]);
     REGB1 = CALL_analysis___inline_get_and_set___InlineGetSetVisitor___number_inlined(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* ./analysis//inline_get_and_set.nit:42 */
     ATTR_analysis___inline_get_and_set___Program____number_getter_setter_inlined(closctx->REG[0]) = REGB1;
@@ -190,6 +190,17 @@ void analysis___inline_get_and_set___InlineGetSetVisitor___visit_icode(val_t p0,
   /* ./analysis//inline_get_and_set.nit:55 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
   if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_analysis___inline_get_and_set, 55);
+    }
+    REGB0 = CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra.me.REG[3])(fra.me.REG[3]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
     /* ./analysis//inline_get_and_set.nit:56 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -311,7 +322,7 @@ void analysis___inline_get_and_set___InlineGetSetVisitor___visit_icode(val_t p0,
       /* ./analysis//inline_get_and_set.nit:72 */
       REGB0 = ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[2]);
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ./analysis//inline_get_and_set.nit:72 */
       ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[2]) = REGB1;
index 80bb34d..1a92b36 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/inline_get_and_set. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/inline_get_and_set. */
 #ifndef analysis___inline_get_and_set_sep
 #define analysis___inline_get_and_set_sep
 #include "syntax._sep.h"
index 15b0839..3c49448 100644 (file)
@@ -29,6 +29,17 @@ void analysis___inline_methods___InlineMethodVisitor___visit_icode(val_t p0, val
   /* ./analysis//inline_methods.nit:29 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
   if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_analysis___inline_methods, 29);
+    }
+    REGB0 = CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra.me.REG[3])(fra.me.REG[3]);
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB0 = REGB1;
+  }
+  if (UNTAG_Bool(REGB0)) {
     /* ./analysis//inline_methods.nit:30 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
index e685a00..81dbfe9 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/inline_methods. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/inline_methods. */
 #ifndef analysis___inline_methods_sep
 #define analysis___inline_methods_sep
 #include "icode._sep.h"
index 8dbe822..f4fea8f 100644 (file)
@@ -265,7 +265,7 @@ void analysis___instantiated_type_analysis___Program___dump_not_instantiated_typ
     return;
   }
 void analysis___instantiated_type_analysis___Program___with_each_live_local_classes(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   fun_t CREG[1];
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -273,17 +273,20 @@ void analysis___instantiated_type_analysis___Program___with_each_live_local_clas
   fra.me.line = 47;
   fra.me.meth = LOCATE_analysis___instantiated_type_analysis___Program___with_each_live_local_classes;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.closure_ctx = closctx_param;
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
+  /* ./analysis//instantiated_type_analysis.nit:47 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./analysis//instantiated_type_analysis.nit:51 */
-  fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_analysis___instantiated_type_analysis___Program___with_each_live_local_classes_1));
+  fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_analysis___instantiated_type_analysis___Program___with_each_live_local_classes_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
@@ -311,7 +314,7 @@ void analysis___instantiated_type_analysis___Program___with_each_live_local_clas
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
     /* ./analysis//instantiated_type_analysis.nit:52 */
-    fra.me.REG[1] = CALL_analysis___instantiated_type_analysis___Program___ita(closctx->REG[0])(closctx->REG[0]);
+    fra.me.REG[1] = CALL_analysis___instantiated_type_analysis___Program___ita(closctx->REG[1])(closctx->REG[1]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -327,7 +330,7 @@ void analysis___instantiated_type_analysis___Program___with_each_live_local_clas
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(true);
     } else {
-      fra.me.REG[1] = CALL_analysis___instantiated_type_analysis___Program___ita(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_analysis___instantiated_type_analysis___Program___ita(closctx->REG[1])(closctx->REG[1]);
       REGB1 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
index 8547e81..58e8548 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/instantiated_type_analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/instantiated_type_analysis. */
 #ifndef analysis___instantiated_type_analysis_sep
 #define analysis___instantiated_type_analysis_sep
 #include "program._sep.h"
index 312ba4d..836ac7f 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/reachable_as_init. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/reachable_as_init. */
 #ifndef analysis___reachable_as_init_sep
 #define analysis___reachable_as_init_sep
 #include "program._sep.h"
index 50b076e..e3168fc 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/reachable_as_init_impl. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/reachable_as_init_impl. */
 #ifndef analysis___reachable_as_init_impl_sep
 #define analysis___reachable_as_init_impl_sep
 #include "analysis___reachable_method_analysis._sep.h"
index b10546c..e02ba8e 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/reachable_from_init_method_analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/reachable_from_init_method_analysis. */
 #ifndef analysis___reachable_from_init_method_analysis_sep
 #define analysis___reachable_from_init_method_analysis_sep
 #include "analysis___reachable_method_analysis._sep.h"
index 7764022..ed671f7 100644 (file)
@@ -66,20 +66,23 @@ void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init(v
   return;
 }
 void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis___reachable_from_init_method_analysis_impl;
   fra.me.line = 32;
   fra.me.meth = LOCATE_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./analysis//reachable_from_init_method_analysis_impl.nit:32 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./analysis//reachable_from_init_method_analysis_impl.nit:33 */
-  fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_program___Program___with_each_live_local_classes(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1));
+  fra.me.REG[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_program___Program___with_each_live_local_classes(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -94,9 +97,9 @@ void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work(v
     fra.me.REG_size = 1;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[0] = p0;
-    closctx->REG[1] = fra.me.REG[0];
+    closctx->REG[2] = fra.me.REG[0];
     /* ./analysis//reachable_from_init_method_analysis_impl.nit:35 */
-    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work_2));
     stack_frame_head = fra.me.prev;
     return;
@@ -120,10 +123,10 @@ void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work(v
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:36 */
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:37 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
+      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[2]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         goto label3;
@@ -135,7 +138,7 @@ void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work(v
         nit_abort("Assert failed", NULL, LOCATE_analysis___reachable_from_init_method_analysis_impl, 38);
       }
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:39 */
-      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[1])(closctx->REG[1]);
       fra.me.REG[1] = CALL_analysis___reachable_method_analysis___Program___rma(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_analysis___reachable_method_analysis___ReachableMethodAnalysis, ID_analysis___reachable_method_analysis___ReachableMethodAnalysis)) /*cast ReachableMethodAnalysis*/;
       if (UNTAG_Bool(REGB0)) {
@@ -152,22 +155,22 @@ void analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___work(v
         goto label3;
       }
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:40 */
-      fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
       REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         goto label3;
       }
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:41 */
-      fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
       fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:44 */
-      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[1])(closctx->REG[1]);
       fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines(fra.me.REG[1])(fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
       /* ./analysis//reachable_from_init_method_analysis_impl.nit:45 */
-      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[0])(closctx->REG[0]);
-      fra.me.REG[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[2] = CALL_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program(closctx->REG[1])(closctx->REG[1]);
       fra.me.REG[2] = NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init(fra.me.REG[1], fra.me.REG[2]);
       CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       label3: while(0);
index 369d8ee..68b6b40 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/reachable_from_init_method_analysis_impl. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/reachable_from_init_method_analysis_impl. */
 #ifndef analysis___reachable_from_init_method_analysis_impl_sep
 #define analysis___reachable_from_init_method_analysis_impl_sep
 #include "analysis___reachable_from_init_method_analysis._sep.h"
index b50009b..f42d9de 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/reachable_method_analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/reachable_method_analysis. */
 #ifndef analysis___reachable_method_analysis_sep
 #define analysis___reachable_method_analysis_sep
 #include "program._sep.h"
index 31dbb1c..2f3dab2 100644 (file)
@@ -69,7 +69,7 @@ void analysis___remove_out_of_init_get_test___Program___optimize_out_of_init_get
       /* ./analysis//remove_out_of_init_get_test.nit:34 */
       REGB0 = CALL_analysis___remove_out_of_init_get_test___Program___nb_optimized_isset(closctx->REG[0])(closctx->REG[0]);
       REGB1 = CALL_analysis___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ./analysis//remove_out_of_init_get_test.nit:34 */
       ATTR_analysis___remove_out_of_init_get_test___Program____nb_optimized_isset(closctx->REG[0]) = REGB1;
@@ -219,7 +219,7 @@ void analysis___remove_out_of_init_get_test___Program___dump_out_of_init_informa
     CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* ./analysis//remove_out_of_init_get_test.nit:47 */
     REGB0 = CALL_analysis___remove_out_of_init_get_test___IssetCounter___nb_isset(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
     /* ./analysis//remove_out_of_init_get_test.nit:47 */
     closctx->REG[1] = REGB0;
@@ -274,7 +274,7 @@ void analysis___remove_out_of_init_get_test___IssetCounter___visit_icode(val_t p
     /* ./analysis//remove_out_of_init_get_test.nit:64 */
     REGB0 = CALL_analysis___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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* ./analysis//remove_out_of_init_get_test.nit:64 */
     ATTR_analysis___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[2]) = REGB1;
@@ -376,7 +376,7 @@ void analysis___remove_out_of_init_get_test___GetterTestRemover___visit_icode(va
     /* ./analysis//remove_out_of_init_get_test.nit:85 */
     REGB0 = CALL_analysis___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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
     /* ./analysis//remove_out_of_init_get_test.nit:85 */
     ATTR_analysis___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[2]) = REGB1;
index 2513e4e..4f0e0ce 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/remove_out_of_init_get_test. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/remove_out_of_init_get_test. */
 #ifndef analysis___remove_out_of_init_get_test_sep
 #define analysis___remove_out_of_init_get_test_sep
 #include "analysis___reachable_from_init_method_analysis._sep.h"
index a366b32..81ec73d 100644 (file)
@@ -639,6 +639,7 @@ void analysis___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -760,36 +761,41 @@ void analysis___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   } 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ./analysis//rta_analysis.nit:142 */
       fra.me.REG[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
@@ -808,14 +814,14 @@ void analysis___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
       /* ./analysis//rta_analysis.nit:144 */
       CALL_analysis___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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label12;
     }
   }
@@ -889,6 +895,9 @@ void analysis___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
   fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_19));
+  /* ./analysis//rta_analysis.nit:174 */
+  fra.me.REG[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_program___Program___with_each_methods(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -972,173 +981,204 @@ void analysis___rta_analysis___RtaBuilder___force_some_type_analysis(val_t p0){
     stack_frame_head = fra.me.prev;
     return;
   }
+  void OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t *closctx, 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_analysis___rta_analysis;
+    fra.me.line = 174;
+    fra.me.meth = LOCATE_analysis___rta_analysis___RtaBuilder___force_some_type_analysis;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[0] = p0;
+    /* ./analysis//rta_analysis.nit:175 */
+    REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra.me.REG[0])(fra.me.REG[0]);
+    if (UNTAG_Bool(REGB0)) {
+      /* ./analysis//rta_analysis.nit:176 */
+      fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
+      CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+    }
+    stack_frame_head = fra.me.prev;
+    return;
+  }
 void analysis___rta_analysis___RtaBuilder___work(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis___rta_analysis;
-  fra.me.line = 173;
+  fra.me.line = 181;
   fra.me.meth = LOCATE_analysis___rta_analysis___RtaBuilder___work;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//rta_analysis.nit:175 */
-  fra.me.REG[1] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_program___Program___main_method(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  /* ./analysis//rta_analysis.nit:181 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./analysis//rta_analysis.nit:183 */
+  fra.me.REG[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = CALL_program___Program___main_method(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./analysis//rta_analysis.nit:177 */
+    /* ./analysis//rta_analysis.nit:185 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[2] = BOX_NativeString("Int");
+      fra.me.REG[3] = BOX_NativeString("Int");
       REGB0 = TAG_Int(3);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_1 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_1 = fra.me.REG[3];
       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]);
+    } 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]);
     if (!once_value_2) {
-      fra.me.REG[2] = BOX_NativeString("Char");
+      fra.me.REG[3] = BOX_NativeString("Char");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_2 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
-    } else fra.me.REG[2] = once_value_2;
-    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]);
+    } 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[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_3) {
-      fra.me.REG[2] = BOX_NativeString("Bool");
+      fra.me.REG[3] = BOX_NativeString("Bool");
       REGB0 = TAG_Int(4);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_3 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
-    } else fra.me.REG[2] = once_value_3;
-    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:234 */
+    } 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:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:24 */
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+      }
+      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*/;
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ./../lib/standard//kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* ./../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, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-        /* ./analysis//rta_analysis.nit:178 */
-        fra.me.REG[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-        fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-        REGB1 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+        /* ./analysis//rta_analysis.nit:186 */
+        fra.me.REG[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+        REGB1 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./analysis//rta_analysis.nit:179 */
-          fra.me.REG[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-          fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
-          fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-          fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-          CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+          /* ./analysis//rta_analysis.nit:187 */
+          fra.me.REG[6] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+          fra.me.REG[6] = CALL_program___Program___main_module(fra.me.REG[6])(fra.me.REG[6]);
+          fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+          fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+          CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label4;
       }
     }
     label4: while(0);
-    /* ./analysis//rta_analysis.nit:182 */
+    /* ./analysis//rta_analysis.nit:190 */
     goto label5;
   }
-  /* ./analysis//rta_analysis.nit:185 */
-  fra.me.REG[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_program___Program___main_class(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___abstractmetamodel___MMLocalClass, ID_metamodel___abstractmetamodel___MMLocalClass)) /*cast MMLocalClass*/;
+  /* ./analysis//rta_analysis.nit:193 */
+  fra.me.REG[3] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_program___Program___main_class(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___abstractmetamodel___MMLocalClass, ID_metamodel___abstractmetamodel___MMLocalClass)) /*cast MMLocalClass*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 185);
+    nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 193);
   }
-  CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./analysis//rta_analysis.nit:186 */
-  fra.me.REG[2] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_program___Program___main_method(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+  CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./analysis//rta_analysis.nit:194 */
+  fra.me.REG[3] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_program___Program___main_method(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___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 186);
+    nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 194);
   }
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 186);
+    nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 194);
   }
-  fra.me.REG[2] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./analysis//rta_analysis.nit:187 */
-  CALL_analysis___rta_analysis___RtaBuilder___force_some_type_analysis(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./analysis//rta_analysis.nit:189 */
+  fra.me.REG[3] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./analysis//rta_analysis.nit:195 */
+  CALL_analysis___rta_analysis___RtaBuilder___force_some_type_analysis(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./analysis//rta_analysis.nit:197 */
   while(1) {
-    fra.me.REG[2] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[3] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[1])(fra.me.REG[1]);
+    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)) {
-      /* ./analysis//rta_analysis.nit:190 */
-      fra.me.REG[2] = NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(fra.me.REG[0]);
-      /* ./analysis//rta_analysis.nit:191 */
-      fra.me.REG[1] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(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]);
-      /* ./analysis//rta_analysis.nit:192 */
-      fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
-      CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      /* ./analysis//rta_analysis.nit:198 */
+      fra.me.REG[3] = NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(fra.me.REG[1]);
+      /* ./analysis//rta_analysis.nit:199 */
+      fra.me.REG[0] = CALL_analysis___rta_analysis___RtaBuilder___iroutine_to_search(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[0] = CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./analysis//rta_analysis.nit:200 */
+      fra.me.REG[0] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
+      CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
     } else {
-      /* ./analysis//rta_analysis.nit:189 */
+      /* ./analysis//rta_analysis.nit:197 */
       goto label6;
     }
   }
@@ -1153,17 +1193,17 @@ val_t analysis___rta_analysis___RtaVisitor___builder(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis___rta_analysis;
-  fra.me.line = 199;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_analysis___rta_analysis___RtaVisitor___builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//rta_analysis.nit:199 */
+  /* ./analysis//rta_analysis.nit:207 */
   REGB0 = TAG_Bool(ATTR_analysis___rta_analysis___RtaVisitor____builder(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_analysis___rta_analysis, 199);
+    nit_abort("Uninitialized attribute %s", "_builder", LOCATE_analysis___rta_analysis, 207);
   }
   fra.me.REG[0] = ATTR_analysis___rta_analysis___RtaVisitor____builder(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1175,7 +1215,7 @@ void analysis___rta_analysis___RtaVisitor___visit_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_analysis___rta_analysis;
-  fra.me.line = 201;
+  fra.me.line = 209;
   fra.me.meth = LOCATE_analysis___rta_analysis___RtaVisitor___visit_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1188,128 +1228,134 @@ void analysis___rta_analysis___RtaVisitor___visit_icode(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//rta_analysis.nit:201 */
+  /* ./analysis//rta_analysis.nit:209 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./analysis//rta_analysis.nit:203 */
+  /* ./analysis//rta_analysis.nit:211 */
   REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IStaticCall, ID_icode___icode_base___IStaticCall)) /*cast IStaticCall*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./analysis//rta_analysis.nit:205 */
+    /* ./analysis//rta_analysis.nit:213 */
     fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 205);
+      nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 213);
     }
     fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[5])(fra.me.REG[5]);
     CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   } else {
-    /* ./analysis//rta_analysis.nit:206 */
+    /* ./analysis//rta_analysis.nit:214 */
     REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___INew, ID_icode___icode_base___INew)) /*cast INew*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./analysis//rta_analysis.nit:208 */
+      /* ./analysis//rta_analysis.nit:216 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 208);
+        nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 216);
       }
       fra.me.REG[5] = CALL_icode___icode_base___INew___stype(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./analysis//rta_analysis.nit:209 */
+      /* ./analysis//rta_analysis.nit:217 */
       fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
       fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
       fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
       fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./analysis//rta_analysis.nit:210 */
-      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 210);
-      }
-      fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+      /* ./analysis//rta_analysis.nit:218 */
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-      } else {
-        nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 210);
+        /* ./analysis//rta_analysis.nit:219 */
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 219);
+        }
+        fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_analysis___rta_analysis, 219);
+        }
+        /* ./analysis//rta_analysis.nit:220 */
+        fra.me.REG[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+        /* ./analysis//rta_analysis.nit:221 */
+        fra.me.REG[6] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       }
-      /* ./analysis//rta_analysis.nit:211 */
-      fra.me.REG[6] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-      /* ./analysis//rta_analysis.nit:212 */
-      fra.me.REG[6] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-      /* ./analysis//rta_analysis.nit:213 */
-      fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+      /* ./analysis//rta_analysis.nit:223 */
+      fra.me.REG[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_analysis___rta_analysis___RtaBuilder___add_instantiated_class(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
     } else {
-      /* ./analysis//rta_analysis.nit:214 */
+      /* ./analysis//rta_analysis.nit:224 */
       REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ISuper, ID_icode___icode_base___ISuper)) /*cast ISuper*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./analysis//rta_analysis.nit:216 */
+        /* ./analysis//rta_analysis.nit:226 */
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 216);
+          nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 226);
         }
-        fra.me.REG[5] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[5])(fra.me.REG[5]);
-        fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(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_analysis___rta_analysis___RtaVisitor___visit_icode_1));
+        fra.me.REG[4] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(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_analysis___rta_analysis___RtaVisitor___visit_icode_1));
       } else {
-        /* ./analysis//rta_analysis.nit:221 */
+        /* ./analysis//rta_analysis.nit:231 */
         REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICall, ID_icode___icode_base___ICall)) /*cast ICall*/;
         if (UNTAG_Bool(REGB0)) {
-          /* ./analysis//rta_analysis.nit:222 */
-          fra.me.REG[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-          CALL_analysis___rta_analysis___RtaBuilder___add_reachable_call(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+          /* ./analysis//rta_analysis.nit:232 */
+          fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+          CALL_analysis___rta_analysis___RtaBuilder___add_reachable_call(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         } else {
-          /* ./analysis//rta_analysis.nit:223 */
+          /* ./analysis//rta_analysis.nit:233 */
           REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___ICheckInstance, ID_icode___icode_base___ICheckInstance)) /*cast ICheckInstance*/;
           if (UNTAG_Bool(REGB0)) {
-            /* ./analysis//rta_analysis.nit:224 */
+            /* ./analysis//rta_analysis.nit:234 */
             REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 224);
+              nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 234);
             }
-            fra.me.REG[5] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
-            /* ./analysis//rta_analysis.nit:225 */
-            fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-            fra.me.REG[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
-            fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-            fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-            fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./analysis//rta_analysis.nit:226 */
-            fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./analysis//rta_analysis.nit:227 */
+            fra.me.REG[4] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[3])(fra.me.REG[3]);
+            /* ./analysis//rta_analysis.nit:235 */
             fra.me.REG[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-            CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+            fra.me.REG[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
+            fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+            fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+            fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
+            /* ./analysis//rta_analysis.nit:236 */
+            fra.me.REG[5] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[5])(fra.me.REG[5]);
+            /* ./analysis//rta_analysis.nit:237 */
+            fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+            CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
           } else {
-            /* ./analysis//rta_analysis.nit:228 */
+            /* ./analysis//rta_analysis.nit:238 */
             REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IInitAttributes, ID_icode___icode_base___IInitAttributes)) /*cast IInitAttributes*/;
             if (UNTAG_Bool(REGB0)) {
-              /* ./analysis//rta_analysis.nit:229 */
+              /* ./analysis//rta_analysis.nit:239 */
               REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
               if (UNTAG_Bool(REGB0)) {
-               nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 229);
+               nit_abort("Reciever is null", NULL, LOCATE_analysis___rta_analysis, 239);
               }
               fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[3])(fra.me.REG[3]);
-              /* ./analysis//rta_analysis.nit:230 */
-              fra.me.REG[4] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-              fra.me.REG[4] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[4])(fra.me.REG[4]);
-              fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-              fra.me.REG[4] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-              fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
-              /* ./analysis//rta_analysis.nit:231 */
-              fra.me.REG[4] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[4])(fra.me.REG[4]);
-              /* ./analysis//rta_analysis.nit:232 */
+              /* ./analysis//rta_analysis.nit:240 */
+              fra.me.REG[5] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
+              fra.me.REG[5] = CALL_analysis___rta_analysis___RtaBuilder___program(fra.me.REG[5])(fra.me.REG[5]);
+              fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+              fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+              fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
+              /* ./analysis//rta_analysis.nit:241 */
+              fra.me.REG[5] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[5])(fra.me.REG[5]);
+              /* ./analysis//rta_analysis.nit:242 */
               fra.me.REG[2] = CALL_analysis___rta_analysis___RtaVisitor___builder(fra.me.REG[2])(fra.me.REG[2]);
-              CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+              CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
             }
           }
         }
       }
     }
   }
-  /* ./analysis//rta_analysis.nit:234 */
+  /* ./analysis//rta_analysis.nit:244 */
   CALL_SUPER_analysis___rta_analysis___RtaVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1331,10 +1377,10 @@ void analysis___rta_analysis___RtaVisitor___visit_icode(val_t p0, val_t p1){
           fra.me.closure_funs = CREG;
           fra.me.REG[0] = p0;
           CREG[0] = clos_fun0;
-          /* ./analysis//rta_analysis.nit:217 */
+          /* ./analysis//rta_analysis.nit:227 */
           REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
           if (UNTAG_Bool(REGB0)) {
-            /* ./analysis//rta_analysis.nit:218 */
+            /* ./analysis//rta_analysis.nit:228 */
             fra.me.REG[1] = CALL_analysis___rta_analysis___RtaVisitor___builder(closctx->REG[2])(closctx->REG[2]);
             fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
             CALL_analysis___rta_analysis___RtaBuilder___add_reachable_iroutine(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1349,7 +1395,7 @@ void analysis___rta_analysis___RtaVisitor___init(val_t p0, val_t p1, int* init_t
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_analysis___rta_analysis;
-  fra.me.line = 237;
+  fra.me.line = 247;
   fra.me.meth = LOCATE_analysis___rta_analysis___RtaVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1358,10 +1404,10 @@ void analysis___rta_analysis___RtaVisitor___init(val_t p0, val_t p1, int* init_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./analysis//rta_analysis.nit:237 */
+  /* ./analysis//rta_analysis.nit:247 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_tools___ICodeVisitor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./analysis//rta_analysis.nit:239 */
+  /* ./analysis//rta_analysis.nit:249 */
   ATTR_analysis___rta_analysis___RtaVisitor____builder(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
index 9c6356b..18f7671 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/analysis/rta_analysis. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./analysis/rta_analysis. */
 #ifndef analysis___rta_analysis_sep
 #define analysis___rta_analysis_sep
 #include "analysis___instantiated_type_analysis._sep.h"
@@ -125,6 +125,8 @@ typedef void (*analysis___rta_analysis___RtaBuilder___force_some_type_analysis_t
   typedef void (*CLOS_OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_19_0)(struct stack_frame_t *);
   void OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_19(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
   typedef void (*OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_19_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+  void OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21(struct stack_frame_t *closctx, val_t p0);
+  typedef void (*OC_analysis___rta_analysis___RtaBuilder___force_some_type_analysis_21_t)(struct stack_frame_t *closctx, val_t p0);
 static const char * const LOCATE_analysis___rta_analysis___RtaBuilder___work = "rta_analysis::RtaBuilder::work";
 void analysis___rta_analysis___RtaBuilder___work(val_t p0);
 typedef void (*analysis___rta_analysis___RtaBuilder___work_t)(val_t p0);
index 981e885..07a1464 100644 (file)
@@ -6,17 +6,17 @@ val_t compiling___Program___output_format(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling;
-  fra.me.line = 27;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_compiling___Program___output_format;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling.nit:27 */
+  /* ./compiling//compiling.nit:28 */
   REGB0 = TAG_Bool(ATTR_compiling___Program____output_format(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_output_format", LOCATE_compiling, 27);
+    nit_abort("Uninitialized attribute %s", "_output_format", LOCATE_compiling, 28);
   }
   fra.me.REG[0] = ATTR_compiling___Program____output_format(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -27,7 +27,7 @@ void compiling___Program___output_format__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_compiling;
-  fra.me.line = 27;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_compiling___Program___output_format__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -35,7 +35,7 @@ void compiling___Program___output_format__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling.nit:27 */
+  /* ./compiling//compiling.nit:28 */
   ATTR_compiling___Program____output_format(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -50,7 +50,7 @@ void compiling___Program___compile_prog(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_compiling;
-  fra.me.line = 30;
+  fra.me.line = 31;
   fra.me.meth = LOCATE_compiling___Program___compile_prog;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -58,7 +58,7 @@ void compiling___Program___compile_prog(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling.nit:33 */
+  /* ./compiling//compiling.nit:34 */
   fra.me.REG[1] = CALL_compiling___Program___output_format(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("none");
@@ -77,7 +77,7 @@ void compiling___Program___compile_prog(val_t p0){
   if (UNTAG_Bool(REGB0)) {
   } else {
     CALL_program___Program___with_each_iroutines(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_compiling___Program___compile_prog_2));
-    /* ./compiling//compiling.nit:39 */
+    /* ./compiling//compiling.nit:40 */
     fra.me.REG[2] = CALL_compiling___Program___output_format(fra.me.REG[0])(fra.me.REG[0]);
     if (!once_value_3) {
       fra.me.REG[1] = BOX_NativeString("C");
@@ -94,10 +94,10 @@ void compiling___Program___compile_prog(val_t p0){
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling.nit:40 */
+      /* ./compiling//compiling.nit:41 */
       CALL_compiling___Program___compile_prog_to_c(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ./compiling//compiling.nit:41 */
+      /* ./compiling//compiling.nit:42 */
       fra.me.REG[1] = CALL_compiling___Program___output_format(fra.me.REG[0])(fra.me.REG[0]);
       if (!once_value_4) {
         fra.me.REG[2] = BOX_NativeString("icode");
@@ -114,7 +114,7 @@ void compiling___Program___compile_prog(val_t p0){
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling.nit:42 */
+        /* ./compiling//compiling.nit:43 */
         CALL_compiling___icode_generator___Program___generate_icode_files(fra.me.REG[0])(fra.me.REG[0]);
       }
     }
@@ -125,10 +125,10 @@ void compiling___Program___compile_prog(val_t p0){
     void OC_compiling___Program___compile_prog_2(struct stack_frame_t *closctx, val_t p0, val_t p1){
       struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
       val_t tmp;
-      /* ./compiling//compiling.nit:37 */
+      /* ./compiling//compiling.nit:38 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_compiling;
-      fra.me.line = 37;
+      fra.me.line = 38;
       fra.me.meth = LOCATE_compiling___Program___compile_prog;
       fra.me.has_broke = 0;
       fra.me.REG_size = 2;
@@ -151,7 +151,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling;
-  fra.me.line = 47;
+  fra.me.line = 48;
   fra.me.meth = LOCATE_compiling___Program___compile_prog_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -160,12 +160,12 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling.nit:52 */
+  /* ./compiling//compiling.nit:53 */
   fra.me.REG[1] = NEW_CProgram_compiling___compiling_base___CProgram___init(fra.me.REG[0]);
-  /* ./compiling//compiling.nit:54 */
+  /* ./compiling//compiling.nit:55 */
   fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___file___String___mkdir(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling.nit:56 */
+  /* ./compiling//compiling.nit:57 */
   fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("$CLIBDIR/nit_main.c");
@@ -176,7 +176,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   } 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]);
-  /* ./compiling//compiling.nit:57 */
+  /* ./compiling//compiling.nit:58 */
   fra.me.REG[3] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("$CLIBDIR/gc.c");
@@ -187,7 +187,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   } else fra.me.REG[2] = once_value_2;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./compiling//compiling.nit:58 */
+  /* ./compiling//compiling.nit:59 */
   fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("$CLIBDIR/gc_static_objects_list.c");
@@ -198,7 +198,7 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   } 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]);
-  /* ./compiling//compiling.nit:60 */
+  /* ./compiling//compiling.nit:61 */
   fra.me.REG[3] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString("Generating C code");
@@ -210,16 +210,16 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(1);
   CALL_mmloader___ToolContext___info(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], REGB0);
-  /* ./compiling//compiling.nit:61 */
+  /* ./compiling//compiling.nit:62 */
   fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___mhe(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_compiling, 61);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling, 62);
   }
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_compiling___Program___compile_prog_to_c_5));
-  /* ./compiling//compiling.nit:63 */
+  /* ./compiling//compiling.nit:64 */
   fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_6) {
     fra.me.REG[3] = BOX_NativeString("Generating main, tables and makefile ...");
@@ -231,11 +231,11 @@ void compiling___Program___compile_prog_to_c(val_t p0){
   fra.me.REG[3] = fra.me.REG[3];
   REGB0 = TAG_Int(1);
   CALL_mmloader___ToolContext___info(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], REGB0);
-  /* ./compiling//compiling.nit:64 */
+  /* ./compiling//compiling.nit:65 */
   CALL_compiling___Program___compile_main(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling.nit:66 */
+  /* ./compiling//compiling.nit:67 */
   CALL_compiling___compiling_base___CProgram___generate_build_file(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling.nit:68 */
+  /* ./compiling//compiling.nit:69 */
   fra.me.REG[0] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_compiling___compiling_base___ToolContext___no_cc(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
@@ -276,7 +276,7 @@ void compiling___Program___compile_main(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_compiling;
-  fra.me.line = 71;
+  fra.me.line = 72;
   fra.me.meth = LOCATE_compiling___Program___compile_main;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -288,10 +288,10 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling.nit:74 */
+  /* ./compiling//compiling.nit:75 */
   fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(fra.me.REG[2], fra.me.REG[1]);
-  /* ./compiling//compiling.nit:75 */
+  /* ./compiling//compiling.nit:76 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("#include <nit_common.h>");
     REGB0 = TAG_Int(23);
@@ -301,11 +301,11 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_1;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling.nit:76 */
-  CALL_compiling___compiling_global___Program___compile_tables_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   /* ./compiling//compiling.nit:77 */
-  CALL_compiling___compiling_global___Program___compile_main_part(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_compiling___compiling_global___Program___compile_tables_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   /* ./compiling//compiling.nit:78 */
+  CALL_compiling___compiling_global___Program___compile_main_part(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  /* ./compiling//compiling.nit:79 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_2) {
@@ -341,12 +341,12 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   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]);
-  /* ./compiling//compiling.nit:79 */
+  /* ./compiling//compiling.nit:80 */
   fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./compiling//compiling.nit:80 */
-  fra.me.REG[3] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[3]);
   /* ./compiling//compiling.nit:81 */
+  fra.me.REG[3] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[3]);
+  /* ./compiling//compiling.nit:82 */
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_5) {
@@ -372,22 +372,22 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_standard___stream___OStream___write(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//compiling.nit:82 */
+  /* ./compiling//compiling.nit:83 */
   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___mhe(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_compiling, 82);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling, 83);
   }
   fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(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_compiling___Program___compile_main_7));
-  /* ./compiling//compiling.nit:85 */
+  /* ./compiling//compiling.nit:86 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___header_writer(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling.nit:86 */
+  /* ./compiling//compiling.nit:87 */
   fra.me.REG[2] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling.nit:87 */
+  /* ./compiling//compiling.nit:88 */
   CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -412,7 +412,7 @@ void compiling___Program___compile_main(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling.nit:83 */
+    /* ./compiling//compiling.nit:84 */
     REGB0 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_8) {
@@ -444,6 +444,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -486,7 +487,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   static val_t once_value_40; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling;
-  fra.me.line = 92;
+  fra.me.line = 93;
   fra.me.meth = LOCATE_compiling___MMModule___compile_separate_module;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -502,10 +503,10 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling.nit:95 */
+  /* ./compiling//compiling.nit:96 */
   fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling.nit:96 */
+  /* ./compiling//compiling.nit:97 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -532,9 +533,9 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Int(2);
   CALL_mmloader___ToolContext___info(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], REGB0);
-  /* ./compiling//compiling.nit:97 */
-  fra.me.REG[3] = NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(fra.me.REG[0], fra.me.REG[1]);
   /* ./compiling//compiling.nit:98 */
+  fra.me.REG[3] = NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(fra.me.REG[0], fra.me.REG[1]);
+  /* ./compiling//compiling.nit:99 */
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>");
     REGB0 = TAG_Int(23);
@@ -544,10 +545,10 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./compiling//compiling.nit:100 */
+  /* ./compiling//compiling.nit:101 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___is_extern_hybrid(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling.nit:103 */
+    /* ./compiling//compiling.nit:104 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -572,7 +573,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     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]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./compiling//compiling.nit:104 */
+    /* ./compiling//compiling.nit:105 */
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -596,7 +597,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-    /* ./compiling//compiling.nit:105 */
+    /* ./compiling//compiling.nit:106 */
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_8) {
@@ -621,7 +622,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     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[2]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    /* ./compiling//compiling.nit:106 */
+    /* ./compiling//compiling.nit:107 */
     fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -657,12 +658,12 @@ void compiling___MMModule___compile_separate_module(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]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(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]);
-    /* ./compiling//compiling.nit:109 */
+    /* ./compiling//compiling.nit:110 */
     fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___location(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[5] = CALL_location___Location___file(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_compiling, 109);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling, 110);
     }
     fra.me.REG[5] = CALL_location___SourceFile___filename(fra.me.REG[5])(fra.me.REG[5]);
     if (!once_value_13) {
@@ -674,7 +675,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     } else fra.me.REG[2] = once_value_13;
     fra.me.REG[2] = fra.me.REG[2];
     fra.me.REG[2] = CALL_standard___file___String___strip_extension(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-    /* ./compiling//compiling.nit:110 */
+    /* ./compiling//compiling.nit:111 */
     if (!once_value_14) {
       fra.me.REG[5] = BOX_NativeString(".nit.c");
       REGB0 = TAG_Int(6);
@@ -684,14 +685,14 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
     } else fra.me.REG[5] = once_value_14;
     fra.me.REG[5] = fra.me.REG[5];
     fra.me.REG[5] = CALL_standard___string___String_____plus(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-    /* ./compiling//compiling.nit:111 */
+    /* ./compiling//compiling.nit:112 */
     REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[5])(fra.me.REG[5]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling.nit:112 */
+      /* ./compiling//compiling.nit:113 */
       fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     } else {
-      /* ./compiling//compiling.nit:114 */
+      /* ./compiling//compiling.nit:115 */
       if (!once_value_15) {
         fra.me.REG[4] = BOX_NativeString("_nit.c");
         REGB0 = TAG_Int(6);
@@ -702,7 +703,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       fra.me.REG[4] = fra.me.REG[4];
       fra.me.REG[4] = CALL_standard___string___String_____plus(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
       fra.me.REG[5] = fra.me.REG[4];
-      /* ./compiling//compiling.nit:115 */
+      /* ./compiling//compiling.nit:116 */
       REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[5])(fra.me.REG[5]);
       if (UNTAG_Bool(REGB0)) {
         fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
@@ -710,13 +711,13 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
       }
     }
   }
-  /* ./compiling//compiling.nit:119 */
-  CALL_compiling___compiling_global___MMModule___declare_class_tables_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   /* ./compiling//compiling.nit:120 */
+  CALL_compiling___compiling_global___MMModule___declare_class_tables_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+  /* ./compiling//compiling.nit:121 */
   CALL_compiling___compiling_global___MMModule___compile_mod_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-  /* ./compiling//compiling.nit:122 */
-  fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___module_header_name(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   /* ./compiling//compiling.nit:123 */
+  fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___module_header_name(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./compiling//compiling.nit:124 */
   REGB0 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_16) {
@@ -751,7 +752,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[4]);
-  /* ./compiling//compiling.nit:124 */
+  /* ./compiling//compiling.nit:125 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_19) {
@@ -777,7 +778,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./compiling//compiling.nit:125 */
+  /* ./compiling//compiling.nit:126 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_21) {
@@ -813,7 +814,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./compiling//compiling.nit:126 */
+  /* ./compiling//compiling.nit:127 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_24) {
@@ -849,45 +850,50 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./compiling//compiling.nit:127 */
+  /* ./compiling//compiling.nit:128 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___mhe(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_compiling, 127);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling, 128);
   }
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../lib/standard//collection//array.nit:271 */
   fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./compiling//compiling.nit:127 */
+      /* ./compiling//compiling.nit:128 */
       REGB1 = TAG_Int(3);
       fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_27) {
@@ -912,22 +918,22 @@ 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[4])(fra.me.REG[4], fra.me.REG[8]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label29;
     }
   }
   label29: while(0);
-  /* ./compiling//compiling.nit:128 */
+  /* ./compiling//compiling.nit:129 */
   fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___header_writer(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-  /* ./compiling//compiling.nit:129 */
+  /* ./compiling//compiling.nit:130 */
   if (!once_value_30) {
     fra.me.REG[6] = BOX_NativeString("#endif\n");
     REGB0 = TAG_Int(7);
@@ -937,9 +943,9 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   } else fra.me.REG[6] = once_value_30;
   fra.me.REG[6] = fra.me.REG[6];
   CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-  /* ./compiling//compiling.nit:130 */
+  /* ./compiling//compiling.nit:131 */
   CALL_standard___stream___IOS___close(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./compiling//compiling.nit:132 */
+  /* ./compiling//compiling.nit:133 */
   REGB0 = TAG_Int(7);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_31) {
@@ -985,10 +991,10 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   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]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-  /* ./compiling//compiling.nit:133 */
+  /* ./compiling//compiling.nit:134 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ./compiling//compiling.nit:134 */
+  /* ./compiling//compiling.nit:135 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_35) {
@@ -1013,7 +1019,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[1]);
   fra.me.REG[4] = fra.me.REG[1];
-  /* ./compiling//compiling.nit:135 */
+  /* ./compiling//compiling.nit:136 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_37) {
@@ -1038,7 +1044,7 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   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]);
   CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-  /* ./compiling//compiling.nit:136 */
+  /* ./compiling//compiling.nit:137 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_39) {
@@ -1062,10 +1068,10 @@ void compiling___MMModule___compile_separate_module(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   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[4])(fra.me.REG[4], fra.me.REG[1]);
-  /* ./compiling//compiling.nit:137 */
+  /* ./compiling//compiling.nit:138 */
   fra.me.REG[3] = CALL_compiling___compiling_base___CompilerVisitor___top_writer(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//compiling.nit:138 */
+  /* ./compiling//compiling.nit:139 */
   CALL_standard___stream___IOS___close(fra.me.REG[4])(fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   return;
index db30ff4..300f4bc 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/compiling. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/compiling. */
 #ifndef compiling_sep
 #define compiling_sep
 #include "compiling___icode_generator._sep.h"
index 280fdd3..fc7b42f 100644 (file)
@@ -436,8 +436,10 @@ void compiling___compiling_base___CProgram___init(val_t p0, val_t p1, int* init_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./compiling//compiling_base.nit:42 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./compiling//compiling_base.nit:44 */
-  ATTR_compiling___compiling_base___CProgram____program(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_compiling___compiling_base___CProgram____program(fra.me.REG[2]) = fra.me.REG[1];
   /* ./compiling//compiling_base.nit:45 */
   fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[1])(fra.me.REG[1]);
@@ -446,45 +448,45 @@ void compiling___compiling_base___CProgram___init(val_t p0, val_t p1, int* init_
   } else {
     nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_base, 45);
   }
-  ATTR_compiling___compiling_base___CProgram____compdir(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_compiling___compiling_base___CProgram____compdir(fra.me.REG[2]) = fra.me.REG[1];
   /* ./compiling//compiling_base.nit:46 */
   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("");
+    fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_1 = fra.me.REG[2];
+    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    once_value_1 = fra.me.REG[0];
     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[2] = CALL_compiling___compiling_base___CProgram___compdir(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]);
+  } else fra.me.REG[0] = once_value_1;
+  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[0] = CALL_compiling___compiling_base___CProgram___compdir(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[0]);
   if (!once_value_2) {
-    fra.me.REG[2] = BOX_NativeString("/");
+    fra.me.REG[0] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_2 = fra.me.REG[2];
+    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[2] = once_value_2;
-  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[2] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_compiling___compiling_base___MMModule___cname(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]);
+  } 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[0] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMModule___cname(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_3) {
-    fra.me.REG[2] = BOX_NativeString("._build.sh");
+    fra.me.REG[0] = BOX_NativeString("._build.sh");
     REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
+    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+    once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  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]);
+  } else fra.me.REG[0] = once_value_3;
+  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]);
-  ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
@@ -787,33 +789,35 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:82 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./compiling//compiling_base.nit:85 */
-  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_build_file", LOCATE_compiling___compiling_base, 85);
   }
-  fra.me.REG[1] = ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[0]);
-  fra.me.REG[1] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[1]);
+  fra.me.REG[2] = ATTR_compiling___compiling_base___CProgram____build_file(fra.me.REG[1]);
+  fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
   /* ./compiling//compiling_base.nit:86 */
   if (!once_value_1) {
-    fra.me.REG[2] = BOX_NativeString("");
+    fra.me.REG[3] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_1 = fra.me.REG[2];
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_1 = fra.me.REG[3];
     register_static_object(&once_value_1);
-  } else fra.me.REG[2] = once_value_1;
-  fra.me.REG[2] = fra.me.REG[2];
+  } else fra.me.REG[3] = once_value_1;
+  fra.me.REG[3] = fra.me.REG[3];
   /* ./compiling//compiling_base.nit:87 */
-  fra.me.REG[3] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_program___Program___tc(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_program___Program___tc(fra.me.REG[4])(fra.me.REG[4]);
   /* ./compiling//compiling_base.nit:89 */
-  REGB0 = CALL_mmloader___ToolContext___verbose_level(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = CALL_mmloader___ToolContext___verbose_level(fra.me.REG[4])(fra.me.REG[4]);
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./compiling//compiling_base.nit:89 */
     REGB2 = REGB1;
@@ -821,210 +825,215 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (UNTAG_Bool(REGB2)) {
     /* ./compiling//compiling_base.nit:90 */
     if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString("-v");
+      fra.me.REG[5] = BOX_NativeString("-v");
       REGB2 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_2 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    fra.me.REG[2] = fra.me.REG[4];
+    } else fra.me.REG[5] = once_value_2;
+    fra.me.REG[5] = fra.me.REG[5];
+    fra.me.REG[3] = fra.me.REG[5];
   } else {
     /* ./compiling//compiling_base.nit:91 */
-    REGB2 = CALL_mmloader___ToolContext___verbose_level(fra.me.REG[3])(fra.me.REG[3]);
+    REGB2 = CALL_mmloader___ToolContext___verbose_level(fra.me.REG[4])(fra.me.REG[4]);
     REGB1 = TAG_Int(2);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
     /* ./compiling//compiling_base.nit:91 */
     if (UNTAG_Bool(REGB1)) {
       /* ./compiling//compiling_base.nit:93 */
       if (!once_value_3) {
-        fra.me.REG[4] = BOX_NativeString("-vv");
+        fra.me.REG[5] = BOX_NativeString("-vv");
         REGB1 = TAG_Int(3);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_3 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_3 = fra.me.REG[5];
         register_static_object(&once_value_3);
-      } else fra.me.REG[4] = once_value_3;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[2] = fra.me.REG[4];
+      } else fra.me.REG[5] = once_value_3;
+      fra.me.REG[5] = fra.me.REG[5];
+      fra.me.REG[3] = fra.me.REG[5];
     }
   }
   /* ./compiling//compiling_base.nit:98 */
-  fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___include_dirs(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___include_dirs(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Int(3);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_4) {
-    fra.me.REG[6] = BOX_NativeString("-I ");
+    fra.me.REG[7] = BOX_NativeString("-I ");
     REGB1 = TAG_Int(3);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-    once_value_4 = fra.me.REG[6];
+    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    once_value_4 = fra.me.REG[7];
     register_static_object(&once_value_4);
-  } else fra.me.REG[6] = once_value_4;
-  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[6] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  } else fra.me.REG[7] = once_value_4;
+  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]);
+  fra.me.REG[7] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   if (!once_value_5) {
-    fra.me.REG[6] = BOX_NativeString("");
+    fra.me.REG[7] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-    once_value_5 = fra.me.REG[6];
+    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+    once_value_5 = fra.me.REG[7];
     register_static_object(&once_value_5);
-  } else fra.me.REG[6] = once_value_5;
-  fra.me.REG[6] = fra.me.REG[6];
+  } else fra.me.REG[7] = once_value_5;
+  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]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   /* ./compiling//compiling_base.nit:100 */
   if (!once_value_6) {
-    fra.me.REG[5] = BOX_NativeString("#!/bin/sh\n");
+    fra.me.REG[6] = BOX_NativeString("#!/bin/sh\n");
     REGB1 = TAG_Int(10);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-    once_value_6 = fra.me.REG[5];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+    once_value_6 = fra.me.REG[6];
     register_static_object(&once_value_6);
-  } else fra.me.REG[5] = once_value_6;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  } else fra.me.REG[6] = once_value_6;
+  fra.me.REG[6] = fra.me.REG[6];
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./compiling//compiling_base.nit:101 */
   REGB1 = TAG_Int(3);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_7) {
-    fra.me.REG[4] = BOX_NativeString("# This shell script is generated by NIT to compile the program ");
+    fra.me.REG[5] = BOX_NativeString("# This shell script is generated by NIT to compile the program ");
     REGB1 = TAG_Int(63);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_7 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_7 = fra.me.REG[5];
     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[5])(fra.me.REG[5], fra.me.REG[4]);
-  fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___full_name(fra.me.REG[4])(fra.me.REG[4]);
-  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]);
+  } else fra.me.REG[5] = once_value_7;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___full_name(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   if (!once_value_8) {
-    fra.me.REG[4] = BOX_NativeString(".\n");
+    fra.me.REG[5] = BOX_NativeString(".\n");
     REGB1 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_8 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_8 = fra.me.REG[5];
     register_static_object(&once_value_8);
-  } else fra.me.REG[4] = once_value_8;
-  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]);
-  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-  CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  } 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[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./compiling//compiling_base.nit:102 */
   REGB1 = TAG_Int(3);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_9) {
-    fra.me.REG[4] = BOX_NativeString("CLIBDIR=\"");
+    fra.me.REG[5] = BOX_NativeString("CLIBDIR=\"");
     REGB1 = TAG_Int(9);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_9 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_9 = fra.me.REG[5];
     register_static_object(&once_value_9);
-  } else fra.me.REG[4] = once_value_9;
-  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]);
-  fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___clibdir(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  } else fra.me.REG[5] = once_value_9;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___clibdir(fra.me.REG[4])(fra.me.REG[4]);
+  REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_base, 102);
   }
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   if (!once_value_10) {
-    fra.me.REG[4] = BOX_NativeString("\"\n");
+    fra.me.REG[5] = BOX_NativeString("\"\n");
     REGB1 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_10 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_10 = fra.me.REG[5];
     register_static_object(&once_value_10);
-  } else fra.me.REG[4] = once_value_10;
-  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]);
-  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-  CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  } else fra.me.REG[5] = once_value_10;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./compiling//compiling_base.nit:103 */
   REGB1 = TAG_Int(9);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_11) {
-    fra.me.REG[4] = BOX_NativeString("");
+    fra.me.REG[5] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_11 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_11 = fra.me.REG[5];
     register_static_object(&once_value_11);
-  } else fra.me.REG[4] = once_value_11;
-  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]);
-  fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___bindir(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  } else fra.me.REG[5] = once_value_11;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___bindir(fra.me.REG[4])(fra.me.REG[4]);
+  REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_base, 103);
   }
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   if (!once_value_12) {
-    fra.me.REG[4] = BOX_NativeString("/gccx ");
+    fra.me.REG[5] = BOX_NativeString("/gccx ");
     REGB1 = TAG_Int(6);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_12 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_12 = fra.me.REG[5];
     register_static_object(&once_value_12);
-  } else fra.me.REG[4] = once_value_12;
-  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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  } else fra.me.REG[5] = once_value_12;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   if (!once_value_13) {
-    fra.me.REG[2] = BOX_NativeString(" -d ");
+    fra.me.REG[3] = BOX_NativeString(" -d ");
     REGB1 = TAG_Int(4);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-    once_value_13 = fra.me.REG[2];
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    once_value_13 = fra.me.REG[3];
     register_static_object(&once_value_13);
-  } else fra.me.REG[2] = once_value_13;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-  fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  } else fra.me.REG[3] = once_value_13;
+  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]);
+  fra.me.REG[3] = CALL_compiling___compiling_base___CProgram___compdir(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   if (!once_value_14) {
-    fra.me.REG[2] = BOX_NativeString(" -I $CLIBDIR ");
+    fra.me.REG[3] = BOX_NativeString(" -I $CLIBDIR ");
     REGB1 = TAG_Int(13);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-    once_value_14 = fra.me.REG[2];
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+    once_value_14 = fra.me.REG[3];
     register_static_object(&once_value_14);
-  } else fra.me.REG[2] = once_value_14;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-  fra.me.REG[2] = CALL_compiling___compiling_base___CProgram___include_dirs(fra.me.REG[0])(fra.me.REG[0]);
+  } else fra.me.REG[3] = once_value_14;
+  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]);
+  fra.me.REG[3] = CALL_compiling___compiling_base___CProgram___include_dirs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_15) {
-    fra.me.REG[4] = BOX_NativeString(" ");
+    fra.me.REG[5] = BOX_NativeString(" ");
     REGB1 = TAG_Int(1);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_15 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_15 = fra.me.REG[5];
     register_static_object(&once_value_15);
-  } else fra.me.REG[4] = once_value_15;
-  fra.me.REG[4] = fra.me.REG[4];
-  fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  } else fra.me.REG[5] = once_value_15;
+  fra.me.REG[5] = fra.me.REG[5];
+  fra.me.REG[5] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   if (!once_value_16) {
-    fra.me.REG[4] = BOX_NativeString("");
+    fra.me.REG[5] = BOX_NativeString("");
     REGB1 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-    once_value_16 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+    once_value_16 = fra.me.REG[5];
     register_static_object(&once_value_16);
-  } else fra.me.REG[4] = once_value_16;
-  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]);
-  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-  CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  } else fra.me.REG[5] = once_value_16;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./compiling//compiling_base.nit:104 */
-  fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___output_file(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  fra.me.REG[6] = CALL_compiling___compiling_base___ToolContext___output_file(fra.me.REG[4])(fra.me.REG[4]);
+  REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -1032,172 +1041,177 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
   if (UNTAG_Bool(REGB1)) {
     /* ./compiling//compiling_base.nit:105 */
     REGB1 = TAG_Int(3);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_17) {
-      fra.me.REG[4] = BOX_NativeString(" -o ");
+      fra.me.REG[5] = BOX_NativeString(" -o ");
       REGB1 = TAG_Int(4);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_17 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      once_value_17 = fra.me.REG[5];
       register_static_object(&once_value_17);
-    } else fra.me.REG[4] = once_value_17;
-    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]);
-    fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___output_file(fra.me.REG[3])(fra.me.REG[3]);
-    REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+    } else fra.me.REG[5] = once_value_17;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+    fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___output_file(fra.me.REG[4])(fra.me.REG[4]);
+    REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_base, 105);
     }
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
     if (!once_value_18) {
-      fra.me.REG[4] = BOX_NativeString("");
+      fra.me.REG[5] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-      once_value_18 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+      once_value_18 = fra.me.REG[5];
       register_static_object(&once_value_18);
-    } else fra.me.REG[4] = once_value_18;
-    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]);
-    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-    CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    } else fra.me.REG[5] = once_value_18;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+    fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   } else {
     /* ./compiling//compiling_base.nit:106 */
-    fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___ext_prefix(fra.me.REG[3])(fra.me.REG[3]);
-    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[6] = CALL_compiling___compiling_base___ToolContext___ext_prefix(fra.me.REG[4])(fra.me.REG[4]);
+    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
     if (UNTAG_Bool(REGB1)) {
       /* ./compiling//compiling_base.nit:107 */
       REGB1 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_19) {
-        fra.me.REG[4] = BOX_NativeString(" -o ");
+        fra.me.REG[5] = BOX_NativeString(" -o ");
         REGB1 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_19 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_19 = fra.me.REG[5];
         register_static_object(&once_value_19);
-      } else fra.me.REG[4] = once_value_19;
-      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]);
-      fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[4])(fra.me.REG[4]);
-      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]);
+      } else fra.me.REG[5] = once_value_19;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+      fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       if (!once_value_20) {
-        fra.me.REG[4] = BOX_NativeString("");
+        fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_20 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_20 = fra.me.REG[5];
         register_static_object(&once_value_20);
-      } else fra.me.REG[4] = once_value_20;
-      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]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+      } else fra.me.REG[5] = once_value_20;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
     } else {
       /* ./compiling//compiling_base.nit:109 */
       REGB1 = TAG_Int(5);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_21) {
-        fra.me.REG[4] = BOX_NativeString(" -o ");
+        fra.me.REG[5] = BOX_NativeString(" -o ");
         REGB1 = TAG_Int(4);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_21 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_21 = fra.me.REG[5];
         register_static_object(&once_value_21);
-      } else fra.me.REG[4] = once_value_21;
-      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]);
-      fra.me.REG[4] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[4] = CALL_program___Program___main_module(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[4])(fra.me.REG[4]);
-      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]);
+      } else fra.me.REG[5] = once_value_21;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+      fra.me.REG[5] = CALL_compiling___compiling_base___CProgram___program(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       if (!once_value_22) {
-        fra.me.REG[4] = BOX_NativeString("_");
+        fra.me.REG[5] = BOX_NativeString("_");
         REGB1 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_22 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_22 = fra.me.REG[5];
         register_static_object(&once_value_22);
-      } else fra.me.REG[4] = once_value_22;
-      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]);
-      fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___ext_prefix(fra.me.REG[3])(fra.me.REG[3]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+      } else fra.me.REG[5] = once_value_22;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+      fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___ext_prefix(fra.me.REG[4])(fra.me.REG[4]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       if (!once_value_23) {
-        fra.me.REG[4] = BOX_NativeString("");
+        fra.me.REG[5] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_23 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_23 = fra.me.REG[5];
         register_static_object(&once_value_23);
-      } else fra.me.REG[4] = once_value_23;
-      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]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+      } else fra.me.REG[5] = once_value_23;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
     }
   }
   /* ./compiling//compiling_base.nit:111 */
-  REGB1 = CALL_compiling___compiling_base___ToolContext___boost(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = CALL_compiling___compiling_base___ToolContext___boost(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB1)) {
     if (!once_value_24) {
-      fra.me.REG[5] = BOX_NativeString(" -O");
+      fra.me.REG[6] = BOX_NativeString(" -O");
       REGB1 = TAG_Int(3);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-      once_value_24 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      once_value_24 = fra.me.REG[6];
       register_static_object(&once_value_24);
-    } else fra.me.REG[5] = once_value_24;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    } else fra.me.REG[6] = once_value_24;
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   }
   /* ./compiling//compiling_base.nit:112 */
-  REGB1 = CALL_compiling___compiling_base___ToolContext___cc_link(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = CALL_compiling___compiling_base___ToolContext___cc_link(fra.me.REG[4])(fra.me.REG[4]);
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
     if (!once_value_25) {
-      fra.me.REG[5] = BOX_NativeString(" -x \"-c\"");
+      fra.me.REG[6] = BOX_NativeString(" -x \"-c\"");
       REGB1 = TAG_Int(8);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-      once_value_25 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+      once_value_25 = fra.me.REG[6];
       register_static_object(&once_value_25);
-    } else fra.me.REG[5] = once_value_25;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    } else fra.me.REG[6] = once_value_25;
+    fra.me.REG[6] = fra.me.REG[6];
+    CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   }
   /* ./compiling//compiling_base.nit:113 */
-  fra.me.REG[5] = CALL_compiling___compiling_base___ToolContext___cc_libs(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
       /* ./compiling//compiling_base.nit:113 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_26) {
         fra.me.REG[7] = BOX_NativeString(" -l ");
         REGB2 = TAG_Int(4);
@@ -1206,67 +1220,72 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
         register_static_object(&once_value_26);
       } else fra.me.REG[7] = once_value_26;
       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]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
       if (!once_value_27) {
-        fra.me.REG[2] = BOX_NativeString("");
+        fra.me.REG[0] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-        once_value_27 = fra.me.REG[2];
+        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+        once_value_27 = fra.me.REG[0];
         register_static_object(&once_value_27);
-      } else fra.me.REG[2] = once_value_27;
-      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]);
-      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      } else fra.me.REG[0] = once_value_27;
+      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]);
+      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 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label28;
     }
   }
   label28: while(0);
   /* ./compiling//compiling_base.nit:114 */
-  fra.me.REG[4] = CALL_compiling___compiling_base___ToolContext___cc_lib_paths(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
       /* ./compiling//compiling_base.nit:114 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_29) {
         fra.me.REG[7] = BOX_NativeString(" -x \"-L ");
         REGB2 = TAG_Int(8);
@@ -1275,136 +1294,141 @@ void compiling___compiling_base___CProgram___generate_build_file(val_t p0){
         register_static_object(&once_value_29);
       } else fra.me.REG[7] = once_value_29;
       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]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
       if (!once_value_30) {
-        fra.me.REG[6] = BOX_NativeString("\"");
+        fra.me.REG[3] = BOX_NativeString("\"");
         REGB2 = TAG_Int(1);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-        once_value_30 = fra.me.REG[6];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        once_value_30 = fra.me.REG[3];
         register_static_object(&once_value_30);
-      } else fra.me.REG[6] = once_value_30;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-      fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      } else fra.me.REG[3] = once_value_30;
+      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]);
+      CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label31;
     }
   }
   label31: while(0);
   /* ./compiling//compiling_base.nit:115 */
-  fra.me.REG[3] = CALL_compiling___compiling_base___ToolContext___cc_include_paths(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    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*/;
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
       /* ./compiling//compiling_base.nit:115 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_32) {
-        fra.me.REG[6] = BOX_NativeString(" -x \"-I ");
+        fra.me.REG[3] = BOX_NativeString(" -x \"-I ");
         REGB2 = TAG_Int(8);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-        once_value_32 = fra.me.REG[6];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+        once_value_32 = fra.me.REG[3];
         register_static_object(&once_value_32);
-      } else fra.me.REG[6] = once_value_32;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+      } else fra.me.REG[3] = once_value_32;
+      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]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
       if (!once_value_33) {
-        fra.me.REG[4] = BOX_NativeString("\"");
+        fra.me.REG[5] = BOX_NativeString("\"");
         REGB2 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-        once_value_33 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        once_value_33 = fra.me.REG[5];
         register_static_object(&once_value_33);
-      } else fra.me.REG[4] = once_value_33;
-      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]);
-      fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      } else fra.me.REG[5] = once_value_33;
+      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]);
+      CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label34;
     }
   }
   label34: while(0);
   /* ./compiling//compiling_base.nit:116 */
   REGB1 = TAG_Int(3);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_35) {
-    fra.me.REG[3] = BOX_NativeString(" \"$@\" \\\n  ");
+    fra.me.REG[4] = BOX_NativeString(" \"$@\" \\\n  ");
     REGB1 = TAG_Int(10);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-    once_value_35 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_35 = fra.me.REG[4];
     register_static_object(&once_value_35);
-  } else fra.me.REG[3] = once_value_35;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  fra.me.REG[0] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[0])(fra.me.REG[0]);
+  } else fra.me.REG[4] = once_value_35;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[1] = CALL_compiling___compiling_base___CProgram___files(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_36) {
-    fra.me.REG[3] = BOX_NativeString("\\\n  ");
+    fra.me.REG[4] = BOX_NativeString("\\\n  ");
     REGB1 = TAG_Int(4);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-    once_value_36 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_36 = fra.me.REG[4];
     register_static_object(&once_value_36);
-  } else fra.me.REG[3] = once_value_36;
-  fra.me.REG[3] = fra.me.REG[3];
-  fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  } else fra.me.REG[4] = once_value_36;
+  fra.me.REG[4] = fra.me.REG[4];
+  fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
   if (!once_value_37) {
-    fra.me.REG[3] = BOX_NativeString("\n");
+    fra.me.REG[4] = BOX_NativeString("\n");
     REGB1 = TAG_Int(1);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-    once_value_37 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+    once_value_37 = fra.me.REG[4];
     register_static_object(&once_value_37);
-  } else fra.me.REG[3] = once_value_37;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-  CALL_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  } else fra.me.REG[4] = once_value_37;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./compiling//compiling_base.nit:117 */
-  CALL_standard___stream___IOS___close(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___stream___IOS___close(fra.me.REG[2])(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1552,7 +1576,12 @@ void compiling___compiling_base___CompilerVisitor___add_indent(val_t p0, val_t p
   }
   REGB0 = ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]);
   REGB1 = TAG_Int(8);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ./compiling//compiling_base.nit:147 */
   if (UNTAG_Bool(REGB1)) {
@@ -1575,11 +1604,16 @@ 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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
         /* ./compiling//compiling_base.nit:151 */
         if (!once_value_2) {
@@ -1591,14 +1625,14 @@ void compiling___compiling_base___CompilerVisitor___add_indent(val_t p0, val_t p
         } else fra.me.REG[0] = once_value_2;
         fra.me.REG[0] = fra.me.REG[0];
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label3;
       }
     }
@@ -1729,7 +1763,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   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;
@@ -1755,7 +1789,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   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;
@@ -1766,6 +1800,7 @@ void compiling___compiling_base___CompilerVisitor___unindent(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_compiling___compiling_base;
@@ -1778,7 +1813,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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   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;
@@ -1790,7 +1825,12 @@ void compiling___compiling_base___CompilerVisitor___unindent(val_t p0){
   }
   REGB1 = ATTR_compiling___compiling_base___CompilerVisitor____indent_level(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* ./compiling//compiling_base.nit:194 */
   if (UNTAG_Bool(REGB0)) {
@@ -2242,6 +2282,98 @@ val_t compiling___compiling_base___MMGlobalProperty___attr_access(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
+val_t compiling___compiling_base___MMGlobalProperty___vt_class_color(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_compiling___compiling_base;
+  fra.me.line = 254;
+  fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalProperty___vt_class_color;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:257 */
+  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("VTCOLOR_");
+    REGB0 = TAG_Int(8);
+    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_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___cname(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(0);
+    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);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t compiling___compiling_base___MMGlobalProperty___vt_class_id(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_compiling___compiling_base;
+  fra.me.line = 260;
+  fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalProperty___vt_class_id;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_base.nit:263 */
+  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("VTID_");
+    REGB0 = TAG_Int(5);
+    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_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___cname(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(0);
+    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);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
 val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
@@ -2250,7 +2382,7 @@ val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_base;
-  fra.me.line = 259;
+  fra.me.line = 271;
   fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalClass___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2260,9 +2392,9 @@ val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:262 */
+  /* ./compiling//compiling_base.nit:274 */
   fra.me.REG[1] = ATTR_compiling___compiling_base___MMGlobalClass____cname_cache(fra.me.REG[0]);
-  /* ./compiling//compiling_base.nit:263 */
+  /* ./compiling//compiling_base.nit:275 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2276,7 +2408,7 @@ val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_base.nit:264 */
+    /* ./compiling//compiling_base.nit:276 */
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[2] = CALL_compiling___compiling_base___MMModule___cname(fra.me.REG[2])(fra.me.REG[2]);
@@ -2297,10 +2429,10 @@ val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0){
     fra.me.REG[2] = CALL_utils___Object___cmangle(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     fra.me.REG[2] = CALL_standard___string___String_____plus(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
     fra.me.REG[1] = fra.me.REG[2];
-    /* ./compiling//compiling_base.nit:265 */
+    /* ./compiling//compiling_base.nit:277 */
     ATTR_compiling___compiling_base___MMGlobalClass____cname_cache(fra.me.REG[0]) = fra.me.REG[1];
   }
-  /* ./compiling//compiling_base.nit:267 */
+  /* ./compiling//compiling_base.nit:279 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2314,7 +2446,7 @@ val_t compiling___compiling_base___MMGlobalClass___id_id(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_compiling___compiling_base;
-  fra.me.line = 270;
+  fra.me.line = 282;
   fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalClass___id_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2322,7 +2454,7 @@ val_t compiling___compiling_base___MMGlobalClass___id_id(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:273 */
+  /* ./compiling//compiling_base.nit:285 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2359,7 +2491,7 @@ val_t compiling___compiling_base___MMGlobalClass___color_id(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_compiling___compiling_base;
-  fra.me.line = 276;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalClass___color_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2367,7 +2499,7 @@ val_t compiling___compiling_base___MMGlobalClass___color_id(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:279 */
+  /* ./compiling//compiling_base.nit:291 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2404,7 +2536,7 @@ val_t compiling___compiling_base___MMGlobalClass___init_table_pos_id(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_compiling___compiling_base;
-  fra.me.line = 282;
+  fra.me.line = 294;
   fra.me.meth = LOCATE_compiling___compiling_base___MMGlobalClass___init_table_pos_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2412,7 +2544,7 @@ val_t compiling___compiling_base___MMGlobalClass___init_table_pos_id(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:285 */
+  /* ./compiling//compiling_base.nit:297 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2449,7 +2581,7 @@ val_t compiling___compiling_base___MMModule___cname(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_compiling___compiling_base;
-  fra.me.line = 293;
+  fra.me.line = 305;
   fra.me.meth = LOCATE_compiling___compiling_base___MMModule___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2460,9 +2592,9 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:296 */
+  /* ./compiling//compiling_base.nit:308 */
   fra.me.REG[1] = ATTR_compiling___compiling_base___MMModule____cname_cache(fra.me.REG[0]);
-  /* ./compiling//compiling_base.nit:297 */
+  /* ./compiling//compiling_base.nit:309 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2476,11 +2608,11 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_base.nit:298 */
+    /* ./compiling//compiling_base.nit:310 */
     fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
-    /* ./compiling//compiling_base.nit:299 */
+    /* ./compiling//compiling_base.nit:311 */
     fra.me.REG[3] = fra.me.REG[0];
-    /* ./compiling//compiling_base.nit:300 */
+    /* ./compiling//compiling_base.nit:312 */
     while(1) {
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
@@ -2496,24 +2628,24 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_base.nit:301 */
+        /* ./compiling//compiling_base.nit:313 */
         REGB0 = TAG_Int(0);
         fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 301);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 313);
         }
         fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[3])(fra.me.REG[3]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
         fra.me.REG[4] = CALL_utils___Object___cmangle(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
         CALL_standard___collection___abstract_collection___Sequence___unshift(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ./compiling//compiling_base.nit:302 */
+        /* ./compiling//compiling_base.nit:314 */
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 302);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 314);
         }
         fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[3])(fra.me.REG[3]);
-        /* ./compiling//compiling_base.nit:303 */
+        /* ./compiling//compiling_base.nit:315 */
         while(1) {
           REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
@@ -2531,7 +2663,7 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
           if (UNTAG_Bool(REGB0)) {
             REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 303);
+              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 315);
             }
             fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMDirectory___owner(fra.me.REG[4])(fra.me.REG[4]);
             REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[5],fra.me.REG[3]));
@@ -2553,7 +2685,7 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
           if (UNTAG_Bool(REGB0)) {
             REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 303);
+              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 315);
             }
             fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMDirectory___parent(fra.me.REG[4])(fra.me.REG[4]);
             fra.me.REG[4] = fra.me.REG[5];
@@ -2562,7 +2694,7 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
           }
         }
         label1: while(0);
-        /* ./compiling//compiling_base.nit:304 */
+        /* ./compiling//compiling_base.nit:316 */
         REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
@@ -2580,18 +2712,18 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
         } else {
           REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 304);
+            nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_base, 316);
           }
           fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMDirectory___owner(fra.me.REG[4])(fra.me.REG[4]);
           fra.me.REG[3] = fra.me.REG[4];
         }
       } else {
-        /* ./compiling//compiling_base.nit:300 */
+        /* ./compiling//compiling_base.nit:312 */
         goto label2;
       }
     }
     label2: while(0);
-    /* ./compiling//compiling_base.nit:306 */
+    /* ./compiling//compiling_base.nit:318 */
     fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("___");
@@ -2603,10 +2735,10 @@ val_t compiling___compiling_base___MMModule___cname(val_t p0){
     fra.me.REG[3] = fra.me.REG[3];
     fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     fra.me.REG[1] = fra.me.REG[3];
-    /* ./compiling//compiling_base.nit:307 */
+    /* ./compiling//compiling_base.nit:319 */
     ATTR_compiling___compiling_base___MMModule____cname_cache(fra.me.REG[0]) = fra.me.REG[1];
   }
-  /* ./compiling//compiling_base.nit:309 */
+  /* ./compiling//compiling_base.nit:321 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -2617,13 +2749,13 @@ val_t compiling___compiling_base___MMLocalClass___cname(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_base;
-  fra.me.line = 314;
+  fra.me.line = 326;
   fra.me.meth = LOCATE_compiling___compiling_base___MMLocalClass___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:315 */
+  /* ./compiling//compiling_base.nit:327 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2639,7 +2771,7 @@ val_t compiling___compiling_base___MMLocalProperty___cname(val_t p0){
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_base;
-  fra.me.line = 322;
+  fra.me.line = 334;
   fra.me.meth = LOCATE_compiling___compiling_base___MMLocalProperty___cname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2649,9 +2781,9 @@ val_t compiling___compiling_base___MMLocalProperty___cname(val_t p0){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:325 */
+  /* ./compiling//compiling_base.nit:337 */
   fra.me.REG[1] = ATTR_compiling___compiling_base___MMLocalProperty____cname_cache(fra.me.REG[0]);
-  /* ./compiling//compiling_base.nit:326 */
+  /* ./compiling//compiling_base.nit:338 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2665,7 +2797,7 @@ val_t compiling___compiling_base___MMLocalProperty___cname(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_base.nit:327 */
+    /* ./compiling//compiling_base.nit:339 */
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_compiling___compiling_base___MMModule___cname(fra.me.REG[2])(fra.me.REG[2]);
     if (!once_value_1) {
@@ -2687,10 +2819,10 @@ val_t compiling___compiling_base___MMLocalProperty___cname(val_t p0){
     fra.me.REG[2] = CALL_utils___Object___cmangle(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     fra.me.REG[2] = CALL_standard___string___String_____plus(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
     fra.me.REG[1] = fra.me.REG[2];
-    /* ./compiling//compiling_base.nit:328 */
+    /* ./compiling//compiling_base.nit:340 */
     ATTR_compiling___compiling_base___MMLocalProperty____cname_cache(fra.me.REG[0]) = fra.me.REG[1];
   }
-  /* ./compiling//compiling_base.nit:330 */
+  /* ./compiling//compiling_base.nit:342 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2704,7 +2836,7 @@ val_t compiling___compiling_base___MMLocalProperty___super_meth_call(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_compiling___compiling_base;
-  fra.me.line = 333;
+  fra.me.line = 345;
   fra.me.meth = LOCATE_compiling___compiling_base___MMLocalProperty___super_meth_call;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2712,7 +2844,7 @@ val_t compiling___compiling_base___MMLocalProperty___super_meth_call(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_base.nit:336 */
+  /* ./compiling//compiling_base.nit:348 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
index 1409e0c..5254879 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/compiling_base. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/compiling_base. */
 #ifndef compiling___compiling_base_sep
 #define compiling___compiling_base_sep
 #include "utils._sep.h"
@@ -102,6 +102,8 @@ extern const int SFT_compiling___compiling_base[];
 #define CALL_compiling___compiling_base___CompilerVisitor___init(recv) ((compiling___compiling_base___CompilerVisitor___init_t)CALL((recv), (SFT_compiling___compiling_base[9] + 24)))
 #define CALL_compiling___compiling_base___MMGlobalProperty___meth_call(recv) ((compiling___compiling_base___MMGlobalProperty___meth_call_t)CALL((recv), (SFT_compiling___compiling_base[10] + 0)))
 #define CALL_compiling___compiling_base___MMGlobalProperty___attr_access(recv) ((compiling___compiling_base___MMGlobalProperty___attr_access_t)CALL((recv), (SFT_compiling___compiling_base[10] + 1)))
+#define CALL_compiling___compiling_base___MMGlobalProperty___vt_class_color(recv) ((compiling___compiling_base___MMGlobalProperty___vt_class_color_t)CALL((recv), (SFT_compiling___compiling_base[10] + 2)))
+#define CALL_compiling___compiling_base___MMGlobalProperty___vt_class_id(recv) ((compiling___compiling_base___MMGlobalProperty___vt_class_id_t)CALL((recv), (SFT_compiling___compiling_base[10] + 3)))
 #define ATTR_compiling___compiling_base___MMGlobalClass____cname_cache(recv) ATTR(recv, (SFT_compiling___compiling_base[11] + 0))
 #define CALL_compiling___compiling_base___MMGlobalClass___cname(recv) ((compiling___compiling_base___MMGlobalClass___cname_t)CALL((recv), (SFT_compiling___compiling_base[12] + 0)))
 #define CALL_compiling___compiling_base___MMGlobalClass___id_id(recv) ((compiling___compiling_base___MMGlobalClass___id_id_t)CALL((recv), (SFT_compiling___compiling_base[12] + 1)))
@@ -290,6 +292,12 @@ typedef val_t (*compiling___compiling_base___MMGlobalProperty___meth_call_t)(val
 static const char * const LOCATE_compiling___compiling_base___MMGlobalProperty___attr_access = "compiling_base::MMGlobalProperty::attr_access";
 val_t compiling___compiling_base___MMGlobalProperty___attr_access(val_t p0);
 typedef val_t (*compiling___compiling_base___MMGlobalProperty___attr_access_t)(val_t p0);
+static const char * const LOCATE_compiling___compiling_base___MMGlobalProperty___vt_class_color = "compiling_base::MMGlobalProperty::vt_class_color";
+val_t compiling___compiling_base___MMGlobalProperty___vt_class_color(val_t p0);
+typedef val_t (*compiling___compiling_base___MMGlobalProperty___vt_class_color_t)(val_t p0);
+static const char * const LOCATE_compiling___compiling_base___MMGlobalProperty___vt_class_id = "compiling_base::MMGlobalProperty::vt_class_id";
+val_t compiling___compiling_base___MMGlobalProperty___vt_class_id(val_t p0);
+typedef val_t (*compiling___compiling_base___MMGlobalProperty___vt_class_id_t)(val_t p0);
 val_t NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___init(val_t p0);
 static const char * const LOCATE_compiling___compiling_base___MMGlobalClass___cname = "compiling_base::MMGlobalClass::cname";
 val_t compiling___compiling_base___MMGlobalClass___cname(val_t p0);
index 7ef222b..3265093 100644 (file)
@@ -4,6 +4,7 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_4; /* Once value */
   static val_t once_value_5; /* Once value */
@@ -79,36 +80,41 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
   } 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -156,14 +162,14 @@ void compiling___compiling_global___Program___compile_tables_to_c(val_t p0, val_
         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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label11;
     }
   }
@@ -483,6 +489,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -570,36 +577,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -670,28 +682,28 @@ 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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label10;
     }
   }
   label10: while(0);
   /* ./compiling//compiling_global.nit:99 */
-  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_compiling___compiling_global___MMModule___compile_mod_to_c_11));
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_compiling___compiling_global___MMModule___compile_mod_to_c_11));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -711,15 +723,15 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    closctx->REG[0] = fra.me.REG[0];
+    closctx->REG[3] = fra.me.REG[0];
     /* ./compiling//compiling_global.nit:100 */
-    REGB0 = TAG_Bool(VAL_ISA(closctx->REG[0], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
+    REGB0 = TAG_Bool(VAL_ISA(closctx->REG[3], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       goto label12;
     }
     /* ./compiling//compiling_global.nit:101 */
-    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[0])(closctx->REG[0]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[3])(closctx->REG[3]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_compiling___compiling_global___MMModule___compile_mod_to_c_13));
     label12: while(0);
     stack_frame_head = fra.me.prev;
@@ -755,13 +767,13 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
       /* ./compiling//compiling_global.nit:102 */
-      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
       /* ./compiling//compiling_global.nit:103 */
       fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[1])(fra.me.REG[1]);
-      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],closctx->REG[0]));
+      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],closctx->REG[3]));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], closctx->REG[0]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], closctx->REG[3]);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
@@ -775,7 +787,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         CALL_compiling___compiling_global___MMMethod___compile_property_to_c(fra.me.REG[1])(fra.me.REG[1], closctx->REG[1]);
       }
       /* ./compiling//compiling_global.nit:106 */
-      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+      REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
       if (UNTAG_Bool(REGB0)) {
         /* ./compiling//compiling_global.nit:108 */
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
@@ -787,11 +799,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:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB2)) {
             /* ./compiling//compiling_global.nit:109 */
             REGB2 = REGB0;
@@ -820,14 +837,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:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB2 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB0 = REGB2;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label16;
           }
         }
@@ -844,7 +861,7 @@ void compiling___compiling_global___MMModule___compile_mod_to_c(val_t p0, val_t
         } else fra.me.REG[3] = once_value_17;
         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]);
-        fra.me.REG[3] = CALL_standard___string___Object___to_s(closctx->REG[0])(closctx->REG[0]);
+        fra.me.REG[3] = CALL_standard___string___Object___to_s(closctx->REG[3])(closctx->REG[3]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
         if (!once_value_18) {
           fra.me.REG[3] = BOX_NativeString("_");
@@ -897,6 +914,7 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -1000,11 +1018,11 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
   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]);
   fra.me.REG[3] = CALL_compiling___table_computation___MMModule___local_table(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
   /* ./compiling//compiling_global.nit:127 */
@@ -1025,36 +1043,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -1069,14 +1092,14 @@ void compiling___compiling_global___MMModule___compile_local_table_to_c(val_t p0
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label9;
     }
   }
@@ -1195,6 +1218,7 @@ void compiling___compiling_global___ModuleTableEltGroup___compile_macros(val_t p
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
       static val_t once_value_1; /* Once value */
       static val_t once_value_2; /* Once value */
@@ -1219,36 +1243,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* ./compiling//compiling_global.nit:160 */
       REGB2 = TAG_Int(5);
@@ -1287,18 +1316,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ./compiling//compiling_global.nit:161 */
       REGB0 = REGB2;
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label4;
     }
   }
@@ -1514,36 +1543,41 @@ 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(false);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]));
@@ -1576,14 +1610,14 @@ val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -1594,7 +1628,7 @@ val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_t p1, val_t p2){
+void compiling___compiling_global___TableEltVTClassColor___compile_macros(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
@@ -1604,7 +1638,7 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
   fra.me.line = 209;
-  fra.me.meth = LOCATE_compiling___compiling_global___TableEltAttr___compile_macros;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltVTClassColor___compile_macros;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
@@ -1630,11 +1664,11 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   } else fra.me.REG[4] = once_value_1;
   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[0] = CALL_compiling___compiling_base___MMGlobalProperty___attr_access(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_color(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]);
   if (!once_value_2) {
-    fra.me.REG[0] = BOX_NativeString("(recv) ATTR(recv, (");
-    REGB0 = TAG_Int(19);
+    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);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
@@ -1643,8 +1677,8 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString("))");
-    REGB0 = TAG_Int(2);
+    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);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
@@ -1656,103 +1690,137 @@ void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
   static val_t once_value_3; /* Once value */
   static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
   fra.me.line = 215;
-  fra.me.meth = LOCATE_compiling___compiling_global___TableEltAttr___compile_to_c;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltVTClassColor___compile_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:215 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./compiling//compiling_global.nit:217 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_global.nit:218 */
-  fra.me.REG[3] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[4] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./compiling//compiling_global.nit:219 */
-  REGB0 = TAG_Int(7);
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  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);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 219);
+  }
+  fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./compiling//compiling_global.nit:220 */
+  fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[5])(fra.me.REG[5]);
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_global, 220);
+  }
+  fra.me.REG[6] = CALL_compiling___table_computation___MMConcreteClass___class_color_pos(fra.me.REG[6])(fra.me.REG[6]);
+  /* ./compiling//compiling_global.nit:221 */
+  REGB0 = TAG_Int(11);
+  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   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);
-    once_value_1 = fra.me.REG[5];
+    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);
+    once_value_1 = fra.me.REG[7];
     register_static_object(&once_value_1);
-  } else fra.me.REG[5] = once_value_1;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  fra.me.REG[1] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  fra.me.REG[0] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  } else fra.me.REG[7] = once_value_1;
+  fra.me.REG[7] = fra.me.REG[7];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
+  fra.me.REG[7] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
   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);
-    once_value_2 = fra.me.REG[0];
+    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);
+    once_value_2 = fra.me.REG[6];
     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[4])(fra.me.REG[4], fra.me.REG[0]);
-  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[4])(fra.me.REG[4], fra.me.REG[2]);
+  } else fra.me.REG[6] = once_value_2;
+  fra.me.REG[6] = fra.me.REG[6];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+  fra.me.REG[1] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   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);
+    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[0])(fra.me.REG[0], 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]);
+  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);
-    once_value_3 = fra.me.REG[2];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  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[2]);
-  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[4])(fra.me.REG[4], fra.me.REG[3]);
-  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);
-    once_value_4 = fra.me.REG[3];
+    once_value_4 = fra.me.REG[2];
     register_static_object(&once_value_4);
-  } else fra.me.REG[3] = once_value_4;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  } else fra.me.REG[2] = once_value_4;
+  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]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  goto label5;
-  label5: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
-}
-val_t compiling___compiling_global___AbsTableEltClass___symbol(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_compiling___compiling_global;
-  fra.me.line = 224;
-  fra.me.meth = LOCATE_compiling___compiling_global___AbsTableEltClass___symbol;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  /* ./compiling//compiling_global.nit:224 */
-  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_global, 224);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+  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);
+    once_value_5 = fra.me.REG[4];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[4] = once_value_5;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+  fra.me.REG[5] = CALL_standard___string___Object___to_s(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]);
+  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);
+    once_value_6 = fra.me.REG[5];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[5] = once_value_6;
+  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]);
+  goto label7;
+  label7: while(0);
   stack_frame_head = fra.me.prev;
-  return NIT_NULL;
+  return fra.me.REG[0];
 }
-void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0, val_t p1, val_t p2){
+void compiling___compiling_global___TableEltVTClassId___compile_macros(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
@@ -1761,8 +1829,8 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(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_compiling___compiling_global;
-  fra.me.line = 227;
-  fra.me.meth = LOCATE_compiling___compiling_global___AbsTableEltClass___compile_macros;
+  fra.me.line = 226;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltVTClassId___compile_macros;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
@@ -1773,6 +1841,9 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:228 */
+  fra.me.REG[0] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_global.nit:229 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1785,11 +1856,11 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   } else fra.me.REG[4] = once_value_1;
   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[0] = CALL_compiling___compiling_global___AbsTableEltClass___symbol(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_id(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]);
   if (!once_value_2) {
-    fra.me.REG[0] = BOX_NativeString(" (");
-    REGB0 = TAG_Int(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);
     once_value_2 = fra.me.REG[0];
     register_static_object(&once_value_2);
@@ -1798,8 +1869,8 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString(")");
-    REGB0 = TAG_Int(1);
+    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);
     once_value_3 = fra.me.REG[2];
     register_static_object(&once_value_3);
@@ -1811,107 +1882,448 @@ void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0,
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t compiling___compiling_global___TableEltClassId___symbol(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_compiling___compiling_global;
-  fra.me.line = 234;
-  fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassId___symbol;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./compiling//compiling_global.nit:234 */
-  fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___id_id(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
-}
-val_t compiling___compiling_global___TableEltClassId___value(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
   static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 236;
-  fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassId___value;
+  fra.me.line = 232;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltVTClassId___compile_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_global.nit:238 */
-  REGB0 = TAG_Int(5);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:234 */
+  fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_global.nit:235 */
+  fra.me.REG[3] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* ./compiling//compiling_global.nit:236 */
+  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 236);
+  }
+  fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./compiling//compiling_global.nit:237 */
+  REGB0 = TAG_Int(11);
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
-    fra.me.REG[3] = BOX_NativeString("");
+    fra.me.REG[6] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_1 = fra.me.REG[3];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+    once_value_1 = fra.me.REG[6];
     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]);
-  fra.me.REG[1] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[3] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  } else fra.me.REG[6] = once_value_1;
+  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[6] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 238);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 237);
   }
-  REGB0 = CALL_compiling___table_computation___CompiledClass___id(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  REGB0 = CALL_compiling___table_computation___CompiledClass___id(fra.me.REG[6])(fra.me.REG[6]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   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);
-    once_value_2 = fra.me.REG[3];
+    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);
+    once_value_2 = fra.me.REG[6];
     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[2])(fra.me.REG[2], fra.me.REG[3]);
-  fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  } else fra.me.REG[6] = once_value_2;
+  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[1] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
   if (!once_value_3) {
-    fra.me.REG[0] = BOX_NativeString(" */");
-    REGB0 = TAG_Int(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);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
   fra.me.REG[0] = fra.me.REG[0];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  goto label4;
-  label4: while(0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  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);
+    once_value_4 = fra.me.REG[2];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[2] = once_value_4;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  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[5])(fra.me.REG[5], fra.me.REG[3]);
+  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);
+    once_value_5 = fra.me.REG[3];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[3] = once_value_5;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], 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[5])(fra.me.REG[5], fra.me.REG[4]);
+  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);
+    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];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+  goto label7;
+  label7: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[5];
 }
-val_t compiling___compiling_global___TableEltClassInitTable___symbol(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_compiling___compiling_global;
+  fra.me.line = 242;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltAttr___compile_macros;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:244 */
+  fra.me.REG[0] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_global.nit:245 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_1 = fra.me.REG[4];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[4] = once_value_1;
+  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[0] = CALL_compiling___compiling_base___MMGlobalProperty___attr_access(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]);
+  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);
+    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[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  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);
+    once_value_3 = fra.me.REG[2];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[2] = once_value_3;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t compiling___compiling_global___TableEltAttr___compile_to_c(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_compiling___compiling_global;
+  fra.me.line = 248;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltAttr___compile_to_c;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:250 */
+  fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_global.nit:251 */
+  fra.me.REG[3] = CALL_compiling___table_computation___TableEltProp___property(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* ./compiling//compiling_global.nit:252 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_1 = fra.me.REG[5];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[5] = once_value_1;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[1] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  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);
+    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[4])(fra.me.REG[4], fra.me.REG[0]);
+  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[4])(fra.me.REG[4], fra.me.REG[2]);
+  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);
+    once_value_3 = fra.me.REG[2];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[2] = once_value_3;
+  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[2]);
+  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[4])(fra.me.REG[4], fra.me.REG[3]);
+  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);
+    once_value_4 = fra.me.REG[3];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[3] = once_value_4;
+  fra.me.REG[3] = fra.me.REG[3];
+  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]);
+  goto label5;
+  label5: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[4];
+}
+val_t compiling___compiling_global___AbsTableEltClass___symbol(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_compiling___compiling_global;
+  fra.me.line = 258;
+  fra.me.meth = LOCATE_compiling___compiling_global___AbsTableEltClass___symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./compiling//compiling_global.nit:258 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_global, 258);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+void compiling___compiling_global___AbsTableEltClass___compile_macros(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_compiling___compiling_global;
+  fra.me.line = 261;
+  fra.me.meth = LOCATE_compiling___compiling_global___AbsTableEltClass___compile_macros;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 5;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./compiling//compiling_global.nit:263 */
+  REGB0 = TAG_Int(5);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_1 = fra.me.REG[4];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[4] = once_value_1;
+  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[0] = CALL_compiling___compiling_global___AbsTableEltClass___symbol(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]);
+  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);
+    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[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  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);
+    once_value_3 = fra.me.REG[2];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[2] = once_value_3;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t compiling___compiling_global___TableEltClassId___symbol(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_compiling___compiling_global;
+  fra.me.line = 268;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassId___symbol;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//compiling_global.nit:268 */
+  fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___id_id(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t compiling___compiling_global___TableEltClassId___value(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t REGB0;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_compiling___compiling_global;
+  fra.me.line = 270;
+  fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassId___value;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./compiling//compiling_global.nit:272 */
+  REGB0 = TAG_Int(5);
+  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);
+    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]);
+  fra.me.REG[1] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 272);
+  }
+  REGB0 = CALL_compiling___table_computation___CompiledClass___id(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  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);
+    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[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___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]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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);
+    once_value_3 = fra.me.REG[0];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[0] = once_value_3;
+  fra.me.REG[0] = fra.me.REG[0];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+  goto label4;
+  label4: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t compiling___compiling_global___TableEltClassInitTable___symbol(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_compiling___compiling_global;
-  fra.me.line = 243;
+  fra.me.line = 277;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassInitTable___symbol;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_global.nit:243 */
+  /* ./compiling//compiling_global.nit:277 */
   fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___init_table_pos_id(fra.me.REG[0])(fra.me.REG[0]);
@@ -1934,7 +2346,7 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 245;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassInitTable___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1948,61 +2360,71 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:247 */
+  /* ./compiling//compiling_global.nit:281 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:248 */
+  /* ./compiling//compiling_global.nit:282 */
   fra.me.REG[3] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//compiling_global.nit:249 */
+  /* ./compiling//compiling_global.nit:283 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___reverse_linear_extension(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./compiling//compiling_global.nit:250 */
+  /* ./compiling//compiling_global.nit:284 */
   REGB0 = TAG_Int(0);
-  /* ./compiling//compiling_global.nit:251 */
+  /* ./compiling//compiling_global.nit:285 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:243 */
+    /* ./../lib/standard//collection//array.nit:278 */
     fra.me.REG[5] = fra.me.REG[3];
     REGB1 = REGB0;
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Bool(false);
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label1;
     label1: while(0);
-    /* ./compiling//compiling_global.nit:251 */
+    /* ./compiling//compiling_global.nit:285 */
     REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 251);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 285);
     }
     fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[6] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
@@ -2015,19 +2437,19 @@ val_t compiling___compiling_global___TableEltClassInitTable___compile_to_c(val_t
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      /* ./compiling//compiling_global.nit:252 */
+      /* ./compiling//compiling_global.nit:286 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./compiling//compiling_global.nit:252 */
+      /* ./compiling//compiling_global.nit:286 */
       REGB0 = REGB1;
     } else {
-      /* ./compiling//compiling_global.nit:251 */
+      /* ./compiling//compiling_global.nit:285 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./compiling//compiling_global.nit:254 */
+  /* ./compiling//compiling_global.nit:288 */
   REGB1 = TAG_Int(9);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_3) {
@@ -2097,13 +2519,13 @@ val_t compiling___compiling_global___TableEltClassColor___symbol(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 259;
+  fra.me.line = 293;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassColor___symbol;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_global.nit:259 */
+  /* ./compiling//compiling_global.nit:293 */
   fra.me.REG[0] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___color_id(fra.me.REG[0])(fra.me.REG[0]);
@@ -2121,7 +2543,7 @@ val_t compiling___compiling_global___TableEltClassColor___value(val_t p0, val_t
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 261;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassColor___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2131,7 +2553,7 @@ val_t compiling___compiling_global___TableEltClassColor___value(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_global.nit:263 */
+  /* ./compiling//compiling_global.nit:297 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2185,7 +2607,7 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(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_compiling___compiling_global;
-  fra.me.line = 266;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassColor___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2198,14 +2620,14 @@ val_t compiling___compiling_global___TableEltClassColor___compile_to_c(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:268 */
+  /* ./compiling//compiling_global.nit:302 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:269 */
+  /* ./compiling//compiling_global.nit:303 */
   fra.me.REG[3] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_compiling___table_computation___AbsTableEltClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//compiling_global.nit:270 */
+  /* ./compiling//compiling_global.nit:304 */
   REGB0 = TAG_Int(9);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2276,7 +2698,7 @@ val_t compiling___compiling_global___TableEltComposite___compile_to_c(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 275;
+  fra.me.line = 309;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltComposite___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2286,8 +2708,8 @@ val_t compiling___compiling_global___TableEltComposite___compile_to_c(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:275 */
-  nit_abort("Aborted", NULL, LOCATE_compiling___compiling_global, 275);
+  /* ./compiling//compiling_global.nit:309 */
+  nit_abort("Aborted", NULL, LOCATE_compiling___compiling_global, 309);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2300,7 +2722,7 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(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_compiling___compiling_global;
-  fra.me.line = 279;
+  fra.me.line = 313;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassSelfId___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2312,9 +2734,9 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(val_t p0
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:281 */
+  /* ./compiling//compiling_global.nit:315 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:282 */
+  /* ./compiling//compiling_global.nit:316 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2331,7 +2753,7 @@ val_t compiling___compiling_global___TableEltClassSelfId___compile_to_c(val_t p0
   fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 282);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 316);
   }
   REGB0 = CALL_compiling___table_computation___CompiledClass___id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
@@ -2373,7 +2795,7 @@ val_t compiling___compiling_global___TableEltClassSelfName___compile_to_c(val_t
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 287;
+  fra.me.line = 321;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassSelfName___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2385,9 +2807,9 @@ val_t compiling___compiling_global___TableEltClassSelfName___compile_to_c(val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:289 */
+  /* ./compiling//compiling_global.nit:323 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:290 */
+  /* ./compiling//compiling_global.nit:324 */
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2436,6 +2858,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_3; /* Once value */
@@ -2443,7 +2866,7 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 295;
+  fra.me.line = 329;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltClassObjectSize___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2455,11 +2878,11 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:297 */
+  /* ./compiling//compiling_global.nit:331 */
   REGB0 = TAG_Int(0);
-  /* ./compiling//compiling_global.nit:298 */
+  /* ./compiling//compiling_global.nit:332 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:299 */
+  /* ./compiling//compiling_global.nit:333 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
   if (!once_value_1) {
     fra.me.REG[4] = BOX_NativeString("NativeArray");
@@ -2477,70 +2900,75 @@ val_t compiling___compiling_global___TableEltClassObjectSize___compile_to_c(val_
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_global.nit:300 */
+    /* ./compiling//compiling_global.nit:334 */
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-    /* ./compiling//compiling_global.nit:300 */
+    /* ./compiling//compiling_global.nit:334 */
     REGB0 = REGB1;
   } else {
-    /* ./compiling//compiling_global.nit:302 */
+    /* ./compiling//compiling_global.nit:336 */
     fra.me.REG[4] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
     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:303 */
+    /* ./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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-        /* ./compiling//compiling_global.nit:305 */
+        /* ./compiling//compiling_global.nit:339 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./compiling//compiling_global.nit:305 */
+        /* ./compiling//compiling_global.nit:339 */
         REGB0 = REGB2;
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
     label2: while(0);
   }
-  /* ./compiling//compiling_global.nit:308 */
+  /* ./compiling//compiling_global.nit:342 */
   REGB1 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_3) {
@@ -2590,7 +3018,7 @@ val_t compiling___compiling_global___TableEltObjectId___compile_to_c(val_t p0, v
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 313;
+  fra.me.line = 347;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltObjectId___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2601,9 +3029,9 @@ val_t compiling___compiling_global___TableEltObjectId___compile_to_c(val_t p0, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:315 */
+  /* ./compiling//compiling_global.nit:349 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:316 */
+  /* ./compiling//compiling_global.nit:350 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2642,7 +3070,7 @@ val_t compiling___compiling_global___TableEltVftPointer___compile_to_c(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_compiling___compiling_global;
-  fra.me.line = 321;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_compiling___compiling_global___TableEltVftPointer___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2653,9 +3081,9 @@ val_t compiling___compiling_global___TableEltVftPointer___compile_to_c(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_global.nit:323 */
+  /* ./compiling//compiling_global.nit:357 */
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:324 */
+  /* ./compiling//compiling_global.nit:358 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2707,7 +3135,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     static val_t once_value_14; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 331;
+  fra.me.line = 365;
   fra.me.meth = LOCATE_compiling___compiling_global___MMLocalClass___declare_tables_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2719,7 +3147,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_global.nit:334 */
+  /* ./compiling//compiling_global.nit:368 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
@@ -2729,9 +3157,9 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_global.nit:335 */
+  /* ./compiling//compiling_global.nit:369 */
   fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_global.nit:336 */
+  /* ./compiling//compiling_global.nit:370 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_2) {
@@ -2756,7 +3184,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   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_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_global.nit:337 */
+  /* ./compiling//compiling_global.nit:371 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2773,7 +3201,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 337);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 371);
     }
     REGB0 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
@@ -2782,13 +3210,13 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_global.nit:338 */
+    /* ./compiling//compiling_global.nit:372 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 338);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 372);
     }
     fra.me.REG[2] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./compiling//compiling_global.nit:339 */
+    /* ./compiling//compiling_global.nit:373 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -2813,7 +3241,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     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]);
-    /* ./compiling//compiling_global.nit:340 */
+    /* ./compiling//compiling_global.nit:374 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -2847,7 +3275,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:341 */
+    /* ./compiling//compiling_global.nit:375 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_9) {
@@ -2883,7 +3311,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:342 */
+    /* ./compiling//compiling_global.nit:376 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_12) {
@@ -2924,7 +3352,7 @@ void compiling___compiling_global___MMLocalClass___declare_tables_to_c(val_t p0,
   return;
 }
 void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -2996,10 +3424,10 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         static val_t once_value_77; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 346;
+  fra.me.line = 380;
   fra.me.meth = LOCATE_compiling___compiling_global___MMLocalClass___compile_tables_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -3009,1042 +3437,1065 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_global.nit:349 */
-  fra.me.REG[2] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[2] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_global.nit:350 */
-  fra.me.REG[2] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  /* ./compiling//compiling_global.nit:380 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./compiling//compiling_global.nit:383 */
+  fra.me.REG[3] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./compiling//compiling_global.nit:384 */
+  fra.me.REG[3] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./compiling//compiling_global.nit:352 */
-  fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[4] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[4])(fra.me.REG[4]);
-  REGB1 = CALL_compiling___table_computation___TableInformation___max_class_table_length(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+  /* ./compiling//compiling_global.nit:386 */
+  fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[5])(fra.me.REG[5]);
+  REGB1 = CALL_compiling___table_computation___TableInformation___max_class_table_length(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    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:217 */
+  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*/;
+  if (UNTAG_Bool(REGB3)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:234 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ./compiling//compiling_global.nit:352 */
+  /* ./compiling//compiling_global.nit:386 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_global.nit:353 */
-    fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[4] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[4])(fra.me.REG[4]);
-    REGB2 = CALL_compiling___table_computation___TableInformation___max_class_table_length(fra.me.REG[4])(fra.me.REG[4]);
+    /* ./compiling//compiling_global.nit:387 */
+    fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___program(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[5] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[5])(fra.me.REG[5]);
+    REGB2 = CALL_compiling___table_computation___TableInformation___max_class_table_length(fra.me.REG[5])(fra.me.REG[5]);
     REGB0 = REGB2;
   }
-  /* ./compiling//compiling_global.nit:356 */
+  /* ./compiling//compiling_global.nit:390 */
   REGB2 = TAG_Int(5);
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
   if (!once_value_1) {
-    fra.me.REG[5] = BOX_NativeString("const classtable_elt_t VFT_");
+    fra.me.REG[6] = BOX_NativeString("const classtable_elt_t VFT_");
     REGB2 = TAG_Int(27);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-    once_value_1 = fra.me.REG[5];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    once_value_1 = fra.me.REG[6];
     register_static_object(&once_value_1);
-  } else fra.me.REG[5] = once_value_1;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  fra.me.REG[5] = CALL_compiling___compiling_base___MMLocalClass___cname(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[5]);
+  } else fra.me.REG[6] = once_value_1;
+  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[6] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   if (!once_value_2) {
-    fra.me.REG[5] = BOX_NativeString("[");
+    fra.me.REG[6] = BOX_NativeString("[");
     REGB2 = TAG_Int(1);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-    once_value_2 = fra.me.REG[5];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    once_value_2 = fra.me.REG[6];
     register_static_object(&once_value_2);
-  } else fra.me.REG[5] = once_value_2;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  } else fra.me.REG[6] = once_value_2;
+  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[6] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   if (!once_value_3) {
-    fra.me.REG[5] = BOX_NativeString("] = {");
+    fra.me.REG[6] = BOX_NativeString("] = {");
     REGB2 = TAG_Int(5);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-    once_value_3 = fra.me.REG[5];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
-  } else fra.me.REG[5] = once_value_3;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_global.nit:357 */
+  } else fra.me.REG[6] = once_value_3;
+  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]);
+  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:231 */
-  fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:266 */
+  fra.me.REG[5] = fra.me.REG[3];
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    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);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
-      /* ./compiling//compiling_global.nit:359 */
-      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:718 */
+      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);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+        REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(false);
           REGB1 = REGB3;
         } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
           REGB1 = REGB3;
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./compiling//compiling_global.nit:360 */
+        /* ./compiling//compiling_global.nit:394 */
         if (!once_value_4) {
-          fra.me.REG[7] = BOX_NativeString("{0} /* Class Hole :( */,");
+          fra.me.REG[8] = BOX_NativeString("{0} /* Class Hole :( */,");
           REGB1 = TAG_Int(24);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-          once_value_4 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+          once_value_4 = fra.me.REG[8];
           register_static_object(&once_value_4);
-        } else fra.me.REG[7] = once_value_4;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        } else fra.me.REG[8] = once_value_4;
+        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]);
       } else {
-        /* ./compiling//compiling_global.nit:362 */
+        /* ./compiling//compiling_global.nit:396 */
         REGB1 = TAG_Int(3);
-        fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+        fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_5) {
-          fra.me.REG[8] = BOX_NativeString("{(bigint) ");
+          fra.me.REG[9] = BOX_NativeString("{(bigint) ");
           REGB1 = TAG_Int(10);
-          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-          once_value_5 = fra.me.REG[8];
+          fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+          once_value_5 = fra.me.REG[9];
           register_static_object(&once_value_5);
-        } else fra.me.REG[8] = once_value_5;
-        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]);
-        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+        } else fra.me.REG[9] = once_value_5;
+        fra.me.REG[9] = fra.me.REG[9];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+        REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 362);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 396);
         }
-        fra.me.REG[6] = CALL_compiling___compiling_global___TableElt___compile_to_c(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[0]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+        fra.me.REG[7] = CALL_compiling___compiling_global___TableElt___compile_to_c(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1], fra.me.REG[2]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
         if (!once_value_6) {
-          fra.me.REG[6] = BOX_NativeString("},");
+          fra.me.REG[7] = BOX_NativeString("},");
           REGB1 = TAG_Int(2);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-          once_value_6 = fra.me.REG[6];
+          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+          once_value_6 = fra.me.REG[7];
           register_static_object(&once_value_6);
-        } else fra.me.REG[6] = once_value_6;
-        fra.me.REG[6] = fra.me.REG[6];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-        fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        } else fra.me.REG[7] = once_value_6;
+        fra.me.REG[7] = fra.me.REG[7];
+        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_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    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:217 */
+  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+  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:234 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
-  /* ./compiling//compiling_global.nit:365 */
+  /* ./compiling//compiling_global.nit:399 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_global.nit:366 */
+    /* ./compiling//compiling_global.nit:400 */
     if (!once_value_8) {
-      fra.me.REG[5] = BOX_NativeString("{0},");
+      fra.me.REG[6] = BOX_NativeString("{0},");
       REGB2 = TAG_Int(4);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-      once_value_8 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      once_value_8 = fra.me.REG[6];
       register_static_object(&once_value_8);
-    } else fra.me.REG[5] = once_value_8;
-    fra.me.REG[5] = fra.me.REG[5];
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    } else fra.me.REG[6] = once_value_8;
+    fra.me.REG[6] = fra.me.REG[6];
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      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:220 */
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-    /* ./compiling//compiling_global.nit:366 */
-    fra.me.REG[5] = CALL_standard___string___String_____star(fra.me.REG[5])(fra.me.REG[5], REGB2);
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:400 */
+    fra.me.REG[6] = CALL_standard___string___String_____star(fra.me.REG[6])(fra.me.REG[6], REGB2);
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
-  /* ./compiling//compiling_global.nit:368 */
+  /* ./compiling//compiling_global.nit:402 */
   CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:369 */
+  /* ./compiling//compiling_global.nit:403 */
   if (!once_value_9) {
-    fra.me.REG[5] = BOX_NativeString("};");
+    fra.me.REG[6] = BOX_NativeString("};");
     REGB2 = TAG_Int(2);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-    once_value_9 = fra.me.REG[5];
+    fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+    once_value_9 = fra.me.REG[6];
     register_static_object(&once_value_9);
-  } else fra.me.REG[5] = once_value_9;
-  fra.me.REG[5] = fra.me.REG[5];
-  CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./compiling//compiling_global.nit:370 */
-  fra.me.REG[3] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:231 */
-  fra.me.REG[5] = fra.me.REG[3];
-  /* ./../lib/standard//collection//array.nit:234 */
+  } else fra.me.REG[6] = once_value_9;
+  fra.me.REG[6] = fra.me.REG[6];
+  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 */
+  fra.me.REG[6] = fra.me.REG[4];
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
+    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);
     }
-    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ./compiling//compiling_global.nit:372 */
-      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:718 */
+      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);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_global.nit:373 */
+        /* ./compiling//compiling_global.nit:407 */
         if (!once_value_10) {
-          fra.me.REG[7] = BOX_NativeString("/* Instance Hole :( */");
+          fra.me.REG[8] = BOX_NativeString("/* Instance Hole :( */");
           REGB0 = TAG_Int(22);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-          once_value_10 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          once_value_10 = fra.me.REG[8];
           register_static_object(&once_value_10);
-        } else fra.me.REG[7] = once_value_10;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        } else fra.me.REG[8] = once_value_10;
+        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]);
       } else {
-        /* ./compiling//compiling_global.nit:375 */
-        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        /* ./compiling//compiling_global.nit:409 */
+        REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 375);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 409);
         }
-        fra.me.REG[4] = CALL_compiling___compiling_global___TableElt___compile_to_c(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[0]);
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label11;
     }
   }
   label11: while(0);
-  /* ./compiling//compiling_global.nit:379 */
-  fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_global.nit:380 */
-  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_global.nit:413 */
+  fra.me.REG[3] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./compiling//compiling_global.nit:414 */
+  fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
   if (!once_value_12) {
-    fra.me.REG[4] = BOX_NativeString("NativeArray");
+    fra.me.REG[5] = BOX_NativeString("NativeArray");
     REGB2 = TAG_Int(11);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-    once_value_12 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+    once_value_12 = fra.me.REG[5];
     register_static_object(&once_value_12);
-  } else fra.me.REG[4] = once_value_12;
-  fra.me.REG[4] = fra.me.REG[4];
-  fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-  REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[4]));
+  } else fra.me.REG[5] = once_value_12;
+  fra.me.REG[5] = fra.me.REG[5];
+  fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
+  REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[6],fra.me.REG[5]));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+    REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
     REGB2 = REGB0;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_global.nit:381 */
+    /* ./compiling//compiling_global.nit:415 */
     if (!once_value_13) {
-      fra.me.REG[4] = BOX_NativeString("val_t NEW_NativeArray(size_t length, size_t size) {");
+      fra.me.REG[5] = BOX_NativeString("val_t NEW_NativeArray(size_t length, size_t size) {");
       REGB2 = TAG_Int(51);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_13 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_13 = fra.me.REG[5];
       register_static_object(&once_value_13);
-    } else fra.me.REG[4] = once_value_13;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:382 */
+    } else fra.me.REG[5] = once_value_13;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:416 */
     CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./compiling//compiling_global.nit:383 */
+    /* ./compiling//compiling_global.nit:417 */
     if (!once_value_14) {
-      fra.me.REG[4] = BOX_NativeString("Nit_NativeArray array;");
+      fra.me.REG[5] = BOX_NativeString("Nit_NativeArray array;");
       REGB2 = TAG_Int(22);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_14 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_14 = fra.me.REG[5];
       register_static_object(&once_value_14);
-    } else fra.me.REG[4] = once_value_14;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:384 */
+    } else fra.me.REG[5] = once_value_14;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:418 */
     if (!once_value_15) {
-      fra.me.REG[4] = BOX_NativeString("array = (Nit_NativeArray)alloc(sizeof(struct Nit_NativeArray) + ((length - 1) * size));");
+      fra.me.REG[5] = BOX_NativeString("array = (Nit_NativeArray)alloc(sizeof(struct Nit_NativeArray) + ((length - 1) * size));");
       REGB2 = TAG_Int(87);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_15 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_15 = fra.me.REG[5];
       register_static_object(&once_value_15);
-    } else fra.me.REG[4] = once_value_15;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:385 */
+    } else fra.me.REG[5] = once_value_15;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:419 */
     REGB2 = TAG_Int(3);
-    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_16) {
-      fra.me.REG[5] = BOX_NativeString("array->vft = (classtable_elt_t*)VFT_");
+      fra.me.REG[6] = BOX_NativeString("array->vft = (classtable_elt_t*)VFT_");
       REGB2 = TAG_Int(36);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-      once_value_16 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      once_value_16 = fra.me.REG[6];
       register_static_object(&once_value_16);
-    } else fra.me.REG[5] = once_value_16;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    fra.me.REG[5] = CALL_compiling___compiling_base___MMLocalClass___cname(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[5]);
+    } else fra.me.REG[6] = once_value_16;
+    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[6] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     if (!once_value_17) {
-      fra.me.REG[5] = BOX_NativeString(";");
+      fra.me.REG[6] = BOX_NativeString(";");
       REGB2 = TAG_Int(1);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-      once_value_17 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+      once_value_17 = fra.me.REG[6];
       register_static_object(&once_value_17);
-    } else fra.me.REG[5] = once_value_17;
-    fra.me.REG[5] = fra.me.REG[5];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:386 */
+    } else fra.me.REG[6] = once_value_17;
+    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]);
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:420 */
     if (!once_value_18) {
-      fra.me.REG[4] = BOX_NativeString("array->object_id = object_id_counter;");
+      fra.me.REG[5] = BOX_NativeString("array->object_id = object_id_counter;");
       REGB2 = TAG_Int(37);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_18 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_18 = fra.me.REG[5];
       register_static_object(&once_value_18);
-    } else fra.me.REG[4] = once_value_18;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:387 */
+    } else fra.me.REG[5] = once_value_18;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:421 */
     if (!once_value_19) {
-      fra.me.REG[4] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
+      fra.me.REG[5] = 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);
-      once_value_19 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_19 = fra.me.REG[5];
       register_static_object(&once_value_19);
-    } else fra.me.REG[4] = once_value_19;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:388 */
+    } else fra.me.REG[5] = once_value_19;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:422 */
     if (!once_value_20) {
-      fra.me.REG[4] = BOX_NativeString("array->size = length;");
+      fra.me.REG[5] = BOX_NativeString("array->size = length;");
       REGB2 = TAG_Int(21);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_20 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_20 = fra.me.REG[5];
       register_static_object(&once_value_20);
-    } else fra.me.REG[4] = once_value_20;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:389 */
+    } else fra.me.REG[5] = once_value_20;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:423 */
     if (!once_value_21) {
-      fra.me.REG[4] = BOX_NativeString("return OBJ2VAL(array);");
+      fra.me.REG[5] = BOX_NativeString("return OBJ2VAL(array);");
       REGB2 = TAG_Int(22);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_21 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_21 = fra.me.REG[5];
       register_static_object(&once_value_21);
-    } else fra.me.REG[4] = once_value_21;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_global.nit:390 */
+    } else fra.me.REG[5] = once_value_21;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./compiling//compiling_global.nit:424 */
     CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./compiling//compiling_global.nit:391 */
+    /* ./compiling//compiling_global.nit:425 */
     if (!once_value_22) {
-      fra.me.REG[4] = BOX_NativeString("}");
+      fra.me.REG[5] = BOX_NativeString("}");
       REGB2 = TAG_Int(1);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-      once_value_22 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+      once_value_22 = fra.me.REG[5];
       register_static_object(&once_value_22);
-    } else fra.me.REG[4] = once_value_22;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_22;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   } else {
-    /* ./compiling//compiling_global.nit:392 */
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    /* ./compiling//compiling_global.nit:426 */
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(false);
         REGB2 = REGB0;
       } else {
-        REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
         REGB2 = REGB0;
       }
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_global.nit:395 */
+      /* ./compiling//compiling_global.nit:429 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_23) {
-        fra.me.REG[5] = BOX_NativeString("INIT_ATTRIBUTES__");
+        fra.me.REG[6] = BOX_NativeString("INIT_ATTRIBUTES__");
         REGB2 = TAG_Int(17);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_23 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_23 = fra.me.REG[6];
         register_static_object(&once_value_23);
-      } else fra.me.REG[5] = once_value_23;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[5] = CALL_compiling___compiling_base___MMLocalClass___cname(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[5]);
+      } else fra.me.REG[6] = once_value_23;
+      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[6] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
       if (!once_value_24) {
-        fra.me.REG[5] = BOX_NativeString("");
+        fra.me.REG[6] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_24 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_24 = fra.me.REG[6];
         register_static_object(&once_value_24);
-      } else fra.me.REG[5] = once_value_24;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./compiling//compiling_global.nit:396 */
-      fra.me.REG[5] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
+      } else fra.me.REG[6] = once_value_24;
+      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]);
+      /* ./compiling//compiling_global.nit:430 */
+      fra.me.REG[6] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[2])(fra.me.REG[2]);
       REGB2 = TAG_Int(3);
-      fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_25) {
-        fra.me.REG[6] = BOX_NativeString("init var of ");
+        fra.me.REG[7] = BOX_NativeString("init var of ");
         REGB2 = TAG_Int(12);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-        once_value_25 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        once_value_25 = fra.me.REG[7];
         register_static_object(&once_value_25);
-      } else fra.me.REG[6] = once_value_25;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+      } else fra.me.REG[7] = once_value_25;
+      fra.me.REG[7] = fra.me.REG[7];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
+      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
       if (!once_value_26) {
-        fra.me.REG[6] = BOX_NativeString("");
+        fra.me.REG[7] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-        once_value_26 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
+        once_value_26 = fra.me.REG[7];
         register_static_object(&once_value_26);
-      } else fra.me.REG[6] = once_value_26;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      } else fra.me.REG[7] = once_value_26;
+      fra.me.REG[7] = fra.me.REG[7];
+      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]);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 396);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 430);
       }
-      fra.me.REG[7] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[4], fra.me.REG[7], NIT_NULL, NIT_NULL);
-      /* ./compiling//compiling_global.nit:397 */
-      fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:398 */
-      fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-      /* ./compiling//compiling_global.nit:399 */
-      fra.me.REG[6] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
-      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      fra.me.REG[8] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[5], fra.me.REG[8], NIT_NULL, NIT_NULL);
+      /* ./compiling//compiling_global.nit:431 */
+      fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//compiling_global.nit:432 */
+      fra.me.REG[7] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[7] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[7])(fra.me.REG[7]);
+      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+      /* ./compiling//compiling_global.nit:433 */
+      fra.me.REG[7] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 399);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 433);
       }
-      CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[4], fra.me.REG[7]);
-      /* ./compiling//compiling_global.nit:400 */
-      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:401 */
+      CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1], fra.me.REG[5], fra.me.REG[8]);
+      /* ./compiling//compiling_global.nit:434 */
+      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:435 */
       CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:402 */
+      /* ./compiling//compiling_global.nit:436 */
       if (!once_value_27) {
-        fra.me.REG[5] = BOX_NativeString("}");
+        fra.me.REG[6] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_27 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_27 = fra.me.REG[6];
         register_static_object(&once_value_27);
-      } else fra.me.REG[5] = once_value_27;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:406 */
+      } else fra.me.REG[6] = once_value_27;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:440 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_28) {
-        fra.me.REG[7] = BOX_NativeString("val_t NEW_");
+        fra.me.REG[8] = BOX_NativeString("val_t NEW_");
         REGB2 = TAG_Int(10);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_28 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_28 = fra.me.REG[8];
         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[5])(fra.me.REG[5], fra.me.REG[7]);
-      fra.me.REG[7] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_28;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      fra.me.REG[8] = CALL_compiling___compiling_base___MMLocalClass___cname(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[8]);
       if (!once_value_29) {
-        fra.me.REG[7] = BOX_NativeString("(void);");
+        fra.me.REG[8] = BOX_NativeString("(void);");
         REGB2 = TAG_Int(7);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_29 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_29 = fra.me.REG[8];
         register_static_object(&once_value_29);
-      } else fra.me.REG[7] = once_value_29;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:407 */
+      } else fra.me.REG[8] = once_value_29;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:441 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_30) {
-        fra.me.REG[7] = BOX_NativeString("val_t NEW_");
+        fra.me.REG[8] = BOX_NativeString("val_t NEW_");
         REGB2 = TAG_Int(10);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_30 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_30 = fra.me.REG[8];
         register_static_object(&once_value_30);
-      } else fra.me.REG[7] = once_value_30;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-      fra.me.REG[7] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_30;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      fra.me.REG[8] = CALL_compiling___compiling_base___MMLocalClass___cname(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[8]);
       if (!once_value_31) {
-        fra.me.REG[7] = BOX_NativeString("(void)");
+        fra.me.REG[8] = BOX_NativeString("(void)");
         REGB2 = TAG_Int(6);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_31 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_31 = fra.me.REG[8];
         register_static_object(&once_value_31);
-      } else fra.me.REG[7] = once_value_31;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:408 */
+      } else fra.me.REG[8] = once_value_31;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:442 */
       if (!once_value_32) {
-        fra.me.REG[5] = BOX_NativeString("{");
+        fra.me.REG[6] = BOX_NativeString("{");
         REGB2 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_32 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_32 = fra.me.REG[6];
         register_static_object(&once_value_32);
-      } else fra.me.REG[5] = once_value_32;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:409 */
+      } else fra.me.REG[6] = once_value_32;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:443 */
       CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:410 */
+      /* ./compiling//compiling_global.nit:444 */
       if (!once_value_33) {
-        fra.me.REG[5] = BOX_NativeString("obj_t obj;");
+        fra.me.REG[6] = BOX_NativeString("obj_t obj;");
         REGB2 = TAG_Int(10);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_33 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_33 = fra.me.REG[6];
         register_static_object(&once_value_33);
-      } else fra.me.REG[5] = once_value_33;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:411 */
+      } else fra.me.REG[6] = once_value_33;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:445 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_34) {
-        fra.me.REG[7] = BOX_NativeString("obj = alloc(sizeof(val_t) * ");
+        fra.me.REG[8] = BOX_NativeString("obj = alloc(sizeof(val_t) * ");
         REGB2 = TAG_Int(28);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_34 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_34 = fra.me.REG[8];
         register_static_object(&once_value_34);
-      } else fra.me.REG[7] = once_value_34;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+      } else fra.me.REG[8] = once_value_34;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      /* ./../lib/standard//collection//array.nit:24 */
+      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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
-      REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./compiling//compiling_global.nit:411 */
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+      REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+      /* ./compiling//compiling_global.nit:445 */
+      fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
       if (!once_value_35) {
-        fra.me.REG[3] = BOX_NativeString(");");
+        fra.me.REG[4] = BOX_NativeString(");");
         REGB2 = TAG_Int(2);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_35 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_35 = fra.me.REG[4];
         register_static_object(&once_value_35);
-      } else fra.me.REG[3] = once_value_35;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:412 */
+      } else fra.me.REG[4] = once_value_35;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:446 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_36) {
-        fra.me.REG[3] = BOX_NativeString("obj->vft = (classtable_elt_t*)VFT_");
+        fra.me.REG[4] = BOX_NativeString("obj->vft = (classtable_elt_t*)VFT_");
         REGB2 = TAG_Int(34);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_36 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_36 = fra.me.REG[4];
         register_static_object(&once_value_36);
-      } else fra.me.REG[3] = once_value_36;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+      } else fra.me.REG[4] = once_value_36;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      fra.me.REG[4] = CALL_compiling___compiling_base___MMLocalClass___cname(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[4]);
       if (!once_value_37) {
-        fra.me.REG[3] = BOX_NativeString(";");
+        fra.me.REG[4] = BOX_NativeString(";");
         REGB2 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_37 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_37 = fra.me.REG[4];
         register_static_object(&once_value_37);
-      } else fra.me.REG[3] = once_value_37;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:413 */
+      } else fra.me.REG[4] = once_value_37;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:447 */
       if (!once_value_38) {
-        fra.me.REG[5] = BOX_NativeString("obj[1].object_id = object_id_counter;");
+        fra.me.REG[6] = BOX_NativeString("obj[1].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);
-        once_value_38 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_38 = fra.me.REG[6];
         register_static_object(&once_value_38);
-      } else fra.me.REG[5] = once_value_38;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:414 */
+      } else fra.me.REG[6] = once_value_38;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:448 */
       if (!once_value_39) {
-        fra.me.REG[5] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
+        fra.me.REG[6] = 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);
-        once_value_39 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_39 = fra.me.REG[6];
         register_static_object(&once_value_39);
-      } else fra.me.REG[5] = once_value_39;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:415 */
+      } else fra.me.REG[6] = once_value_39;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:449 */
       if (!once_value_40) {
-        fra.me.REG[5] = BOX_NativeString("return OBJ2VAL(obj);");
+        fra.me.REG[6] = BOX_NativeString("return OBJ2VAL(obj);");
         REGB2 = TAG_Int(20);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_40 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_40 = fra.me.REG[6];
         register_static_object(&once_value_40);
-      } else fra.me.REG[5] = once_value_40;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:416 */
+      } else fra.me.REG[6] = once_value_40;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:450 */
       CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:417 */
+      /* ./compiling//compiling_global.nit:451 */
       if (!once_value_41) {
-        fra.me.REG[5] = BOX_NativeString("}");
+        fra.me.REG[6] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-        once_value_41 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+        once_value_41 = fra.me.REG[6];
         register_static_object(&once_value_41);
-      } else fra.me.REG[5] = once_value_41;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:421 */
+      } else fra.me.REG[6] = once_value_41;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:455 */
       REGB2 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_42) {
-        fra.me.REG[3] = BOX_NativeString("CHECKNEW_");
+        fra.me.REG[4] = BOX_NativeString("CHECKNEW_");
         REGB2 = TAG_Int(9);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_42 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_42 = fra.me.REG[4];
         register_static_object(&once_value_42);
-      } else fra.me.REG[3] = once_value_42;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+      } else fra.me.REG[4] = once_value_42;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      fra.me.REG[4] = CALL_compiling___compiling_base___MMLocalClass___cname(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[4]);
       if (!once_value_43) {
-        fra.me.REG[3] = BOX_NativeString("");
+        fra.me.REG[4] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_43 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_43 = fra.me.REG[4];
         register_static_object(&once_value_43);
-      } else fra.me.REG[3] = once_value_43;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./compiling//compiling_global.nit:422 */
-      fra.me.REG[3] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
+      } else fra.me.REG[4] = once_value_43;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      /* ./compiling//compiling_global.nit:456 */
+      fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[2])(fra.me.REG[2]);
       REGB2 = TAG_Int(3);
-      fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_44) {
-        fra.me.REG[4] = BOX_NativeString("check new ");
+        fra.me.REG[5] = BOX_NativeString("check new ");
         REGB2 = TAG_Int(10);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-        once_value_44 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        once_value_44 = fra.me.REG[5];
         register_static_object(&once_value_44);
-      } else fra.me.REG[4] = once_value_44;
-      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]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
-      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]);
+      } else fra.me.REG[5] = once_value_44;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
       if (!once_value_45) {
-        fra.me.REG[4] = BOX_NativeString("");
+        fra.me.REG[5] = BOX_NativeString("");
         REGB2 = TAG_Int(0);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-        once_value_45 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
+        once_value_45 = fra.me.REG[5];
         register_static_object(&once_value_45);
-      } else fra.me.REG[4] = once_value_45;
-      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]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      } else fra.me.REG[5] = once_value_45;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 422);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 456);
       }
-      fra.me.REG[7] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[5], fra.me.REG[7], NIT_NULL, NIT_NULL);
-      /* ./compiling//compiling_global.nit:423 */
-      fra.me.REG[3] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:424 */
-      fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[4])(fra.me.REG[4]);
-      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* ./compiling//compiling_global.nit:425 */
-      fra.me.REG[4] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      fra.me.REG[8] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[6], fra.me.REG[8], NIT_NULL, NIT_NULL);
+      /* ./compiling//compiling_global.nit:457 */
+      fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//compiling_global.nit:458 */
+      fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[5] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+      /* ./compiling//compiling_global.nit:459 */
+      fra.me.REG[5] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 425);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 459);
       }
-      CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5], fra.me.REG[7]);
-      /* ./compiling//compiling_global.nit:426 */
-      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ./compiling//compiling_global.nit:427 */
+      CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6], fra.me.REG[8]);
+      /* ./compiling//compiling_global.nit:460 */
+      CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+      /* ./compiling//compiling_global.nit:461 */
       CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_global.nit:428 */
+      /* ./compiling//compiling_global.nit:462 */
       if (!once_value_46) {
-        fra.me.REG[3] = BOX_NativeString("}");
+        fra.me.REG[4] = BOX_NativeString("}");
         REGB2 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-        once_value_46 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+        once_value_46 = fra.me.REG[4];
         register_static_object(&once_value_46);
-      } else fra.me.REG[3] = once_value_46;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ./compiling//compiling_global.nit:431 */
-      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___greaters(fra.me.REG[3])(fra.me.REG[3]);
-      REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
+      } else fra.me.REG[4] = once_value_46;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+      /* ./compiling//compiling_global.nit:465 */
+      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
+      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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./compiling//compiling_global.nit:432 */
+      /* ./compiling//compiling_global.nit:466 */
       REGB2 = TAG_Int(5);
-      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_47) {
-        fra.me.REG[7] = BOX_NativeString("int init_table[");
+        fra.me.REG[8] = BOX_NativeString("int init_table[");
         REGB2 = TAG_Int(15);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_47 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_47 = fra.me.REG[8];
         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[3])(fra.me.REG[3], fra.me.REG[7]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_47;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+      fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
       if (!once_value_48) {
-        fra.me.REG[7] = BOX_NativeString("] = {0");
+        fra.me.REG[8] = BOX_NativeString("] = {0");
         REGB2 = TAG_Int(6);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_48 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_48 = fra.me.REG[8];
         register_static_object(&once_value_48);
-      } else fra.me.REG[7] = once_value_48;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_48;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
       if (!once_value_49) {
-        fra.me.REG[7] = BOX_NativeString(", 0");
+        fra.me.REG[8] = BOX_NativeString(", 0");
         REGB2 = TAG_Int(3);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_49 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_49 = fra.me.REG[8];
         register_static_object(&once_value_49);
-      } else fra.me.REG[7] = once_value_49;
-      fra.me.REG[7] = fra.me.REG[7];
+      } else fra.me.REG[8] = once_value_49;
+      fra.me.REG[8] = fra.me.REG[8];
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-      /* ./compiling//compiling_global.nit:432 */
-      fra.me.REG[7] = CALL_standard___string___String_____star(fra.me.REG[7])(fra.me.REG[7], REGB2);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      /* ./compiling//compiling_global.nit:466 */
+      fra.me.REG[8] = CALL_standard___string___String_____star(fra.me.REG[8])(fra.me.REG[8], REGB2);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
       if (!once_value_50) {
-        fra.me.REG[7] = BOX_NativeString("};");
+        fra.me.REG[8] = BOX_NativeString("};");
         REGB2 = TAG_Int(2);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-        once_value_50 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+        once_value_50 = fra.me.REG[8];
         register_static_object(&once_value_50);
-      } else fra.me.REG[7] = once_value_50;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./compiling//compiling_global.nit:434 */
-      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_compiling___compiling_global___MMLocalClass___compile_tables_to_c_51));
+      } else fra.me.REG[8] = once_value_50;
+      fra.me.REG[8] = fra.me.REG[8];
+      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]);
+      /* ./compiling//compiling_global.nit:468 */
+      fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_compiling___compiling_global___MMLocalClass___compile_tables_to_c_51));
     } else {
-      /* ./compiling//compiling_global.nit:451 */
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./compiling//compiling_global.nit:485 */
+      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 451);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 485);
       }
-      REGB2 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = CALL_primitive_info___PrimitiveInfo___tagged(fra.me.REG[3])(fra.me.REG[3]);
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//compiling_global.nit:452 */
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* ./compiling//compiling_global.nit:486 */
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 452);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 486);
         }
-        fra.me.REG[2] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[2])(fra.me.REG[2]);
-        /* ./compiling//compiling_global.nit:453 */
+        fra.me.REG[3] = CALL_primitive_info___PrimitiveInfo___cname(fra.me.REG[3])(fra.me.REG[3]);
+        /* ./compiling//compiling_global.nit:487 */
         REGB2 = TAG_Int(3);
-        fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_62) {
-          fra.me.REG[7] = BOX_NativeString("struct TBOX_");
+          fra.me.REG[4] = BOX_NativeString("struct TBOX_");
           REGB2 = TAG_Int(12);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_62 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_62 = fra.me.REG[4];
           register_static_object(&once_value_62);
-        } else fra.me.REG[7] = once_value_62;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+        } else fra.me.REG[4] = once_value_62;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+        fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
+        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[0])(fra.me.REG[0], fra.me.REG[4]);
         if (!once_value_63) {
-          fra.me.REG[7] = BOX_NativeString("");
+          fra.me.REG[4] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_63 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_63 = fra.me.REG[4];
           register_static_object(&once_value_63);
-        } else fra.me.REG[7] = once_value_63;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-        fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-        /* ./compiling//compiling_global.nit:454 */
+        } else fra.me.REG[4] = once_value_63;
+        fra.me.REG[4] = fra.me.REG[4];
+        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]);
+        /* ./compiling//compiling_global.nit:488 */
         REGB2 = TAG_Int(5);
-        fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_64) {
-          fra.me.REG[5] = BOX_NativeString("val_t BOX_");
+          fra.me.REG[8] = BOX_NativeString("val_t BOX_");
           REGB2 = TAG_Int(10);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_64 = fra.me.REG[5];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+          once_value_64 = fra.me.REG[8];
           register_static_object(&once_value_64);
-        } else fra.me.REG[5] = once_value_64;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
-        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+        } else fra.me.REG[8] = once_value_64;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
+        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[4])(fra.me.REG[4], fra.me.REG[8]);
         if (!once_value_65) {
-          fra.me.REG[5] = BOX_NativeString("(");
+          fra.me.REG[8] = BOX_NativeString("(");
           REGB2 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_65 = fra.me.REG[5];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+          once_value_65 = fra.me.REG[8];
           register_static_object(&once_value_65);
-        } else fra.me.REG[5] = once_value_65;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
+        } else fra.me.REG[8] = once_value_65;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         if (!once_value_66) {
-          fra.me.REG[2] = BOX_NativeString(" val) {");
+          fra.me.REG[3] = BOX_NativeString(" val) {");
           REGB2 = TAG_Int(7);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-          once_value_66 = fra.me.REG[2];
+          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          once_value_66 = fra.me.REG[3];
           register_static_object(&once_value_66);
-        } else fra.me.REG[2] = once_value_66;
-        fra.me.REG[2] = fra.me.REG[2];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
-        fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:455 */
+        } else fra.me.REG[3] = once_value_66;
+        fra.me.REG[3] = fra.me.REG[3];
+        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_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:489 */
         CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./compiling//compiling_global.nit:456 */
+        /* ./compiling//compiling_global.nit:490 */
         REGB2 = TAG_Int(7);
-        fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_67) {
-          fra.me.REG[2] = BOX_NativeString("");
+          fra.me.REG[3] = BOX_NativeString("");
           REGB2 = TAG_Int(0);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-          once_value_67 = fra.me.REG[2];
+          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          once_value_67 = fra.me.REG[3];
           register_static_object(&once_value_67);
-        } else fra.me.REG[2] = once_value_67;
-        fra.me.REG[2] = fra.me.REG[2];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+        } else fra.me.REG[3] = once_value_67;
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         if (!once_value_68) {
-          fra.me.REG[2] = BOX_NativeString(" *box = (");
+          fra.me.REG[3] = BOX_NativeString(" *box = (");
           REGB2 = TAG_Int(9);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-          once_value_68 = fra.me.REG[2];
+          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          once_value_68 = fra.me.REG[3];
           register_static_object(&once_value_68);
-        } else fra.me.REG[2] = once_value_68;
-        fra.me.REG[2] = fra.me.REG[2];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+        } else fra.me.REG[3] = once_value_68;
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         if (!once_value_69) {
-          fra.me.REG[2] = BOX_NativeString("*)alloc(sizeof(");
+          fra.me.REG[3] = BOX_NativeString("*)alloc(sizeof(");
           REGB2 = TAG_Int(15);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
-          once_value_69 = fra.me.REG[2];
+          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+          once_value_69 = fra.me.REG[3];
           register_static_object(&once_value_69);
-        } else fra.me.REG[2] = once_value_69;
-        fra.me.REG[2] = fra.me.REG[2];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+        } else fra.me.REG[3] = once_value_69;
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         if (!once_value_70) {
-          fra.me.REG[3] = BOX_NativeString("));");
+          fra.me.REG[0] = BOX_NativeString("));");
           REGB2 = TAG_Int(3);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-          once_value_70 = fra.me.REG[3];
+          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+          once_value_70 = fra.me.REG[0];
           register_static_object(&once_value_70);
-        } else fra.me.REG[3] = once_value_70;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-        fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:457 */
+        } else fra.me.REG[0] = once_value_70;
+        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]);
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:491 */
         REGB2 = TAG_Int(3);
-        fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_71) {
-          fra.me.REG[3] = BOX_NativeString("box->vft = VFT_");
+          fra.me.REG[0] = BOX_NativeString("box->vft = VFT_");
           REGB2 = TAG_Int(15);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-          once_value_71 = fra.me.REG[3];
+          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+          once_value_71 = fra.me.REG[0];
           register_static_object(&once_value_71);
-        } else fra.me.REG[3] = once_value_71;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-        fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+        } else fra.me.REG[0] = once_value_71;
+        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[2] = CALL_compiling___compiling_base___MMLocalClass___cname(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[2]);
         if (!once_value_72) {
-          fra.me.REG[0] = BOX_NativeString(";");
+          fra.me.REG[2] = BOX_NativeString(";");
           REGB2 = TAG_Int(1);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
-          once_value_72 = fra.me.REG[0];
+          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+          once_value_72 = fra.me.REG[2];
           register_static_object(&once_value_72);
-        } else fra.me.REG[0] = once_value_72;
-        fra.me.REG[0] = fra.me.REG[0];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
-        fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:458 */
+        } else fra.me.REG[2] = once_value_72;
+        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[2]);
+        fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:492 */
         if (!once_value_73) {
-          fra.me.REG[7] = BOX_NativeString("box->val = val;");
+          fra.me.REG[4] = BOX_NativeString("box->val = val;");
           REGB2 = TAG_Int(15);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_73 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_73 = fra.me.REG[4];
           register_static_object(&once_value_73);
-        } else fra.me.REG[7] = once_value_73;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:459 */
+        } else fra.me.REG[4] = once_value_73;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:493 */
         if (!once_value_74) {
-          fra.me.REG[7] = BOX_NativeString("box->object_id = object_id_counter;");
+          fra.me.REG[4] = BOX_NativeString("box->object_id = object_id_counter;");
           REGB2 = TAG_Int(35);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_74 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_74 = fra.me.REG[4];
           register_static_object(&once_value_74);
-        } else fra.me.REG[7] = once_value_74;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:460 */
+        } else fra.me.REG[4] = once_value_74;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:494 */
         if (!once_value_75) {
-          fra.me.REG[7] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
+          fra.me.REG[4] = BOX_NativeString("object_id_counter = object_id_counter + 1;");
           REGB2 = TAG_Int(42);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_75 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_75 = fra.me.REG[4];
           register_static_object(&once_value_75);
-        } else fra.me.REG[7] = once_value_75;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:461 */
+        } else fra.me.REG[4] = once_value_75;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:495 */
         if (!once_value_76) {
-          fra.me.REG[7] = BOX_NativeString("return OBJ2VAL(box);");
+          fra.me.REG[4] = BOX_NativeString("return OBJ2VAL(box);");
           REGB2 = TAG_Int(20);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_76 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_76 = fra.me.REG[4];
           register_static_object(&once_value_76);
-        } else fra.me.REG[7] = once_value_76;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-        /* ./compiling//compiling_global.nit:462 */
+        } else fra.me.REG[4] = once_value_76;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+        /* ./compiling//compiling_global.nit:496 */
         CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./compiling//compiling_global.nit:463 */
+        /* ./compiling//compiling_global.nit:497 */
         if (!once_value_77) {
-          fra.me.REG[7] = BOX_NativeString("}");
+          fra.me.REG[4] = BOX_NativeString("}");
           REGB2 = TAG_Int(1);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-          once_value_77 = fra.me.REG[7];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_77 = fra.me.REG[4];
           register_static_object(&once_value_77);
-        } else fra.me.REG[7] = once_value_77;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        } else fra.me.REG[4] = once_value_77;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
       }
     }
   }
@@ -4080,22 +4531,22 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         fra.me.closure_funs = CREG;
         fra.me.REG[0] = p0;
         CREG[0] = clos_fun0;
-        /* ./compiling//compiling_global.nit:435 */
-        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
-        /* ./compiling//compiling_global.nit:437 */
+        /* ./compiling//compiling_global.nit:469 */
+        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+        /* ./compiling//compiling_global.nit:471 */
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-        REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[0]);
+        REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[1])(fra.me.REG[1], closctx->REG[2]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
           goto label52;
         }
-        /* ./compiling//compiling_global.nit:438 */
+        /* ./compiling//compiling_global.nit:472 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_global, 438);
+          nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_global, 472);
         }
-        /* ./compiling//compiling_global.nit:440 */
+        /* ./compiling//compiling_global.nit:474 */
         REGB0 = TAG_Int(5);
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_53) {
@@ -4107,7 +4558,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         } else fra.me.REG[2] = once_value_53;
         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[2] = CALL_standard___string___Object___to_s(closctx->REG[0])(closctx->REG[0]);
+        fra.me.REG[2] = CALL_standard___string___Object___to_s(closctx->REG[2])(closctx->REG[2]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
         if (!once_value_54) {
           fra.me.REG[2] = BOX_NativeString("_");
@@ -4132,8 +4583,8 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         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[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./compiling//compiling_global.nit:441 */
-        fra.me.REG[2] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[0])(closctx->REG[0]);
+        /* ./compiling//compiling_global.nit:475 */
+        fra.me.REG[2] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
         REGB0 = TAG_Int(5);
         fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4146,7 +4597,7 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         } else fra.me.REG[4] = once_value_56;
         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[4] = CALL_standard___string___Object___to_s(closctx->REG[0])(closctx->REG[0]);
+        fra.me.REG[4] = CALL_standard___string___Object___to_s(closctx->REG[2])(closctx->REG[2]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
         if (!once_value_57) {
           fra.me.REG[4] = BOX_NativeString(" ");
@@ -4171,31 +4622,31 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
         REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 441);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 475);
         }
         fra.me.REG[3] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[2])(fra.me.REG[2], closctx->REG[1], fra.me.REG[1], fra.me.REG[3], NIT_NULL, NIT_NULL);
-        /* ./compiling//compiling_global.nit:442 */
+        /* ./compiling//compiling_global.nit:476 */
         fra.me.REG[2] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(closctx->REG[1])(closctx->REG[1]);
-        /* ./compiling//compiling_global.nit:443 */
+        /* ./compiling//compiling_global.nit:477 */
         fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___writer(closctx->REG[1])(closctx->REG[1]);
         fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[4])(fra.me.REG[4]);
         CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(closctx->REG[1])(closctx->REG[1], fra.me.REG[4]);
-        /* ./compiling//compiling_global.nit:444 */
-        CALL_compiling___compiling_base___CompilerVisitor___add_instr(closctx->REG[1])(closctx->REG[1], closctx->REG[3]);
-        /* ./compiling//compiling_global.nit:445 */
-        fra.me.REG[4] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[0])(closctx->REG[0]);
+        /* ./compiling//compiling_global.nit:478 */
+        CALL_compiling___compiling_base___CompilerVisitor___add_instr(closctx->REG[1])(closctx->REG[1], closctx->REG[4]);
+        /* ./compiling//compiling_global.nit:479 */
+        fra.me.REG[4] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 445);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 479);
         }
         fra.me.REG[3] = CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], fra.me.REG[1], fra.me.REG[3]);
         REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_global, 445);
+          nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_global, 479);
         }
-        /* ./compiling//compiling_global.nit:446 */
+        /* ./compiling//compiling_global.nit:480 */
         REGB0 = TAG_Int(3);
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_59) {
@@ -4219,11 +4670,11 @@ void compiling___compiling_global___MMLocalClass___compile_tables_to_c(val_t p0,
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
         fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
         CALL_compiling___compiling_base___CompilerVisitor___add_instr(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
-        /* ./compiling//compiling_global.nit:447 */
+        /* ./compiling//compiling_global.nit:481 */
         CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
-        /* ./compiling//compiling_global.nit:448 */
+        /* ./compiling//compiling_global.nit:482 */
         CALL_compiling___compiling_base___CompilerVisitor___unindent(closctx->REG[1])(closctx->REG[1]);
-        /* ./compiling//compiling_global.nit:449 */
+        /* ./compiling//compiling_global.nit:483 */
         if (!once_value_61) {
           fra.me.REG[2] = BOX_NativeString("}");
           REGB0 = TAG_Int(1);
@@ -4259,7 +4710,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   static val_t once_value_15; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_global;
-  fra.me.line = 469;
+  fra.me.line = 503;
   fra.me.meth = LOCATE_compiling___compiling_global___MMMethod___compile_property_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -4274,9 +4725,9 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_global.nit:471 */
+  /* ./compiling//compiling_global.nit:505 */
   fra.me.REG[2] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_global.nit:472 */
+  /* ./compiling//compiling_global.nit:506 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4292,11 +4743,11 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_global, 472);
+    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_global, 506);
   }
-  /* ./compiling//compiling_global.nit:474 */
+  /* ./compiling//compiling_global.nit:508 */
   fra.me.REG[3] = NIT_NULL;
-  /* ./compiling//compiling_global.nit:475 */
+  /* ./compiling//compiling_global.nit:509 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
@@ -4310,33 +4761,33 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     fra.me.REG[4] = fra.me.REG[4];
     fra.me.REG[3] = fra.me.REG[4];
   }
-  /* ./compiling//compiling_global.nit:476 */
+  /* ./compiling//compiling_global.nit:510 */
   fra.me.REG[4] = CALL_compiling___compiling_base___MMLocalProperty___cname(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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_compiling___compiling_global, 476);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 510);
   }
   fra.me.REG[3] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], fra.me.REG[5], NIT_NULL, fra.me.REG[3]);
-  /* ./compiling//compiling_global.nit:477 */
+  /* ./compiling//compiling_global.nit:511 */
   fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:478 */
+  /* ./compiling//compiling_global.nit:512 */
   fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_base___CompilerVisitor___writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_global.nit:479 */
+  /* ./compiling//compiling_global.nit:513 */
   fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:480 */
+  /* ./compiling//compiling_global.nit:514 */
   fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[6])(fra.me.REG[6]);
   CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ./compiling//compiling_global.nit:482 */
+  /* ./compiling//compiling_global.nit:516 */
   fra.me.REG[6] = NIT_NULL;
-  /* ./compiling//compiling_global.nit:483 */
+  /* ./compiling//compiling_global.nit:517 */
   fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_global.nit:484 */
+    /* ./compiling//compiling_global.nit:518 */
     REGB0 = TAG_Int(3);
     fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -4362,7 +4813,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     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]);
     fra.me.REG[6] = fra.me.REG[7];
-    /* ./compiling//compiling_global.nit:485 */
+    /* ./compiling//compiling_global.nit:519 */
     REGB0 = TAG_Int(7);
     fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -4410,7 +4861,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     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_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-    /* ./compiling//compiling_global.nit:486 */
+    /* ./compiling//compiling_global.nit:520 */
     REGB0 = TAG_Int(3);
     fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_8) {
@@ -4435,14 +4886,14 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
     CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   }
-  /* ./compiling//compiling_global.nit:489 */
+  /* ./compiling//compiling_global.nit:523 */
   fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___cname(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_compiling___compiling_global, 489);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_global, 523);
   }
   fra.me.REG[3] = CALL_compiling___compiling_icode___IRoutine___compile_to_c(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-  /* ./compiling//compiling_global.nit:491 */
+  /* ./compiling//compiling_global.nit:525 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4457,7 +4908,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_global.nit:492 */
+    /* ./compiling//compiling_global.nit:526 */
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_10) {
@@ -4482,7 +4933,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_global.nit:494 */
+  /* ./compiling//compiling_global.nit:528 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4496,7 +4947,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_global.nit:495 */
+    /* ./compiling//compiling_global.nit:529 */
     if (!once_value_12) {
       fra.me.REG[0] = BOX_NativeString("return;");
       REGB0 = TAG_Int(7);
@@ -4507,7 +4958,7 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* ./compiling//compiling_global.nit:497 */
+    /* ./compiling//compiling_global.nit:531 */
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_13) {
@@ -4532,9 +4983,9 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_global.nit:499 */
+  /* ./compiling//compiling_global.nit:533 */
   CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_global.nit:500 */
+  /* ./compiling//compiling_global.nit:534 */
   if (!once_value_15) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -4544,9 +4995,9 @@ void compiling___compiling_global___MMMethod___compile_property_to_c(val_t p0, v
   } else fra.me.REG[0] = once_value_15;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_base___CompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_global.nit:502 */
+  /* ./compiling//compiling_global.nit:536 */
   CALL_compiling___compiling_base___CompilerVisitor___writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./compiling//compiling_global.nit:503 */
+  /* ./compiling//compiling_global.nit:537 */
   CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   return;
index f73cccf..4341415 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/compiling_global. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/compiling_global. */
 #ifndef compiling___compiling_global_sep
 #define compiling___compiling_global_sep
 #include "compiling___table_computation._sep.h"
@@ -82,6 +82,20 @@ static const char * const LOCATE_compiling___compiling_global___TableEltSuper___
 val_t compiling___compiling_global___TableEltSuper___compile_to_c(val_t p0, val_t p1, val_t p2);
 typedef val_t (*compiling___compiling_global___TableEltSuper___compile_to_c_t)(val_t p0, val_t p1, val_t p2);
 val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(val_t p0);
+static const char * const LOCATE_compiling___compiling_global___TableEltVTClassColor___compile_macros = "compiling_global::TableEltVTClassColor::(compiling_global::AbsTableElt::compile_macros)";
+void compiling___compiling_global___TableEltVTClassColor___compile_macros(val_t p0, val_t p1, val_t p2);
+typedef void (*compiling___compiling_global___TableEltVTClassColor___compile_macros_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_compiling___compiling_global___TableEltVTClassColor___compile_to_c = "compiling_global::TableEltVTClassColor::(compiling_global::TableElt::compile_to_c)";
+val_t compiling___compiling_global___TableEltVTClassColor___compile_to_c(val_t p0, val_t p1, val_t p2);
+typedef val_t (*compiling___compiling_global___TableEltVTClassColor___compile_to_c_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0);
+static const char * const LOCATE_compiling___compiling_global___TableEltVTClassId___compile_macros = "compiling_global::TableEltVTClassId::(compiling_global::AbsTableElt::compile_macros)";
+void compiling___compiling_global___TableEltVTClassId___compile_macros(val_t p0, val_t p1, val_t p2);
+typedef void (*compiling___compiling_global___TableEltVTClassId___compile_macros_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_compiling___compiling_global___TableEltVTClassId___compile_to_c = "compiling_global::TableEltVTClassId::(compiling_global::TableElt::compile_to_c)";
+val_t compiling___compiling_global___TableEltVTClassId___compile_to_c(val_t p0, val_t p1, val_t p2);
+typedef val_t (*compiling___compiling_global___TableEltVTClassId___compile_to_c_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0);
 static const char * const LOCATE_compiling___compiling_global___TableEltAttr___compile_macros = "compiling_global::TableEltAttr::(compiling_global::AbsTableElt::compile_macros)";
 void compiling___compiling_global___TableEltAttr___compile_macros(val_t p0, val_t p1, val_t p2);
 typedef void (*compiling___compiling_global___TableEltAttr___compile_macros_t)(val_t p0, val_t p1, val_t p2);
index ba05da8..1c2f347 100644 (file)
@@ -18,7 +18,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             static val_t once_value_12; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 31;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___register;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -32,7 +32,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:34 */
+  /* ./compiling//compiling_icode.nit:35 */
   fra.me.REG[2] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
   if (UNTAG_Bool(REGB0)) {
@@ -46,14 +46,14 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
     fra.me.REG[2] = fra.me.REG[2];
     goto label2;
   }
-  /* ./compiling//compiling_icode.nit:35 */
+  /* ./compiling//compiling_icode.nit:36 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 35);
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 36);
   }
   fra.me.REG[3] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:36 */
+  /* ./compiling//compiling_icode.nit:37 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = CALL_analysis___allocate_iregister_slots___IRegister___is_local(fra.me.REG[1])(fra.me.REG[1]);
@@ -66,22 +66,22 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
     REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_ids2", LOCATE_compiling___compiling_icode, 36);
+      nit_abort("Uninitialized attribute %s", "_ids2", LOCATE_compiling___compiling_icode, 37);
     }
     fra.me.REG[4] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0]);
     fra.me.REG[3] = fra.me.REG[4];
   }
-  /* ./compiling//compiling_icode.nit:37 */
+  /* ./compiling//compiling_icode.nit:38 */
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:38 */
+    /* ./compiling//compiling_icode.nit:39 */
     fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
     fra.me.REG[2] = fra.me.REG[4];
     goto label2;
   } else {
-    /* ./compiling//compiling_icode.nit:40 */
-    fra.me.REG[4] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[1])(fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:41 */
+    fra.me.REG[4] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:42 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -90,14 +90,14 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[4])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:41 */
+        /* ./compiling//compiling_icode.nit:42 */
         REGB0 = REGB1;
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:43 */
+      /* ./compiling//compiling_icode.nit:44 */
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("NIT_NULL");
         REGB0 = TAG_Int(8);
@@ -106,23 +106,23 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
       fra.me.REG[5] = fra.me.REG[5];
-      /* ./compiling//compiling_icode.nit:44 */
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[5]);
       /* ./compiling//compiling_icode.nit:45 */
+      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[5]);
+      /* ./compiling//compiling_icode.nit:46 */
       fra.me.REG[2] = fra.me.REG[5];
       goto label2;
     } else {
-      /* ./compiling//compiling_icode.nit:49 */
+      /* ./compiling//compiling_icode.nit:50 */
       REGB0 = CALL_analysis___allocate_iregister_slots___IRegister___in_tag_slots(fra.me.REG[1])(fra.me.REG[1]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:50 */
+        /* ./compiling//compiling_icode.nit:51 */
         if (!once_value_4) {
           fra.me.REG[5] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
           once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
         } else fra.me.REG[5] = once_value_4;
         fra.me.REG[5] = fra.me.REG[5];
-        /* ./compiling//compiling_icode.nit:51 */
+        /* ./compiling//compiling_icode.nit:52 */
         REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
@@ -152,7 +152,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
         }
       } else {
-        /* ./compiling//compiling_icode.nit:52 */
+        /* ./compiling//compiling_icode.nit:53 */
         REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[0])(fra.me.REG[0]);
         if (UNTAG_Bool(REGB0)) {
           REGB0 = CALL_analysis___allocate_iregister_slots___IRegister___is_local(fra.me.REG[1])(fra.me.REG[1]);
@@ -162,7 +162,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           REGB0 = REGB1;
         }
         if (UNTAG_Bool(REGB0)) {
-          /* ./compiling//compiling_icode.nit:53 */
+          /* ./compiling//compiling_icode.nit:54 */
           if (!once_value_7) {
             fra.me.REG[0] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
             once_value_7 = fra.me.REG[0];
@@ -170,7 +170,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           } else fra.me.REG[0] = once_value_7;
           fra.me.REG[0] = fra.me.REG[0];
           fra.me.REG[5] = fra.me.REG[0];
-          /* ./compiling//compiling_icode.nit:54 */
+          /* ./compiling//compiling_icode.nit:55 */
           REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
           REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
           if (UNTAG_Bool(REGB0)) {
@@ -200,7 +200,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
             CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[0]);
           }
         } else {
-          /* ./compiling//compiling_icode.nit:56 */
+          /* ./compiling//compiling_icode.nit:57 */
           if (!once_value_10) {
             fra.me.REG[0] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
             once_value_10 = fra.me.REG[0];
@@ -208,7 +208,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           } else fra.me.REG[0] = once_value_10;
           fra.me.REG[0] = fra.me.REG[0];
           fra.me.REG[5] = fra.me.REG[0];
-          /* ./compiling//compiling_icode.nit:57 */
+          /* ./compiling//compiling_icode.nit:58 */
           REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
           REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
           if (UNTAG_Bool(REGB0)) {
@@ -239,11 +239,11 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register(val_t p0, val_
           }
         }
       }
-      /* ./compiling//compiling_icode.nit:59 */
-      fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
       /* ./compiling//compiling_icode.nit:60 */
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[4]);
+      fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
       /* ./compiling//compiling_icode.nit:61 */
+      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[4]);
+      /* ./compiling//compiling_icode.nit:62 */
       fra.me.REG[2] = fra.me.REG[4];
       goto label2;
     }
@@ -258,7 +258,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___registers(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 66;
+  fra.me.line = 67;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___registers;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -267,11 +267,11 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___registers(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:69 */
+  /* ./compiling//compiling_icode.nit:70 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___I2CCompilerVisitor___registers_1));
-  /* ./compiling//compiling_icode.nit:73 */
+  /* ./compiling//compiling_icode.nit:74 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -281,7 +281,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___registers(val_t p0, val
     struct {struct stack_frame_t me;} fra;
     fun_t CREG[1];
     val_t tmp;
-    /* ./compiling//compiling_icode.nit:70 */
+    /* ./compiling//compiling_icode.nit:71 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_compiling___compiling_icode;
     fra.me.line = 0;
@@ -293,7 +293,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___registers(val_t p0, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:71 */
+    /* ./compiling//compiling_icode.nit:72 */
     fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(closctx->REG[0])(closctx->REG[0], 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;
@@ -306,24 +306,24 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_number(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 77;
+  fra.me.line = 78;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___new_number;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:80 */
+  /* ./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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./compiling//compiling_icode.nit:80 */
-  ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB1;
   /* ./compiling//compiling_icode.nit:81 */
+  ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB1;
+  /* ./compiling//compiling_icode.nit:82 */
   REGB1 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_last_number", LOCATE_compiling___compiling_icode, 81);
+    nit_abort("Uninitialized attribute %s", "_last_number", LOCATE_compiling___compiling_icode, 82);
   }
   REGB1 = ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]);
   goto label1;
@@ -339,7 +339,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 84;
+  fra.me.line = 85;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___lab;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -350,26 +350,26 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:87 */
+  /* ./compiling//compiling_icode.nit:88 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 87);
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 88);
   }
   fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:88 */
+    /* ./compiling//compiling_icode.nit:89 */
     REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 88);
+      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 89);
     }
     fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./compiling//compiling_icode.nit:90 */
+    /* ./compiling//compiling_icode.nit:91 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -394,15 +394,15 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___lab(val_t p0, val_t p1)
     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]);
-    /* ./compiling//compiling_icode.nit:91 */
+    /* ./compiling//compiling_icode.nit:92 */
     REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 91);
+      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 92);
     }
     fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:92 */
+    /* ./compiling//compiling_icode.nit:93 */
     fra.me.REG[2] = fra.me.REG[3];
     goto label1;
   }
@@ -416,17 +416,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___closures(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 96;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closures;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:96 */
+  /* ./compiling//compiling_icode.nit:97 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_compiling___compiling_icode, 96);
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_compiling___compiling_icode, 97);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -438,17 +438,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___clostypes(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 99;
+  fra.me.line = 100;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___clostypes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:99 */
+  /* ./compiling//compiling_icode.nit:100 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_clostypes", LOCATE_compiling___compiling_icode, 99);
+    nit_abort("Uninitialized attribute %s", "_clostypes", LOCATE_compiling___compiling_icode, 100);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -460,17 +460,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___local_labels(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 102;
+  fra.me.line = 103;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___local_labels;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:102 */
+  /* ./compiling//compiling_icode.nit:103 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_labels", LOCATE_compiling___compiling_icode, 102);
+    nit_abort("Uninitialized attribute %s", "_local_labels", LOCATE_compiling___compiling_icode, 103);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -481,7 +481,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 102;
+  fra.me.line = 103;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -489,7 +489,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq(val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:102 */
+  /* ./compiling//compiling_icode.nit:103 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -500,17 +500,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 105;
+  fra.me.line = 106;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:105 */
+  /* ./compiling//compiling_icode.nit:106 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 105);
+    nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 106);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -521,7 +521,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 105;
+  fra.me.line = 106;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -529,7 +529,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:105 */
+  /* ./compiling//compiling_icode.nit:106 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -542,7 +542,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 109;
+  fra.me.line = 110;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -551,46 +551,46 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:112 */
+  /* ./compiling//compiling_icode.nit:113 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 112);
+    nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 113);
   }
   fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:113 */
+    /* ./compiling//compiling_icode.nit:114 */
     REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 113);
+      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 114);
     }
     fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     REGB0 = fra.me.REG[2];
     goto label1;
   } else {
-    /* ./compiling//compiling_icode.nit:115 */
+    /* ./compiling//compiling_icode.nit:116 */
     REGB1 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 115);
+      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 116);
     }
     fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
-    REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-    /* ./compiling//compiling_icode.nit:116 */
+    /* ./compiling//compiling_icode.nit:117 */
     REGB1 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 116);
+      nit_abort("Uninitialized attribute %s", "_escaped_labels", LOCATE_compiling___compiling_icode, 117);
     }
     fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB2);
-    /* ./compiling//compiling_icode.nit:117 */
+    /* ./compiling//compiling_icode.nit:118 */
     REGB0 = REGB2;
     goto label1;
   }
@@ -606,7 +606,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
     static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 121;
+  fra.me.line = 122;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_label;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -616,16 +616,16 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:124 */
+  /* ./compiling//compiling_icode.nit:125 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 124);
+    nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 125);
   }
   fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:125 */
+    /* ./compiling//compiling_icode.nit:126 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -640,7 +640,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
     REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 125);
+      nit_abort("Uninitialized attribute %s", "_ids", LOCATE_compiling___compiling_icode, 126);
     }
     fra.me.REG[3] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
@@ -661,7 +661,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_label(val_t p0, val_
   return;
 }
 void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -673,110 +673,113 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_goto(val_t p0, val_t
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 129;
+  fra.me.line = 130;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_goto;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:132 */
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:130 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./compiling//compiling_icode.nit:133 */
+  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:133 */
+    /* ./compiling//compiling_icode.nit:134 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("goto ");
+      fra.me.REG[4] = BOX_NativeString("goto ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_1 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_1 = fra.me.REG[4];
       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]);
-    fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    } else fra.me.REG[4] = once_value_1;
+    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[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     if (!once_value_2) {
-      fra.me.REG[3] = BOX_NativeString(";");
+      fra.me.REG[4] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_2 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_2 = fra.me.REG[4];
       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[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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+    } else fra.me.REG[4] = once_value_2;
+    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]);
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   } else {
-    /* ./compiling//compiling_icode.nit:135 */
-    REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:136 */
+    REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 135);
+      nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 136);
     }
-    /* ./compiling//compiling_icode.nit:136 */
-    REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:137 */
+    REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:138 */
     REGB1 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_3) {
-      fra.me.REG[2] = BOX_NativeString("closctx->has_broke = ");
+      fra.me.REG[3] = BOX_NativeString("closctx->has_broke = ");
       REGB1 = TAG_Int(21);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB1);
-      once_value_3 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
+      once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
-    } else fra.me.REG[2] = once_value_3;
-    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[2] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    } 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[1])(fra.me.REG[1], fra.me.REG[3]);
+    fra.me.REG[3] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     if (!once_value_4) {
-      fra.me.REG[2] = BOX_NativeString(";");
+      fra.me.REG[3] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_4 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
-    } else fra.me.REG[2] = once_value_4;
-    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]);
+    } else fra.me.REG[3] = once_value_4;
+    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]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:138 */
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:139 */
     REGB0 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
-      fra.me.REG[2] = BOX_NativeString("goto ");
+      fra.me.REG[3] = BOX_NativeString("goto ");
       REGB0 = TAG_Int(5);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_5 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
-    } else fra.me.REG[2] = once_value_5;
-    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[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+    } else fra.me.REG[3] = once_value_5;
+    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]);
+    fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 138);
+      nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 139);
     }
-    fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[0])(fra.me.REG[0], 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[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     if (!once_value_6) {
-      fra.me.REG[2] = BOX_NativeString(";");
+      fra.me.REG[3] = BOX_NativeString(";");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_6 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_6 = fra.me.REG[3];
       register_static_object(&once_value_6);
-    } else fra.me.REG[2] = once_value_6;
-    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]);
+    } else fra.me.REG[3] = once_value_6;
+    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]);
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -787,17 +790,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 142;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:142 */
+  /* ./compiling//compiling_icode.nit:143 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_marks_to_seq", LOCATE_compiling___compiling_icode, 142);
+    nit_abort("Uninitialized attribute %s", "_marks_to_seq", LOCATE_compiling___compiling_icode, 143);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -809,17 +812,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___closure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 145;
+  fra.me.line = 146;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:145 */
+  /* ./compiling//compiling_icode.nit:146 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_compiling___compiling_icode, 145);
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_compiling___compiling_icode, 146);
   }
   REGB0 = ATTR_compiling___compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -831,14 +834,14 @@ void compiling___compiling_icode___I2CCompilerVisitor___closure__eq(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 145;
+  fra.me.line = 146;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___closure__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./compiling//compiling_icode.nit:145 */
+  /* ./compiling//compiling_icode.nit:146 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -849,17 +852,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___visitor(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 148;
+  fra.me.line = 149;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:148 */
+  /* ./compiling//compiling_icode.nit:149 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_compiling___compiling_icode, 148);
+    nit_abort("Uninitialized attribute %s", "_visitor", LOCATE_compiling___compiling_icode, 149);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -871,17 +874,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___iroutine(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 151;
+  fra.me.line = 152;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:151 */
+  /* ./compiling//compiling_icode.nit:152 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_compiling___compiling_icode, 151);
+    nit_abort("Uninitialized attribute %s", "_iroutine", LOCATE_compiling___compiling_icode, 152);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -892,13 +895,13 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___return_label(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 154;
+  fra.me.line = 155;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___return_label;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:154 */
+  /* ./compiling//compiling_icode.nit:155 */
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____return_label(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -908,7 +911,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 154;
+  fra.me.line = 155;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___return_label__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -916,7 +919,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:154 */
+  /* ./compiling//compiling_icode.nit:155 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____return_label(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -926,7 +929,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_decl(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 157;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -934,7 +937,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_decl(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:159 */
+  /* ./compiling//compiling_icode.nit:160 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -950,7 +953,7 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(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_compiling___compiling_icode;
-  fra.me.line = 162;
+  fra.me.line = 163;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___new_instr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -959,12 +962,12 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:166 */
+  /* ./compiling//compiling_icode.nit:167 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:167 */
-  fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:168 */
+  fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:169 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -979,10 +982,10 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:169 */
+    /* ./compiling//compiling_icode.nit:170 */
     fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_base___CompilerVisitor___add_indent(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:170 */
+    /* ./compiling//compiling_icode.nit:171 */
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString("/* ");
       REGB0 = TAG_Int(3);
@@ -992,19 +995,19 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     } else fra.me.REG[3] = once_value_1;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:171 */
+    /* ./compiling//compiling_icode.nit:172 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 171);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 172);
     }
     fra.me.REG[3] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 171);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 172);
     }
     fra.me.REG[3] = CALL_location___SourceFile___filename(fra.me.REG[3])(fra.me.REG[3]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:172 */
+    /* ./compiling//compiling_icode.nit:173 */
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(":");
       REGB0 = TAG_Int(1);
@@ -1014,15 +1017,15 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     } else fra.me.REG[3] = once_value_2;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:173 */
+    /* ./compiling//compiling_icode.nit:174 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 173);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 174);
     }
     REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:174 */
+    /* ./compiling//compiling_icode.nit:175 */
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString(" */\n");
       REGB0 = TAG_Int(4);
@@ -1032,13 +1035,13 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___new_instr(val_t p0){
     } else fra.me.REG[2] = once_value_3;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:175 */
+    /* ./compiling//compiling_icode.nit:176 */
     ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]) = NIT_NULL;
   }
-  /* ./compiling//compiling_icode.nit:177 */
+  /* ./compiling//compiling_icode.nit:178 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_base___CompilerVisitor___add_indent(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:178 */
+  /* ./compiling//compiling_icode.nit:179 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -1051,7 +1054,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_instr(val_t p0, val_
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 181;
+  fra.me.line = 182;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_instr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1059,7 +1062,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_instr(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:183 */
+  /* ./compiling//compiling_icode.nit:184 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   if (!once_value_1) {
@@ -1079,13 +1082,13 @@ void compiling___compiling_icode___I2CCompilerVisitor___indent(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 186;
+  fra.me.line = 187;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___indent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:188 */
+  /* ./compiling//compiling_icode.nit:189 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1096,13 +1099,13 @@ void compiling___compiling_icode___I2CCompilerVisitor___unindent(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 191;
+  fra.me.line = 192;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___unindent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:193 */
+  /* ./compiling//compiling_icode.nit:194 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_base___CompilerVisitor___unindent(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1113,7 +1116,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_assignment(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 196;
+  fra.me.line = 197;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_assignment;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1123,7 +1126,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_assignment(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:198 */
+  /* ./compiling//compiling_icode.nit:199 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_base___CompilerVisitor___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
@@ -1137,7 +1140,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 204;
+  fra.me.line = 205;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___add_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1148,9 +1151,9 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:208 */
-  fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:209 */
+  fra.me.REG[2] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:210 */
   REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1183,9 +1186,9 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:210 */
-  ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
   /* ./compiling//compiling_icode.nit:211 */
+  ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./compiling//compiling_icode.nit:212 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1202,12 +1205,12 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 211);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 212);
     }
     fra.me.REG[3] = CALL_location___Location___file(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 211);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 212);
     }
     fra.me.REG[4] = CALL_location___Location___file(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
@@ -1229,20 +1232,20 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 211);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 212);
     }
     REGB0 = CALL_location___Location___line_start(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 211);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 212);
     }
     REGB1 = CALL_location___Location___line_start(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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ./compiling//compiling_icode.nit:211 */
+      /* ./compiling//compiling_icode.nit:212 */
       REGB2 = REGB1;
     }
   } else {
@@ -1250,10 +1253,10 @@ void compiling___compiling_icode___I2CCompilerVisitor___add_location(val_t p0, v
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_icode.nit:212 */
+    /* ./compiling//compiling_icode.nit:213 */
     goto label1;
   } else {
-    /* ./compiling//compiling_icode.nit:214 */
+    /* ./compiling//compiling_icode.nit:215 */
     ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]) = fra.me.REG[1];
   }
   label1: while(0);
@@ -1266,17 +1269,17 @@ val_t compiling___compiling_icode___I2CCompilerVisitor___basecname(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 218;
+  fra.me.line = 219;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___basecname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:218 */
+  /* ./compiling//compiling_icode.nit:219 */
   REGB0 = TAG_Bool(ATTR_compiling___compiling_icode___I2CCompilerVisitor____basecname(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_basecname", LOCATE_compiling___compiling_icode, 218);
+    nit_abort("Uninitialized attribute %s", "_basecname", LOCATE_compiling___compiling_icode, 219);
   }
   fra.me.REG[0] = ATTR_compiling___compiling_icode___I2CCompilerVisitor____basecname(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1289,7 +1292,7 @@ void compiling___compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1,
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 221;
+  fra.me.line = 222;
   fra.me.meth = LOCATE_compiling___compiling_icode___I2CCompilerVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1301,11 +1304,11 @@ void compiling___compiling_icode___I2CCompilerVisitor___init(val_t p0, val_t p1,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./compiling//compiling_icode.nit:223 */
-  ATTR_compiling___compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0]) = fra.me.REG[1];
   /* ./compiling//compiling_icode.nit:224 */
-  ATTR_compiling___compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_compiling___compiling_icode___I2CCompilerVisitor____visitor(fra.me.REG[0]) = fra.me.REG[1];
   /* ./compiling//compiling_icode.nit:225 */
+  ATTR_compiling___compiling_icode___I2CCompilerVisitor____iroutine(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./compiling//compiling_icode.nit:226 */
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____basecname(fra.me.REG[0]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -1362,7 +1365,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   static val_t once_value_43; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 230;
+  fra.me.line = 231;
   fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_signature_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -1384,11 +1387,11 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
-  /* ./compiling//compiling_icode.nit:236 */
-  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
   /* ./compiling//compiling_icode.nit:237 */
-  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
   /* ./compiling//compiling_icode.nit:238 */
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
+  /* ./compiling//compiling_icode.nit:239 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1405,19 +1408,24 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (UNTAG_Bool(REGB0)) {
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
   }
-  /* ./compiling//compiling_icode.nit:239 */
+  /* ./compiling//compiling_icode.nit:240 */
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:239 */
-      REGB2 = REGB0;
       /* ./compiling//compiling_icode.nit:240 */
+      REGB2 = REGB0;
+      /* ./compiling//compiling_icode.nit:241 */
       REGB3 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
       if (!once_value_1) {
@@ -1442,7 +1450,7 @@ 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[6])(fra.me.REG[6], fra.me.REG[4]);
-      /* ./compiling//compiling_icode.nit:241 */
+      /* ./compiling//compiling_icode.nit:242 */
       REGB3 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
       if (!once_value_3) {
@@ -1467,19 +1475,19 @@ 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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./compiling//compiling_icode.nit:243 */
+  /* ./compiling//compiling_icode.nit:244 */
   fra.me.REG[4] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1495,7 +1503,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:244 */
+    /* ./compiling//compiling_icode.nit:245 */
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("struct stack_frame_t *closctx_param");
       REGB0 = TAG_Int(35);
@@ -1505,23 +1513,28 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     } else fra.me.REG[4] = once_value_6;
     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]);
-    /* ./compiling//compiling_icode.nit:245 */
+    /* ./compiling//compiling_icode.nit:246 */
     REGB0 = TAG_Int(0);
     fra.me.REG[4] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 245);
+      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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//compiling_icode.nit:245 */
-        REGB2 = REGB0;
         /* ./compiling//compiling_icode.nit:246 */
+        REGB2 = REGB0;
+        /* ./compiling//compiling_icode.nit:247 */
         REGB3 = TAG_Int(5);
         fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_7) {
@@ -1555,22 +1568,22 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         fra.me.REG[8] = fra.me.REG[8];
         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]);
-        /* ./compiling//compiling_icode.nit:247 */
+        /* ./compiling//compiling_icode.nit:248 */
         fra.me.REG[8] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
         REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 247);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 248);
         }
-        fra.me.REG[8] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB2);
+        fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB2);
         REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 247);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 248);
         }
         fra.me.REG[8] = CALL_icode___icode_base___IClosureDecl___closure(fra.me.REG[8])(fra.me.REG[8]);
         fra.me.REG[8] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./compiling//compiling_icode.nit:248 */
-        fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
         /* ./compiling//compiling_icode.nit:249 */
+        fra.me.REG[9] = NEW_Array_standard___collection___array___Array___init();
+        /* ./compiling//compiling_icode.nit:250 */
         if (!once_value_10) {
           fra.me.REG[10] = BOX_NativeString("struct stack_frame_t *");
           REGB3 = TAG_Int(22);
@@ -1580,16 +1593,21 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
         } else fra.me.REG[10] = once_value_10;
         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]);
-        /* ./compiling//compiling_icode.nit:250 */
+        /* ./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:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB5)) {
-            /* ./compiling//compiling_icode.nit:251 */
+            /* ./compiling//compiling_icode.nit:252 */
             if (!once_value_11) {
               fra.me.REG[10] = BOX_NativeString("val_t");
               REGB5 = TAG_Int(5);
@@ -1599,19 +1617,19 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
             } 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:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB3 = REGB5;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label12;
           }
         }
         label12: while(0);
-        /* ./compiling//compiling_icode.nit:253 */
+        /* ./compiling//compiling_icode.nit:254 */
         if (!once_value_13) {
           fra.me.REG[10] = BOX_NativeString("void");
           REGB3 = TAG_Int(4);
@@ -1620,7 +1638,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
           register_static_object(&once_value_13);
         } else fra.me.REG[10] = once_value_13;
         fra.me.REG[10] = fra.me.REG[10];
-        /* ./compiling//compiling_icode.nit:254 */
+        /* ./compiling//compiling_icode.nit:255 */
         fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
         REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
@@ -1646,7 +1664,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
           fra.me.REG[8] = fra.me.REG[8];
           fra.me.REG[10] = fra.me.REG[8];
         }
-        /* ./compiling//compiling_icode.nit:255 */
+        /* ./compiling//compiling_icode.nit:256 */
         REGB3 = TAG_Int(7);
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_15) {
@@ -1699,7 +1717,7 @@ 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_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
-        /* ./compiling//compiling_icode.nit:256 */
+        /* ./compiling//compiling_icode.nit:257 */
         REGB3 = TAG_Int(3);
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_20) {
@@ -1724,7 +1742,7 @@ 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[6])(fra.me.REG[6], fra.me.REG[8]);
-        /* ./compiling//compiling_icode.nit:257 */
+        /* ./compiling//compiling_icode.nit:258 */
         REGB3 = TAG_Int(3);
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_22) {
@@ -1749,20 +1767,20 @@ 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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label24;
       }
     }
     label24: while(0);
   }
-  /* ./compiling//compiling_icode.nit:260 */
+  /* ./compiling//compiling_icode.nit:261 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1779,7 +1797,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
   if (UNTAG_Bool(REGB0)) {
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
   }
-  /* ./compiling//compiling_icode.nit:261 */
+  /* ./compiling//compiling_icode.nit:262 */
   if (!once_value_25) {
     fra.me.REG[5] = BOX_NativeString("void");
     REGB0 = TAG_Int(4);
@@ -1788,7 +1806,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     register_static_object(&once_value_25);
   } else fra.me.REG[5] = once_value_25;
   fra.me.REG[5] = fra.me.REG[5];
-  /* ./compiling//compiling_icode.nit:262 */
+  /* ./compiling//compiling_icode.nit:263 */
   fra.me.REG[0] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1814,10 +1832,10 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     fra.me.REG[0] = fra.me.REG[0];
     fra.me.REG[5] = fra.me.REG[0];
   }
-  /* ./compiling//compiling_icode.nit:264 */
+  /* ./compiling//compiling_icode.nit:265 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[7])(fra.me.REG[7]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:265 */
+    /* ./compiling//compiling_icode.nit:266 */
     if (!once_value_27) {
       fra.me.REG[0] = BOX_NativeString("void");
       REGB0 = TAG_Int(4);
@@ -1827,7 +1845,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     } else fra.me.REG[0] = once_value_27;
     fra.me.REG[0] = fra.me.REG[0];
   } else {
-    /* ./compiling//compiling_icode.nit:267 */
+    /* ./compiling//compiling_icode.nit:268 */
     if (!once_value_28) {
       fra.me.REG[8] = BOX_NativeString(", ");
       REGB0 = TAG_Int(2);
@@ -1839,7 +1857,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_to_c(val_t p0,
     fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
     fra.me.REG[0] = fra.me.REG[8];
   }
-  /* ./compiling//compiling_icode.nit:269 */
+  /* ./compiling//compiling_icode.nit:270 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1888,7 +1906,7 @@ val_t compiling___compiling_icode___IRoutine___compile_signature_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_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
-  /* ./compiling//compiling_icode.nit:270 */
+  /* ./compiling//compiling_icode.nit:271 */
   REGB0 = TAG_Int(7);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_32) {
@@ -1932,7 +1950,7 @@ 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[3]);
   fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
-  /* ./compiling//compiling_icode.nit:271 */
+  /* ./compiling//compiling_icode.nit:272 */
   REGB0 = TAG_Int(7);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_36) {
@@ -1976,7 +1994,7 @@ 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[3]);
   fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
   CALL_compiling___compiling_base___CompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
-  /* ./compiling//compiling_icode.nit:272 */
+  /* ./compiling//compiling_icode.nit:273 */
   REGB0 = TAG_Int(7);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_40) {
@@ -2020,9 +2038,9 @@ 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[0]);
   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]);
-  /* ./compiling//compiling_icode.nit:273 */
-  CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:274 */
+  CALL_compiling___compiling_base___CompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:275 */
   goto label44;
   label44: while(0);
   stack_frame_head = fra.me.prev;
@@ -2073,7 +2091,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   static val_t once_value_41; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 277;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_inside_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -2090,9 +2108,9 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:281 */
-  REGB0 = TAG_Int(0);
   /* ./compiling//compiling_icode.nit:282 */
+  REGB0 = TAG_Int(0);
+  /* ./compiling//compiling_icode.nit:283 */
   fra.me.REG[3] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -2108,23 +2126,28 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:283 */
+    /* ./compiling//compiling_icode.nit:284 */
     fra.me.REG[3] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 283);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 284);
     }
     REGB1 = CALL_location___Location___line_start(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = REGB1;
   }
-  /* ./compiling//compiling_icode.nit:286 */
+  /* ./compiling//compiling_icode.nit:287 */
   REGB1 = CALL_analysis___allocate_iregister_slots___IRoutine___std_slots_nb(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:286 */
+  /* ./compiling//compiling_icode.nit:287 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./compiling//compiling_icode.nit:287 */
+    /* ./compiling//compiling_icode.nit:288 */
     REGB2 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_1) {
@@ -2138,9 +2161,9 @@ 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:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB1 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-    /* ./compiling//compiling_icode.nit:287 */
+    /* ./compiling//compiling_icode.nit:288 */
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB1)(REGB1);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     if (!once_value_2) {
@@ -2155,7 +2178,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     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]);
   } else {
-    /* ./compiling//compiling_icode.nit:289 */
+    /* ./compiling//compiling_icode.nit:290 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("struct {struct stack_frame_t me;} fra;");
       REGB1 = TAG_Int(38);
@@ -2166,7 +2189,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     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]);
   }
-  /* ./compiling//compiling_icode.nit:291 */
+  /* ./compiling//compiling_icode.nit:292 */
   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);
@@ -2176,7 +2199,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   } else fra.me.REG[3] = once_value_4;
   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]);
-  /* ./compiling//compiling_icode.nit:292 */
+  /* ./compiling//compiling_icode.nit:293 */
   REGB1 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_5) {
@@ -2203,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]);
   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]);
-  /* ./compiling//compiling_icode.nit:293 */
+  /* ./compiling//compiling_icode.nit:294 */
   REGB1 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_7) {
@@ -2228,7 +2251,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]);
   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]);
-  /* ./compiling//compiling_icode.nit:294 */
+  /* ./compiling//compiling_icode.nit:295 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_9) {
@@ -2253,7 +2276,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]);
   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]);
-  /* ./compiling//compiling_icode.nit:295 */
+  /* ./compiling//compiling_icode.nit:296 */
   if (!once_value_11) {
     fra.me.REG[3] = BOX_NativeString("fra.me.has_broke = 0;");
     REGB0 = TAG_Int(21);
@@ -2263,7 +2286,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   } else fra.me.REG[3] = once_value_11;
   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]);
-  /* ./compiling//compiling_icode.nit:296 */
+  /* ./compiling//compiling_icode.nit:297 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_12) {
@@ -2289,18 +2312,23 @@ 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]);
-  /* ./compiling//compiling_icode.nit:299 */
+  /* ./compiling//compiling_icode.nit:300 */
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:299 */
-      REGB2 = REGB0;
       /* ./compiling//compiling_icode.nit:300 */
+      REGB2 = REGB0;
+      /* ./compiling//compiling_icode.nit:301 */
       REGB3 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
       if (!once_value_14) {
@@ -2325,30 +2353,35 @@ 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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label16;
     }
   }
   label16: while(0);
-  /* ./compiling//compiling_icode.nit:302 */
+  /* ./compiling//compiling_icode.nit:303 */
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//compiling_icode.nit:302 */
-      REGB2 = REGB0;
       /* ./compiling//compiling_icode.nit:303 */
+      REGB2 = REGB0;
+      /* ./compiling//compiling_icode.nit:304 */
       REGB3 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
       if (!once_value_17) {
@@ -2373,21 +2406,21 @@ 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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label19;
     }
   }
   label19: while(0);
-  /* ./compiling//compiling_icode.nit:305 */
-  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:306 */
+  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:307 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2402,7 +2435,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:307 */
+    /* ./compiling//compiling_icode.nit:308 */
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_20) {
@@ -2416,7 +2449,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[4])(fra.me.REG[4], fra.me.REG[5]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 307);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 308);
     }
     REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
@@ -2432,7 +2465,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[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:308 */
+    /* ./compiling//compiling_icode.nit:309 */
     if (!once_value_22) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_ctx = closctx_param;");
       REGB0 = TAG_Int(35);
@@ -2442,7 +2475,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     } else fra.me.REG[4] = once_value_22;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:309 */
+    /* ./compiling//compiling_icode.nit:310 */
     if (!once_value_23) {
       fra.me.REG[4] = BOX_NativeString("fra.me.closure_funs = CREG;");
       REGB0 = TAG_Int(27);
@@ -2453,13 +2486,13 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./compiling//compiling_icode.nit:311 */
+  /* ./compiling//compiling_icode.nit:312 */
   REGB0 = TAG_Int(0);
   fra.me.REG[4] = REGB0;
-  /* ./compiling//compiling_icode.nit:312 */
+  /* ./compiling//compiling_icode.nit:313 */
   fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___IRoutine___compile_inside_to_c_24));
-  /* ./compiling//compiling_icode.nit:316 */
+  /* ./compiling//compiling_icode.nit:317 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2474,28 +2507,33 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:317 */
+    /* ./compiling//compiling_icode.nit:318 */
     REGB0 = TAG_Int(0);
     REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 317);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 318);
     }
     REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//compiling_icode.nit:317 */
-        REGB2 = REGB0;
         /* ./compiling//compiling_icode.nit:318 */
+        REGB2 = REGB0;
+        /* ./compiling//compiling_icode.nit:319 */
         REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 318);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 319);
         }
-        fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-        /* ./compiling//compiling_icode.nit:319 */
+        fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+        /* ./compiling//compiling_icode.nit:320 */
         REGB3 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_26) {
@@ -2520,45 +2558,55 @@ 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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[6] = fra.me.REG[2];
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB5 = TAG_Bool(false);
           REGB4 = REGB5;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label28;
         label28: while(0);
-        /* ./compiling//compiling_icode.nit:319 */
+        /* ./compiling//compiling_icode.nit:320 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
         if (!once_value_29) {
           fra.me.REG[6] = BOX_NativeString(";");
@@ -2571,16 +2619,16 @@ 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[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:320 */
+        /* ./compiling//compiling_icode.nit:321 */
         fra.me.REG[5] = CALL_compiling___compiling_icode___I2CCompilerVisitor___closures(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[6] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6]);
-        /* ./compiling//compiling_icode.nit:321 */
+        /* ./compiling//compiling_icode.nit:322 */
         fra.me.REG[6] = CALL_icode___icode_base___IClosureDecl___closure(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[6] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[6])(fra.me.REG[6]);
-        /* ./compiling//compiling_icode.nit:322 */
-        fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
         /* ./compiling//compiling_icode.nit:323 */
+        fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+        /* ./compiling//compiling_icode.nit:324 */
         if (!once_value_30) {
           fra.me.REG[7] = BOX_NativeString("struct stack_frame_t *");
           REGB2 = TAG_Int(22);
@@ -2590,16 +2638,21 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         } else fra.me.REG[7] = once_value_30;
         fra.me.REG[7] = fra.me.REG[7];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-        /* ./compiling//compiling_icode.nit:324 */
+        /* ./compiling//compiling_icode.nit:325 */
         REGB2 = TAG_Int(0);
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./compiling//compiling_icode.nit:325 */
+            /* ./compiling//compiling_icode.nit:326 */
             if (!once_value_31) {
               fra.me.REG[7] = BOX_NativeString("val_t");
               REGB4 = TAG_Int(5);
@@ -2608,21 +2661,21 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
               register_static_object(&once_value_31);
             } else fra.me.REG[7] = once_value_31;
             fra.me.REG[7] = fra.me.REG[7];
-            /* ./compiling//compiling_icode.nit:326 */
+            /* ./compiling//compiling_icode.nit:327 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB2 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label32;
           }
         }
         label32: while(0);
-        /* ./compiling//compiling_icode.nit:328 */
+        /* ./compiling//compiling_icode.nit:329 */
         if (!once_value_33) {
           fra.me.REG[7] = BOX_NativeString("void");
           REGB2 = TAG_Int(4);
@@ -2631,7 +2684,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
           register_static_object(&once_value_33);
         } else fra.me.REG[7] = once_value_33;
         fra.me.REG[7] = fra.me.REG[7];
-        /* ./compiling//compiling_icode.nit:329 */
+        /* ./compiling//compiling_icode.nit:330 */
         fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
         REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
@@ -2657,7 +2710,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
           fra.me.REG[6] = fra.me.REG[6];
           fra.me.REG[7] = fra.me.REG[6];
         }
-        /* ./compiling//compiling_icode.nit:330 */
+        /* ./compiling//compiling_icode.nit:331 */
         fra.me.REG[6] = CALL_compiling___compiling_icode___I2CCompilerVisitor___clostypes(fra.me.REG[1])(fra.me.REG[1]);
         REGB2 = TAG_Int(5);
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
@@ -2701,20 +2754,20 @@ 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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label39;
       }
     }
     label39: while(0);
   }
-  /* ./compiling//compiling_icode.nit:333 */
+  /* ./compiling//compiling_icode.nit:334 */
   if (!once_value_40) {
     fra.me.REG[2] = BOX_NativeString("val_t tmp;");
     REGB0 = TAG_Int(10);
@@ -2724,15 +2777,15 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   } else fra.me.REG[2] = once_value_40;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:336 */
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:337 */
+  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:338 */
   fra.me.REG[3] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:340 */
+  /* ./compiling//compiling_icode.nit:341 */
   fra.me.REG[3] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:342 */
+  /* ./compiling//compiling_icode.nit:343 */
   if (!once_value_41) {
     fra.me.REG[3] = BOX_NativeString("stack_frame_head = fra.me.prev;");
     REGB0 = TAG_Int(31);
@@ -2742,11 +2795,11 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   } else fra.me.REG[3] = once_value_41;
   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]);
-  /* ./compiling//compiling_icode.nit:343 */
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:344 */
-  fra.me.REG[0] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:345 */
+  fra.me.REG[0] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:346 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2761,11 +2814,11 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:346 */
+    /* ./compiling//compiling_icode.nit:347 */
     fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     goto label42;
   } else {
-    /* ./compiling//compiling_icode.nit:348 */
+    /* ./compiling//compiling_icode.nit:349 */
     fra.me.REG[0] = NIT_NULL;
     goto label42;
   }
@@ -2792,7 +2845,7 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:313 */
+    /* ./compiling//compiling_icode.nit:314 */
     fra.me.REG[1] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -2802,60 +2855,70 @@ val_t compiling___compiling_icode___IRoutine___compile_inside_to_c(val_t p0, val
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[1])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:313 */
+        /* ./compiling//compiling_icode.nit:314 */
         REGB0 = REGB1;
       }
     }
     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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[1] = closctx->REG[2];
       REGB0 = closctx->REG[4];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label25;
       label25: while(0);
-      /* ./compiling//compiling_icode.nit:313 */
+      /* ./compiling//compiling_icode.nit:314 */
       CALL_compiling___compiling_icode___I2CCompilerVisitor___add_assignment(closctx->REG[1])(closctx->REG[1], fra.me.REG[0], fra.me.REG[1]);
     }
-    /* ./compiling//compiling_icode.nit:314 */
+    /* ./compiling//compiling_icode.nit:315 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[4])+UNTAG_Int(REGB0));
-    /* ./compiling//compiling_icode.nit:314 */
+    /* ./compiling//compiling_icode.nit:315 */
     closctx->REG[4] = REGB0;
     stack_frame_head = fra.me.prev;
     return;
@@ -2865,7 +2928,7 @@ val_t compiling___compiling_icode___IRoutine___compile_to_c(val_t p0, val_t p1,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 352;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_compiling___compiling_icode___IRoutine___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2877,9 +2940,9 @@ val_t compiling___compiling_icode___IRoutine___compile_to_c(val_t p0, val_t p1,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./compiling//compiling_icode.nit:356 */
-  fra.me.REG[2] = NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:357 */
+  fra.me.REG[2] = NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:358 */
   fra.me.REG[3] = CALL_compiling___compiling_icode___IRoutine___compile_inside_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
   goto label1;
   label1: while(0);
@@ -2891,12 +2954,12 @@ void compiling___compiling_icode___ICode___compile_to_c(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 362;
+  fra.me.line = 363;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./compiling//compiling_icode.nit:362 */
-  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 362);
+  /* ./compiling//compiling_icode.nit:363 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 363);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2907,15 +2970,15 @@ val_t compiling___compiling_icode___ICode___need_result(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 365;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___need_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:368 */
-  fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:369 */
+  fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:370 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2932,7 +2995,7 @@ val_t compiling___compiling_icode___ICode___need_result(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_compiling___compiling_icode, 369);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 370);
     }
     fra.me.REG[0] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
@@ -2943,9 +3006,9 @@ val_t compiling___compiling_icode___ICode___need_result(val_t p0){
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[0])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:369 */
+        /* ./compiling//compiling_icode.nit:370 */
         REGB0 = REGB1;
       }
     }
@@ -2969,7 +3032,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 372;
+  fra.me.line = 373;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___store_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2981,9 +3044,9 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:375 */
-  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:376 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:377 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3000,7 +3063,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 376);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 377);
     }
     fra.me.REG[4] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
@@ -3011,9 +3074,9 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[4])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:376 */
+        /* ./compiling//compiling_icode.nit:377 */
         REGB0 = REGB1;
       }
     }
@@ -3023,7 +3086,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:377 */
+    /* ./compiling//compiling_icode.nit:378 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3039,14 +3102,14 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 377);
+      nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 378);
     }
-    /* ./compiling//compiling_icode.nit:378 */
-    fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:379 */
+    fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:380 */
     fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:380 */
+    /* ./compiling//compiling_icode.nit:381 */
     if (!once_value_1) {
       fra.me.REG[3] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
@@ -3056,9 +3119,9 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     } else fra.me.REG[3] = once_value_1;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:381 */
-    CALL_compiling___compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     /* ./compiling//compiling_icode.nit:382 */
+    CALL_compiling___compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:383 */
     if (!once_value_2) {
       fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
@@ -3069,7 +3132,7 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   } else {
-    /* ./compiling//compiling_icode.nit:383 */
+    /* ./compiling//compiling_icode.nit:384 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -3091,11 +3154,11 @@ void compiling___compiling_icode___ICode___store_result(val_t p0, val_t p1, val_
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:386 */
-      fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
       /* ./compiling//compiling_icode.nit:387 */
-      CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+      fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
       /* ./compiling//compiling_icode.nit:388 */
+      CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+      /* ./compiling//compiling_icode.nit:389 */
       if (!once_value_3) {
         fra.me.REG[2] = BOX_NativeString(";\n");
         REGB0 = TAG_Int(2);
@@ -3119,7 +3182,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 392;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICode___new_result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3129,7 +3192,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:396 */
+  /* ./compiling//compiling_icode.nit:397 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(true);
@@ -3140,13 +3203,13 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 396);
+    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 397);
   }
-  /* ./compiling//compiling_icode.nit:397 */
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:398 */
-  fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:399 */
+  fra.me.REG[0] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:400 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3163,7 +3226,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 399);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 400);
     }
     fra.me.REG[3] = CALL_analysis___allocate_iregister_slots___IRegister___slot_index(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
@@ -3174,9 +3237,9 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((fra.me.REG[3])==(NIT_NULL));
-        /* ./compiling//compiling_icode.nit:399 */
+        /* ./compiling//compiling_icode.nit:400 */
         REGB0 = REGB1;
       }
     }
@@ -3186,10 +3249,10 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:400 */
+    /* ./compiling//compiling_icode.nit:401 */
     fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-    /* ./compiling//compiling_icode.nit:401 */
+    /* ./compiling//compiling_icode.nit:402 */
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString(" = ");
       REGB0 = TAG_Int(3);
@@ -3200,9 +3263,9 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:403 */
-  fra.me.REG[0] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[2])(fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:404 */
+  fra.me.REG[0] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:405 */
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
@@ -3212,7 +3275,7 @@ val_t compiling___compiling_icode___ICode___new_result(val_t p0, val_t p1){
   } else fra.me.REG[1] = once_value_2;
   fra.me.REG[1] = fra.me.REG[1];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:405 */
+  /* ./compiling//compiling_icode.nit:406 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -3225,7 +3288,7 @@ void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 410;
+  fra.me.line = 411;
   fra.me.meth = LOCATE_compiling___compiling_icode___ISeq___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3235,15 +3298,15 @@ void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:412 */
+  /* ./compiling//compiling_icode.nit:413 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:413 */
+  /* ./compiling//compiling_icode.nit:414 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:414 */
-  fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:415 */
+  fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:416 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3261,10 +3324,10 @@ void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:416 */
+  /* ./compiling//compiling_icode.nit:417 */
   fra.me.REG[2] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___ISeq___compile_to_c_1));
-  /* ./compiling//compiling_icode.nit:419 */
+  /* ./compiling//compiling_icode.nit:420 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_label(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -3284,7 +3347,7 @@ void compiling___compiling_icode___ISeq___compile_to_c(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:417 */
+    /* ./compiling//compiling_icode.nit:418 */
     CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
@@ -3299,7 +3362,7 @@ void compiling___compiling_icode___IIf___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 424;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIf___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3309,12 +3372,12 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:426 */
+  /* ./compiling//compiling_icode.nit:427 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:427 */
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:428 */
+  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:429 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("if (UNTAG_Bool(");
     REGB0 = TAG_Int(15);
@@ -3324,11 +3387,11 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_1;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:429 */
+  /* ./compiling//compiling_icode.nit:430 */
   fra.me.REG[3] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:430 */
+  /* ./compiling//compiling_icode.nit:431 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(")) {\n");
     REGB0 = TAG_Int(5);
@@ -3338,27 +3401,27 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:431 */
+  /* ./compiling//compiling_icode.nit:432 */
   fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[3])(fra.me.REG[3]);
   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)) {
-    /* ./compiling//compiling_icode.nit:432 */
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:433 */
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:434 */
     fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:434 */
+    /* ./compiling//compiling_icode.nit:435 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:436 */
+  /* ./compiling//compiling_icode.nit:437 */
   fra.me.REG[3] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[3])(fra.me.REG[3]);
   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)) {
-    /* ./compiling//compiling_icode.nit:437 */
+    /* ./compiling//compiling_icode.nit:438 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("} else {");
       REGB0 = TAG_Int(8);
@@ -3368,15 +3431,15 @@ void compiling___compiling_icode___IIf___compile_to_c(val_t p0, val_t p1){
     } else fra.me.REG[3] = once_value_3;
     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]);
-    /* ./compiling//compiling_icode.nit:438 */
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:439 */
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:440 */
     fra.me.REG[0] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./compiling//compiling_icode.nit:440 */
+    /* ./compiling//compiling_icode.nit:441 */
     CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:442 */
+  /* ./compiling//compiling_icode.nit:443 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -3398,7 +3461,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 447;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_compiling___compiling_icode___ILoop___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3408,15 +3471,15 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:449 */
+  /* ./compiling//compiling_icode.nit:450 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:450 */
+  /* ./compiling//compiling_icode.nit:451 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:451 */
-  fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
   /* ./compiling//compiling_icode.nit:452 */
+  fra.me.REG[2] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:453 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3434,7 +3497,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:453 */
+  /* ./compiling//compiling_icode.nit:454 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("while(1) {");
     REGB0 = TAG_Int(10);
@@ -3444,14 +3507,14 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:454 */
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:455 */
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:456 */
   fra.me.REG[2] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___ILoop___compile_to_c_2));
-  /* ./compiling//compiling_icode.nit:458 */
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:459 */
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:460 */
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -3461,7 +3524,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:460 */
+  /* ./compiling//compiling_icode.nit:461 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_label(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -3481,7 +3544,7 @@ void compiling___compiling_icode___ILoop___compile_to_c(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//compiling_icode.nit:456 */
+    /* ./compiling//compiling_icode.nit:457 */
     CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
@@ -3491,7 +3554,7 @@ void compiling___compiling_icode___IEscape___compile_to_c(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 465;
+  fra.me.line = 466;
   fra.me.meth = LOCATE_compiling___compiling_icode___IEscape___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3500,10 +3563,10 @@ void compiling___compiling_icode___IEscape___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:467 */
+  /* ./compiling//compiling_icode.nit:468 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:468 */
+  /* ./compiling//compiling_icode.nit:469 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___marks_to_seq(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_icode___icode_base___IEscape___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
@@ -3512,7 +3575,7 @@ void compiling___compiling_icode___IEscape___compile_to_c(val_t p0, val_t p1){
   return;
 }
 void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -3535,10 +3598,10 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       static val_t once_value_20; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 473;
+  fra.me.line = 474;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAbsCall___compile_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -3548,350 +3611,353 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:475 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:474 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./compiling//compiling_icode.nit:476 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___registers(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:479 */
-  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_icode___icode_base___ICode___location(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:477 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___registers(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./compiling//compiling_icode.nit:480 */
-  fra.me.REG[4] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
   /* ./compiling//compiling_icode.nit:481 */
-  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[5] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:482 */
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  fra.me.REG[6] = NIT_NULL;
+  /* ./compiling//compiling_icode.nit:483 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:484 */
+    /* ./compiling//compiling_icode.nit:485 */
     REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:485 */
+      /* ./compiling//compiling_icode.nit:486 */
       if (!once_value_1) {
-        fra.me.REG[6] = BOX_NativeString("closctx");
+        fra.me.REG[7] = BOX_NativeString("closctx");
         REGB0 = TAG_Int(7);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-        once_value_1 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        once_value_1 = fra.me.REG[7];
         register_static_object(&once_value_1);
-      } else fra.me.REG[6] = once_value_1;
-      fra.me.REG[6] = fra.me.REG[6];
-      fra.me.REG[5] = fra.me.REG[6];
+      } else fra.me.REG[7] = once_value_1;
+      fra.me.REG[7] = fra.me.REG[7];
+      fra.me.REG[6] = fra.me.REG[7];
     } else {
-      /* ./compiling//compiling_icode.nit:487 */
+      /* ./compiling//compiling_icode.nit:488 */
       if (!once_value_2) {
-        fra.me.REG[6] = BOX_NativeString("(&(fra.me))");
+        fra.me.REG[7] = BOX_NativeString("(&(fra.me))");
         REGB0 = TAG_Int(11);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-        once_value_2 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        once_value_2 = fra.me.REG[7];
         register_static_object(&once_value_2);
-      } else fra.me.REG[6] = once_value_2;
-      fra.me.REG[6] = fra.me.REG[6];
-      fra.me.REG[5] = fra.me.REG[6];
+      } else fra.me.REG[7] = once_value_2;
+      fra.me.REG[7] = fra.me.REG[7];
+      fra.me.REG[6] = fra.me.REG[7];
     }
-    /* ./compiling//compiling_icode.nit:491 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-    /* ./compiling//compiling_icode.nit:494 */
-    fra.me.REG[6] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* ./compiling//compiling_icode.nit:497 */
-    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    /* ./compiling//compiling_icode.nit:492 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+    /* ./compiling//compiling_icode.nit:495 */
+    fra.me.REG[7] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+    /* ./compiling//compiling_icode.nit:498 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 497);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 498);
     }
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___IAbsCall___compile_to_c_3));
+    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_compiling___compiling_icode___IAbsCall___compile_to_c_3));
   }
-  /* ./compiling//compiling_icode.nit:508 */
-  fra.me.REG[2] = CALL_compiling___compiling_icode___IAbsCall___compile_call_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   /* ./compiling//compiling_icode.nit:509 */
-  fra.me.REG[4] = fra.me.REG[2];
-  /* ./compiling//compiling_icode.nit:512 */
-  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  fra.me.REG[3] = CALL_compiling___compiling_icode___IAbsCall___compile_call_to_c(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:510 */
+  fra.me.REG[5] = fra.me.REG[3];
+  /* ./compiling//compiling_icode.nit:513 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:513 */
-    fra.me.REG[6] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:514 */
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:516 */
-    REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:515 */
+    CALL_compiling___compiling_icode___I2CCompilerVisitor___escaped_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:517 */
+    REGB0 = CALL_standard___collection___abstract_collection___MapRead___is_empty(fra.me.REG[7])(fra.me.REG[7]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:518 */
-      fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
       /* ./compiling//compiling_icode.nit:519 */
-      REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//compiling_icode.nit:520 */
+      REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[2])(fra.me.REG[2]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:520 */
+        /* ./compiling//compiling_icode.nit:521 */
         if (!once_value_5) {
-          fra.me.REG[7] = BOX_NativeString("tmp");
+          fra.me.REG[8] = BOX_NativeString("tmp");
           REGB0 = TAG_Int(3);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-          once_value_5 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          once_value_5 = fra.me.REG[8];
           register_static_object(&once_value_5);
-        } else fra.me.REG[7] = once_value_5;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-        /* ./compiling//compiling_icode.nit:521 */
+        } else fra.me.REG[8] = once_value_5;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+        /* ./compiling//compiling_icode.nit:522 */
         if (!once_value_6) {
-          fra.me.REG[7] = BOX_NativeString(" = ");
+          fra.me.REG[8] = BOX_NativeString(" = ");
           REGB0 = TAG_Int(3);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-          once_value_6 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          once_value_6 = fra.me.REG[8];
           register_static_object(&once_value_6);
-        } else fra.me.REG[7] = once_value_6;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-        /* ./compiling//compiling_icode.nit:522 */
-        CALL_compiling___compiling_writer___Writer___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        } else fra.me.REG[8] = once_value_6;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
         /* ./compiling//compiling_icode.nit:523 */
+        CALL_compiling___compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        /* ./compiling//compiling_icode.nit:524 */
         if (!once_value_7) {
-          fra.me.REG[7] = BOX_NativeString(";\n");
+          fra.me.REG[8] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-          once_value_7 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          once_value_7 = fra.me.REG[8];
           register_static_object(&once_value_7);
-        } else fra.me.REG[7] = once_value_7;
-        fra.me.REG[7] = fra.me.REG[7];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
-        /* ./compiling//compiling_icode.nit:524 */
-        fra.me.REG[7] = NEW_Writer_compiling___compiling_writer___Writer___init();
-        fra.me.REG[4] = fra.me.REG[7];
+        } else fra.me.REG[8] = once_value_7;
+        fra.me.REG[8] = fra.me.REG[8];
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
         /* ./compiling//compiling_icode.nit:525 */
+        fra.me.REG[8] = NEW_Writer_compiling___compiling_writer___Writer___init();
+        fra.me.REG[5] = fra.me.REG[8];
+        /* ./compiling//compiling_icode.nit:526 */
         if (!once_value_8) {
-          fra.me.REG[7] = BOX_NativeString("tmp");
+          fra.me.REG[8] = BOX_NativeString("tmp");
           REGB0 = TAG_Int(3);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-          once_value_8 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+          once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
-        } else fra.me.REG[7] = once_value_8;
-        fra.me.REG[7] = fra.me.REG[7];
-        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        } else fra.me.REG[8] = once_value_8;
+        fra.me.REG[8] = fra.me.REG[8];
+        REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 525);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 526);
         }
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
       } else {
-        /* ./compiling//compiling_icode.nit:527 */
-        fra.me.REG[4] = NIT_NULL;
         /* ./compiling//compiling_icode.nit:528 */
-        CALL_compiling___compiling_writer___Writer___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        fra.me.REG[5] = NIT_NULL;
         /* ./compiling//compiling_icode.nit:529 */
+        CALL_compiling___compiling_writer___Writer___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        /* ./compiling//compiling_icode.nit:530 */
         if (!once_value_9) {
-          fra.me.REG[2] = BOX_NativeString(";\n");
+          fra.me.REG[3] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-          once_value_9 = fra.me.REG[2];
+          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+          once_value_9 = fra.me.REG[3];
           register_static_object(&once_value_9);
-        } else fra.me.REG[2] = once_value_9;
-        fra.me.REG[2] = fra.me.REG[2];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        } else fra.me.REG[3] = once_value_9;
+        fra.me.REG[3] = fra.me.REG[3];
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       }
-      /* ./compiling//compiling_icode.nit:532 */
-      fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//compiling_icode.nit:533 */
+      fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_10) {
-        fra.me.REG[3] = BOX_NativeString("switch (");
+        fra.me.REG[4] = BOX_NativeString("switch (");
         REGB0 = TAG_Int(8);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-        once_value_10 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        once_value_10 = fra.me.REG[4];
         register_static_object(&once_value_10);
-      } else fra.me.REG[3] = once_value_10;
-      fra.me.REG[3] = fra.me.REG[3];
-      fra.me.REG[3] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+      } else fra.me.REG[4] = once_value_10;
+      fra.me.REG[4] = fra.me.REG[4];
+      fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
       if (!once_value_11) {
-        fra.me.REG[2] = BOX_NativeString("->has_broke) {\n");
+        fra.me.REG[3] = BOX_NativeString("->has_broke) {\n");
         REGB0 = TAG_Int(15);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-        once_value_11 = fra.me.REG[2];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        once_value_11 = fra.me.REG[3];
         register_static_object(&once_value_11);
-      } else fra.me.REG[2] = once_value_11;
-      fra.me.REG[2] = fra.me.REG[2];
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-      /* ./compiling//compiling_icode.nit:533 */
+      } else fra.me.REG[3] = once_value_11;
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      /* ./compiling//compiling_icode.nit:534 */
       CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./compiling//compiling_icode.nit:535 */
+      /* ./compiling//compiling_icode.nit:536 */
       if (!once_value_12) {
-        fra.me.REG[2] = BOX_NativeString("case 0: break;");
+        fra.me.REG[3] = BOX_NativeString("case 0: break;");
         REGB0 = TAG_Int(14);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-        once_value_12 = fra.me.REG[2];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        once_value_12 = fra.me.REG[3];
         register_static_object(&once_value_12);
-      } else fra.me.REG[2] = once_value_12;
-      fra.me.REG[2] = fra.me.REG[2];
-      CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./compiling//compiling_icode.nit:536 */
-      fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
+      } else fra.me.REG[3] = once_value_12;
+      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]);
       /* ./compiling//compiling_icode.nit:537 */
-      fra.me.REG[6] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[6])(fra.me.REG[6]);
+      fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
       /* ./compiling//compiling_icode.nit:538 */
-      REGB0 = TAG_Bool(false);
+      fra.me.REG[7] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[7])(fra.me.REG[7]);
       /* ./compiling//compiling_icode.nit:539 */
+      REGB0 = TAG_Bool(false);
+      /* ./compiling//compiling_icode.nit:540 */
       while(1) {
-        REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[6])(fra.me.REG[6]);
+        REGB1 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[7])(fra.me.REG[7]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//compiling_icode.nit:540 */
-          fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[6])(fra.me.REG[6]);
           /* ./compiling//compiling_icode.nit:541 */
-          REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+          fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[7])(fra.me.REG[7]);
+          /* ./compiling//compiling_icode.nit:542 */
+          REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:544 */
-            fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+            /* ./compiling//compiling_icode.nit:545 */
+            fra.me.REG[8] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
             if (!once_value_13) {
-              fra.me.REG[8] = BOX_NativeString("case ");
+              fra.me.REG[9] = BOX_NativeString("case ");
               REGB1 = TAG_Int(5);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_13 = fra.me.REG[8];
+              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              once_value_13 = fra.me.REG[9];
               register_static_object(&once_value_13);
-            } else fra.me.REG[8] = once_value_13;
-            fra.me.REG[8] = fra.me.REG[8];
-            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-            fra.me.REG[7] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[6])(fra.me.REG[6]);
-            REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+            } else fra.me.REG[9] = once_value_13;
+            fra.me.REG[9] = fra.me.REG[9];
+            fra.me.REG[9] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[8] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[7])(fra.me.REG[7]);
+            REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 544);
+              nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 545);
             }
-            fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-            fra.me.REG[7] = CALL_compiling___compiling_writer___Writer___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]);
+            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
             if (!once_value_14) {
-              fra.me.REG[8] = BOX_NativeString(": ");
+              fra.me.REG[9] = BOX_NativeString(": ");
               REGB1 = TAG_Int(2);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_14 = fra.me.REG[8];
+              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              once_value_14 = fra.me.REG[9];
               register_static_object(&once_value_14);
-            } else fra.me.REG[8] = once_value_14;
-            fra.me.REG[8] = fra.me.REG[8];
-            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+            } else fra.me.REG[9] = once_value_14;
+            fra.me.REG[9] = fra.me.REG[9];
+            fra.me.REG[9] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[9] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[6]);
             if (!once_value_15) {
-              fra.me.REG[7] = BOX_NativeString("->has_broke = 0; goto ");
+              fra.me.REG[8] = BOX_NativeString("->has_broke = 0; goto ");
               REGB1 = TAG_Int(22);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-              once_value_15 = fra.me.REG[7];
+              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              once_value_15 = fra.me.REG[8];
               register_static_object(&once_value_15);
-            } else fra.me.REG[7] = once_value_15;
-            fra.me.REG[7] = fra.me.REG[7];
-            fra.me.REG[7] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-            fra.me.REG[8] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+            } else fra.me.REG[8] = once_value_15;
+            fra.me.REG[8] = fra.me.REG[8];
+            fra.me.REG[8] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+            fra.me.REG[9] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+            fra.me.REG[9] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
             if (!once_value_16) {
-              fra.me.REG[7] = BOX_NativeString(";\n");
+              fra.me.REG[8] = BOX_NativeString(";\n");
               REGB1 = TAG_Int(2);
-              fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-              once_value_16 = fra.me.REG[7];
+              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+              once_value_16 = fra.me.REG[8];
               register_static_object(&once_value_16);
-            } else fra.me.REG[7] = once_value_16;
-            fra.me.REG[7] = fra.me.REG[7];
-            CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
+            } else fra.me.REG[8] = once_value_16;
+            fra.me.REG[8] = fra.me.REG[8];
+            CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
           } else {
-            /* ./compiling//compiling_icode.nit:547 */
+            /* ./compiling//compiling_icode.nit:548 */
             REGB1 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
             if (UNTAG_Bool(REGB1)) {
             } else {
-              nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 547);
+              nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 548);
             }
-            /* ./compiling//compiling_icode.nit:548 */
-            CALL_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
             /* ./compiling//compiling_icode.nit:549 */
+            CALL_compiling___compiling_icode___I2CCompilerVisitor___register_escape_label(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+            /* ./compiling//compiling_icode.nit:550 */
             REGB1 = TAG_Bool(true);
             REGB0 = REGB1;
           }
-          /* ./compiling//compiling_icode.nit:551 */
-          CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[6])(fra.me.REG[6]);
+          /* ./compiling//compiling_icode.nit:552 */
+          CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[7])(fra.me.REG[7]);
         } else {
-          /* ./compiling//compiling_icode.nit:539 */
+          /* ./compiling//compiling_icode.nit:540 */
           goto label17;
         }
       }
       label17: while(0);
-      /* ./compiling//compiling_icode.nit:554 */
+      /* ./compiling//compiling_icode.nit:555 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:557 */
-        fra.me.REG[6] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
+        /* ./compiling//compiling_icode.nit:558 */
+        fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
         if (!once_value_18) {
-          fra.me.REG[5] = BOX_NativeString("default: goto ");
+          fra.me.REG[6] = BOX_NativeString("default: goto ");
           REGB0 = TAG_Int(14);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-          once_value_18 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          once_value_18 = fra.me.REG[6];
           register_static_object(&once_value_18);
-        } else fra.me.REG[5] = once_value_18;
-        fra.me.REG[5] = fra.me.REG[5];
-        fra.me.REG[5] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-        fra.me.REG[6] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[1])(fra.me.REG[1]);
-        REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+        } else fra.me.REG[6] = once_value_18;
+        fra.me.REG[6] = fra.me.REG[6];
+        fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+        fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___return_label(fra.me.REG[1])(fra.me.REG[1]);
+        REGB0 = TAG_Bool(fra.me.REG[7]!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 557);
+          nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 558);
         }
-        fra.me.REG[6] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-        fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+        fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___lab(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
+        fra.me.REG[7] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
         if (!once_value_19) {
-          fra.me.REG[5] = BOX_NativeString(";\n");
+          fra.me.REG[6] = BOX_NativeString(";\n");
           REGB0 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-          once_value_19 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+          once_value_19 = fra.me.REG[6];
           register_static_object(&once_value_19);
-        } else fra.me.REG[5] = once_value_19;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+        } else fra.me.REG[6] = once_value_19;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
       }
-      /* ./compiling//compiling_icode.nit:559 */
-      CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
       /* ./compiling//compiling_icode.nit:560 */
+      CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//compiling_icode.nit:561 */
       if (!once_value_20) {
-        fra.me.REG[5] = BOX_NativeString("}");
+        fra.me.REG[6] = BOX_NativeString("}");
         REGB0 = TAG_Int(1);
-        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-        once_value_20 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+        once_value_20 = fra.me.REG[6];
         register_static_object(&once_value_20);
-      } else fra.me.REG[5] = once_value_20;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+      } else fra.me.REG[6] = once_value_20;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
     }
   }
-  /* ./compiling//compiling_icode.nit:564 */
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* ./compiling//compiling_icode.nit:565 */
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:565 */
-    fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     /* ./compiling//compiling_icode.nit:566 */
-    CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:567 */
+    CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -3914,7 +3980,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./compiling//compiling_icode.nit:498 */
+      /* ./compiling//compiling_icode.nit:499 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -3929,16 +3995,16 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:499 */
+        /* ./compiling//compiling_icode.nit:500 */
         REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 499);
+          nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 500);
         }
         fra.me.REG[0] = CALL_compiling___compiling_icode___IClosureDef___compile_closure(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
-        /* ./compiling//compiling_icode.nit:500 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+        /* ./compiling//compiling_icode.nit:501 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
       } else {
-        /* ./compiling//compiling_icode.nit:502 */
+        /* ./compiling//compiling_icode.nit:503 */
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("NULL");
           REGB0 = TAG_Int(4);
@@ -3947,7 +4013,7 @@ void compiling___compiling_icode___IAbsCall___compile_to_c(val_t p0, val_t p1){
           register_static_object(&once_value_4);
         } else fra.me.REG[0] = once_value_4;
         fra.me.REG[0] = fra.me.REG[0];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
       }
       stack_frame_head = fra.me.prev;
       return;
@@ -3957,289 +4023,313 @@ val_t compiling___compiling_icode___IAbsCall___compile_call_to_c(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 570;
+  fra.me.line = 571;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAbsCall___compile_call_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./compiling//compiling_icode.nit:570 */
-  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 570);
+  /* ./compiling//compiling_icode.nit:571 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___compiling_icode, 571);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
 val_t compiling___compiling_icode___ICall___compile_call_to_c(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-    static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
+    static val_t once_value_2; /* Once value */
   static val_t once_value_3; /* Once value */
   static val_t once_value_4; /* Once value */
   static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 575;
+  fra.me.line = 576;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICall___compile_call_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:577 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
   /* ./compiling//compiling_icode.nit:578 */
+  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* ./compiling//compiling_icode.nit:582 */
+  REGB0 = CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[3] = fra.me.REG[1];
+    goto label1;
+  }
+  /* ./compiling//compiling_icode.nit:584 */
   fra.me.REG[0] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:579 */
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:585 */
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
-    if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("init_table");
+    if (!once_value_2) {
+      fra.me.REG[4] = BOX_NativeString("init_table");
       REGB0 = TAG_Int(10);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(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];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(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;
+    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]);
   }
-  /* ./compiling//compiling_icode.nit:580 */
+  /* ./compiling//compiling_icode.nit:586 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalProperty___meth_call(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:581 */
-  if (!once_value_2) {
+  /* ./compiling//compiling_icode.nit:587 */
+  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);
-    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___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:582 */
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:583 */
-  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);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:584 */
+  /* ./compiling//compiling_icode.nit:588 */
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:589 */
   if (!once_value_4) {
-    fra.me.REG[0] = BOX_NativeString(", ");
+    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);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
   fra.me.REG[0] = fra.me.REG[0];
-  CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:585 */
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:590 */
   if (!once_value_5) {
-    fra.me.REG[0] = BOX_NativeString(")");
-    REGB0 = TAG_Int(1);
+    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);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
   fra.me.REG[0] = fra.me.REG[0];
+  CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:591 */
+  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);
+    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_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:586 */
-  goto label6;
-  label6: while(0);
+  /* ./compiling//compiling_icode.nit:592 */
+  fra.me.REG[3] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
 val_t compiling___compiling_icode___ISuper___compile_call_to_c(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
-    static val_t once_value_1; /* Once value */
-  static val_t once_value_2; /* Once value */
+    static val_t once_value_2; /* Once value */
   static val_t once_value_3; /* Once value */
   static val_t once_value_4; /* Once value */
   static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 591;
+  fra.me.line = 597;
   fra.me.meth = LOCATE_compiling___compiling_icode___ISuper___compile_call_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:593 */
+  /* ./compiling//compiling_icode.nit:601 */
+  REGB0 = CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
+    goto label1;
+  }
+  /* ./compiling//compiling_icode.nit:603 */
   fra.me.REG[0] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:594 */
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:604 */
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    if (!once_value_1) {
-      fra.me.REG[1] = BOX_NativeString("init_table");
+    if (!once_value_2) {
+      fra.me.REG[3] = BOX_NativeString("init_table");
       REGB0 = TAG_Int(10);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(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];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(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[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./compiling//compiling_icode.nit:595 */
-  fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:596 */
-  fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___super_meth_call(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:597 */
-  if (!once_value_2) {
+  /* ./compiling//compiling_icode.nit:605 */
+  fra.me.REG[3] = NEW_Writer_compiling___compiling_writer___Writer___init();
+  /* ./compiling//compiling_icode.nit:606 */
+  fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___super_meth_call(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:607 */
+  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);
-    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___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:598 */
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:599 */
-  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);
     once_value_3 = fra.me.REG[0];
     register_static_object(&once_value_3);
   } else fra.me.REG[0] = once_value_3;
   fra.me.REG[0] = fra.me.REG[0];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:600 */
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:608 */
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:609 */
   if (!once_value_4) {
-    fra.me.REG[0] = BOX_NativeString(", ");
+    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);
     once_value_4 = fra.me.REG[0];
     register_static_object(&once_value_4);
   } else fra.me.REG[0] = once_value_4;
   fra.me.REG[0] = fra.me.REG[0];
-  CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:601 */
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:610 */
   if (!once_value_5) {
-    fra.me.REG[0] = BOX_NativeString(")");
-    REGB0 = TAG_Int(1);
+    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);
     once_value_5 = fra.me.REG[0];
     register_static_object(&once_value_5);
   } else fra.me.REG[0] = once_value_5;
   fra.me.REG[0] = fra.me.REG[0];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:602 */
-  goto label6;
-  label6: while(0);
+  CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:611 */
+  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);
+    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_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:612 */
+  fra.me.REG[1] = fra.me.REG[3];
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
 val_t compiling___compiling_icode___INew___compile_call_to_c(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
-  static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
   static val_t once_value_3; /* Once value */
   static val_t once_value_4; /* Once value */
   static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 607;
+  fra.me.line = 617;
   fra.me.meth = LOCATE_compiling___compiling_icode___INew___compile_call_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:609 */
+  /* ./compiling//compiling_icode.nit:619 */
   fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:610 */
-  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);
-    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_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:611 */
-  fra.me.REG[3] = CALL_icode___icode_base___INew___stype(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(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]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:612 */
+  /* ./compiling//compiling_icode.nit:623 */
+  REGB0 = CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[3] = fra.me.REG[1];
+    goto label1;
+  }
+  /* ./compiling//compiling_icode.nit:625 */
   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);
-    once_value_2 = fra.me.REG[3];
+    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);
+    once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
-  } else fra.me.REG[3] = once_value_2;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:613 */
+  } else fra.me.REG[4] = once_value_2;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:626 */
+  fra.me.REG[4] = CALL_icode___icode_base___INew___stype(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:627 */
+  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);
+    once_value_3 = fra.me.REG[4];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[4] = once_value_3;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:628 */
   fra.me.REG[0] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___cname(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:614 */
-  if (!once_value_3) {
+  /* ./compiling//compiling_icode.nit:629 */
+  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);
-    once_value_3 = fra.me.REG[0];
-    register_static_object(&once_value_3);
-  } else fra.me.REG[0] = once_value_3;
+    once_value_4 = fra.me.REG[0];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[0] = once_value_4;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:615 */
-  if (!once_value_4) {
+  /* ./compiling//compiling_icode.nit:630 */
+  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);
-    once_value_4 = fra.me.REG[0];
-    register_static_object(&once_value_4);
-  } else fra.me.REG[0] = once_value_4;
+    once_value_5 = fra.me.REG[0];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[0] = once_value_5;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:616 */
-  if (!once_value_5) {
+  /* ./compiling//compiling_icode.nit:631 */
+  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);
-    once_value_5 = fra.me.REG[0];
-    register_static_object(&once_value_5);
-  } else fra.me.REG[0] = once_value_5;
+    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_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:617 */
-  goto label6;
-  label6: while(0);
+  /* ./compiling//compiling_icode.nit:632 */
+  fra.me.REG[3] = fra.me.REG[1];
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[3];
 }
 void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -4249,7 +4339,7 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 622;
+  fra.me.line = 637;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAllocateInstance___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4258,12 +4348,12 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:624 */
+  /* ./compiling//compiling_icode.nit:639 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:625 */
+  /* ./compiling//compiling_icode.nit:640 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:626 */
+  /* ./compiling//compiling_icode.nit:641 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("NEW_");
     REGB0 = TAG_Int(4);
@@ -4273,12 +4363,12 @@ void compiling___compiling_icode___IAllocateInstance___compile_to_c(val_t p0, va
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:627 */
+  /* ./compiling//compiling_icode.nit:642 */
   fra.me.REG[0] = CALL_icode___icode_base___IAllocateInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:628 */
+  /* ./compiling//compiling_icode.nit:643 */
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("()");
     REGB0 = TAG_Int(2);
@@ -4300,7 +4390,7 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 633;
+  fra.me.line = 648;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICheckInstance___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4310,12 +4400,12 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:635 */
+  /* ./compiling//compiling_icode.nit:650 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:636 */
+  /* ./compiling//compiling_icode.nit:651 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:637 */
+  /* ./compiling//compiling_icode.nit:652 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("CHECKNEW_");
     REGB0 = TAG_Int(9);
@@ -4325,12 +4415,12 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   } else fra.me.REG[3] = once_value_1;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:638 */
+  /* ./compiling//compiling_icode.nit:653 */
   fra.me.REG[3] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:639 */
+  /* ./compiling//compiling_icode.nit:654 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4340,11 +4430,11 @@ void compiling___compiling_icode___ICheckInstance___compile_to_c(val_t p0, val_t
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:640 */
+  /* ./compiling//compiling_icode.nit:655 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:641 */
+  /* ./compiling//compiling_icode.nit:656 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -4366,7 +4456,7 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 646;
+  fra.me.line = 661;
   fra.me.meth = LOCATE_compiling___compiling_icode___IInitAttributes___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4376,12 +4466,12 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:648 */
+  /* ./compiling//compiling_icode.nit:663 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:649 */
+  /* ./compiling//compiling_icode.nit:664 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:650 */
+  /* ./compiling//compiling_icode.nit:665 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("INIT_ATTRIBUTES__");
     REGB0 = TAG_Int(17);
@@ -4391,12 +4481,12 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   } else fra.me.REG[3] = once_value_1;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:651 */
+  /* ./compiling//compiling_icode.nit:666 */
   fra.me.REG[3] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_compiling___compiling_base___MMLocalClass___cname(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:652 */
+  /* ./compiling//compiling_icode.nit:667 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4406,11 +4496,11 @@ void compiling___compiling_icode___IInitAttributes___compile_to_c(val_t p0, val_
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:653 */
+  /* ./compiling//compiling_icode.nit:668 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:654 */
+  /* ./compiling//compiling_icode.nit:669 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB0 = TAG_Int(3);
@@ -4433,7 +4523,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 659;
+  fra.me.line = 674;
   fra.me.meth = LOCATE_compiling___compiling_icode___IStaticCall___compile_call_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4443,9 +4533,9 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:661 */
+  /* ./compiling//compiling_icode.nit:676 */
   fra.me.REG[1] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:662 */
+  /* ./compiling//compiling_icode.nit:677 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
@@ -4459,13 +4549,13 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
     fra.me.REG[1] = fra.me.REG[1];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:663 */
+  /* ./compiling//compiling_icode.nit:678 */
   fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:664 */
+  /* ./compiling//compiling_icode.nit:679 */
   fra.me.REG[0] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_base___MMLocalProperty___cname(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:665 */
+  /* ./compiling//compiling_icode.nit:680 */
   if (!once_value_2) {
     fra.me.REG[0] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -4475,7 +4565,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   } else fra.me.REG[0] = once_value_2;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:666 */
+  /* ./compiling//compiling_icode.nit:681 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
@@ -4485,7 +4575,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   } else fra.me.REG[0] = once_value_3;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:667 */
+  /* ./compiling//compiling_icode.nit:682 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -4495,7 +4585,7 @@ val_t compiling___compiling_icode___IStaticCall___compile_call_to_c(val_t p0, va
   } else fra.me.REG[0] = once_value_4;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:668 */
+  /* ./compiling//compiling_icode.nit:683 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
@@ -4507,7 +4597,7 @@ void compiling___compiling_icode___INative___compile_to_c(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 673;
+  fra.me.line = 688;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4516,22 +4606,23 @@ void compiling___compiling_icode___INative___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:675 */
+  /* ./compiling//compiling_icode.nit:690 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:676 */
+  /* ./compiling//compiling_icode.nit:691 */
   fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_intern(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:677 */
+    /* ./compiling//compiling_icode.nit:692 */
     CALL_compiling___compiling_icode___INative___compile_intern_method_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   } else {
-    /* ./compiling//compiling_icode.nit:678 */
+    /* ./compiling//compiling_icode.nit:693 */
     fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:679 */
+      /* ./compiling//compiling_icode.nit:694 */
       CALL_compiling___compiling_icode___INative___compile_extern_method_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     }
   }
@@ -4554,7 +4645,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   static val_t once_value_9; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 683;
+  fra.me.line = 698;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_extern_method_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -4567,7 +4658,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:685 */
+  /* ./compiling//compiling_icode.nit:700 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -4582,7 +4673,7 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   fra.me.REG[3] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  fra.me.REG[4] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("___out");
@@ -4594,148 +4685,173 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   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]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:687 */
+  /* ./compiling//compiling_icode.nit:702 */
   fra.me.REG[4] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:688 */
+  /* ./compiling//compiling_icode.nit:703 */
   fra.me.REG[3] = CALL_icode___icode_base___ICodeN___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]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 688);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 703);
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:688 */
+  /* ./compiling//compiling_icode.nit:703 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./compiling//compiling_icode.nit:688 */
+    /* ./compiling//compiling_icode.nit:703 */
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 688);
+    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 703);
   }
-  /* ./compiling//compiling_icode.nit:690 */
+  /* ./compiling//compiling_icode.nit:705 */
   fra.me.REG[3] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___registers(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:692 */
+  /* ./compiling//compiling_icode.nit:707 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//compiling_icode.nit:693 */
+  /* ./compiling//compiling_icode.nit:708 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   fra.me.REG[6] = fra.me.REG[3];
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB0 = TAG_Bool(false);
     REGB2 = REGB0;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label3;
   label3: while(0);
-  /* ./compiling//compiling_icode.nit:693 */
+  /* ./compiling//compiling_icode.nit:708 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-  /* ./compiling//compiling_icode.nit:694 */
+  /* ./compiling//compiling_icode.nit:709 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 694);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 709);
   }
   REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:694 */
+      /* ./compiling//compiling_icode.nit:709 */
       REGB0 = REGB1;
-      /* ./compiling//compiling_icode.nit:695 */
+      /* ./compiling//compiling_icode.nit:710 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[4] = fra.me.REG[3];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB0 = REGB4;
       }
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label4;
       label4: while(0);
-      /* ./compiling//compiling_icode.nit:695 */
+      /* ./compiling//compiling_icode.nit:710 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./compiling//compiling_icode.nit:697 */
+  /* ./compiling//compiling_icode.nit:712 */
   REGB1 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_6) {
@@ -4777,13 +4893,13 @@ void compiling___compiling_icode___INative___compile_extern_method_to_c(val_t p0
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:699 */
+  /* ./compiling//compiling_icode.nit:714 */
   REGB1 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB1)) {
   }
-  /* ./compiling//compiling_icode.nit:700 */
+  /* ./compiling//compiling_icode.nit:715 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:701 */
+  /* ./compiling//compiling_icode.nit:716 */
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -5155,7 +5271,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     static val_t once_value_479; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 704;
+  fra.me.line = 719;
   fra.me.meth = LOCATE_compiling___compiling_icode___INative___compile_intern_method_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -5169,46 +5285,46 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:706 */
+  /* ./compiling//compiling_icode.nit:721 */
   fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:707 */
+  /* ./compiling//compiling_icode.nit:722 */
   fra.me.REG[3] = CALL_icode___icode_base___ICodeN___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]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 707);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 722);
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./compiling//compiling_icode.nit:707 */
+  /* ./compiling//compiling_icode.nit:722 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./compiling//compiling_icode.nit:707 */
+    /* ./compiling//compiling_icode.nit:722 */
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 707);
+    nit_abort("Assert failed", NULL, LOCATE_compiling___compiling_icode, 722);
   }
-  /* ./compiling//compiling_icode.nit:708 */
+  /* ./compiling//compiling_icode.nit:723 */
   fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:709 */
+  /* ./compiling//compiling_icode.nit:724 */
   fra.me.REG[3] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:710 */
+  /* ./compiling//compiling_icode.nit:725 */
   fra.me.REG[4] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___registers(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:711 */
+  /* ./compiling//compiling_icode.nit:726 */
   fra.me.REG[5] = NIT_NULL;
-  /* ./compiling//compiling_icode.nit:712 */
+  /* ./compiling//compiling_icode.nit:727 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[6] = BOX_NativeString("Int");
@@ -5230,7 +5346,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:713 */
+    /* ./compiling//compiling_icode.nit:728 */
     if (!once_value_3) {
       if (!once_value_4) {
         fra.me.REG[6] = BOX_NativeString("object_id");
@@ -5252,48 +5368,58 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./compiling//compiling_icode.nit:714 */
+      /* ./compiling//compiling_icode.nit:729 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[6] = fra.me.REG[4];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB0 = TAG_Bool(false);
         REGB2 = REGB0;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label5;
       label5: while(0);
-      /* ./compiling//compiling_icode.nit:714 */
+      /* ./compiling//compiling_icode.nit:729 */
       fra.me.REG[5] = fra.me.REG[6];
     } else {
-      /* ./compiling//compiling_icode.nit:715 */
+      /* ./compiling//compiling_icode.nit:730 */
       if (!once_value_6) {
         if (!once_value_7) {
           fra.me.REG[6] = BOX_NativeString("unary -");
@@ -5315,7 +5441,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./compiling//compiling_icode.nit:716 */
+        /* ./compiling//compiling_icode.nit:731 */
         REGB1 = TAG_Int(3);
         fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_8) {
@@ -5328,43 +5454,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         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:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[7] = fra.me.REG[4];
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB0 = TAG_Bool(false);
           REGB2 = REGB0;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label9;
         label9: while(0);
-        /* ./compiling//compiling_icode.nit:716 */
+        /* ./compiling//compiling_icode.nit:731 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
         if (!once_value_10) {
           fra.me.REG[7] = BOX_NativeString("))");
@@ -5378,7 +5514,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
         fra.me.REG[5] = fra.me.REG[6];
       } else {
-        /* ./compiling//compiling_icode.nit:717 */
+        /* ./compiling//compiling_icode.nit:732 */
         if (!once_value_11) {
           if (!once_value_12) {
             fra.me.REG[6] = BOX_NativeString("output");
@@ -5400,7 +5536,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//compiling_icode.nit:718 */
+          /* ./compiling//compiling_icode.nit:733 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_13) {
@@ -5413,43 +5549,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           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:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB2 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB0 = TAG_Bool(false);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label14;
           label14: while(0);
-          /* ./compiling//compiling_icode.nit:718 */
+          /* ./compiling//compiling_icode.nit:733 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           if (!once_value_15) {
             fra.me.REG[7] = BOX_NativeString("));");
@@ -5463,7 +5609,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
           fra.me.REG[5] = fra.me.REG[6];
         } else {
-          /* ./compiling//compiling_icode.nit:719 */
+          /* ./compiling//compiling_icode.nit:734 */
           if (!once_value_16) {
             if (!once_value_17) {
               fra.me.REG[6] = BOX_NativeString("ascii");
@@ -5485,7 +5631,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:720 */
+            /* ./compiling//compiling_icode.nit:735 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_18) {
@@ -5498,43 +5644,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             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:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB2 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB0 = TAG_Bool(false);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label19;
             label19: while(0);
-            /* ./compiling//compiling_icode.nit:720 */
+            /* ./compiling//compiling_icode.nit:735 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             if (!once_value_20) {
               fra.me.REG[7] = BOX_NativeString("))");
@@ -5548,7 +5704,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[5] = fra.me.REG[6];
           } else {
-            /* ./compiling//compiling_icode.nit:721 */
+            /* ./compiling//compiling_icode.nit:736 */
             if (!once_value_21) {
               if (!once_value_22) {
                fra.me.REG[6] = BOX_NativeString("succ");
@@ -5570,7 +5726,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:722 */
+              /* ./compiling//compiling_icode.nit:737 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_23) {
@@ -5583,43 +5739,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               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:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB2 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label24;
               label24: while(0);
-              /* ./compiling//compiling_icode.nit:722 */
+              /* ./compiling//compiling_icode.nit:737 */
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_25) {
                fra.me.REG[7] = BOX_NativeString(")+1)");
@@ -5633,7 +5799,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
               fra.me.REG[5] = fra.me.REG[6];
             } else {
-              /* ./compiling//compiling_icode.nit:723 */
+              /* ./compiling//compiling_icode.nit:738 */
               if (!once_value_26) {
                if (!once_value_27) {
                fra.me.REG[6] = BOX_NativeString("prec");
@@ -5655,7 +5821,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:724 */
+               /* ./compiling//compiling_icode.nit:739 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_28) {
@@ -5668,43 +5834,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label29;
                label29: while(0);
-               /* ./compiling//compiling_icode.nit:724 */
+               /* ./compiling//compiling_icode.nit:739 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_30) {
                fra.me.REG[7] = BOX_NativeString(")-1)");
@@ -5718,7 +5894,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:725 */
+               /* ./compiling//compiling_icode.nit:740 */
                if (!once_value_31) {
                if (!once_value_32) {
                fra.me.REG[6] = BOX_NativeString("to_f");
@@ -5740,7 +5916,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:726 */
+               /* ./compiling//compiling_icode.nit:741 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_33) {
@@ -5753,43 +5929,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label34;
                label34: while(0);
-               /* ./compiling//compiling_icode.nit:726 */
+               /* ./compiling//compiling_icode.nit:741 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_35) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -5803,7 +5989,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:727 */
+               /* ./compiling//compiling_icode.nit:742 */
                if (!once_value_36) {
                if (!once_value_37) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -5825,7 +6011,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:728 */
+               /* ./compiling//compiling_icode.nit:743 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_38) {
@@ -5838,43 +6024,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label39;
                label39: while(0);
-               /* ./compiling//compiling_icode.nit:728 */
+               /* ./compiling//compiling_icode.nit:743 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_40) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Int(");
@@ -5886,43 +6082,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label41;
                label41: while(0);
-               /* ./compiling//compiling_icode.nit:728 */
+               /* ./compiling//compiling_icode.nit:743 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_42) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -5936,7 +6142,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:729 */
+               /* ./compiling//compiling_icode.nit:744 */
                if (!once_value_43) {
                if (!once_value_44) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -5958,7 +6164,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:730 */
+               /* ./compiling//compiling_icode.nit:745 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_45) {
@@ -5971,43 +6177,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label46;
                label46: while(0);
-               /* ./compiling//compiling_icode.nit:730 */
+               /* ./compiling//compiling_icode.nit:745 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_47) {
                fra.me.REG[7] = BOX_NativeString(")-UNTAG_Int(");
@@ -6019,43 +6235,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label48;
                label48: while(0);
-               /* ./compiling//compiling_icode.nit:730 */
+               /* ./compiling//compiling_icode.nit:745 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_49) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6069,7 +6295,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:731 */
+               /* ./compiling//compiling_icode.nit:746 */
                if (!once_value_50) {
                if (!once_value_51) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -6091,7 +6317,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:732 */
+               /* ./compiling//compiling_icode.nit:747 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_52) {
@@ -6104,43 +6330,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label53;
                label53: while(0);
-               /* ./compiling//compiling_icode.nit:732 */
+               /* ./compiling//compiling_icode.nit:747 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_54) {
                fra.me.REG[7] = BOX_NativeString(")*UNTAG_Int(");
@@ -6152,43 +6388,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label55;
                label55: while(0);
-               /* ./compiling//compiling_icode.nit:732 */
+               /* ./compiling//compiling_icode.nit:747 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_56) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6202,7 +6448,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:733 */
+               /* ./compiling//compiling_icode.nit:748 */
                if (!once_value_57) {
                if (!once_value_58) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -6224,7 +6470,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:734 */
+               /* ./compiling//compiling_icode.nit:749 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_59) {
@@ -6237,43 +6483,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label60;
                label60: while(0);
-               /* ./compiling//compiling_icode.nit:734 */
+               /* ./compiling//compiling_icode.nit:749 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_61) {
                fra.me.REG[7] = BOX_NativeString(")/UNTAG_Int(");
@@ -6285,43 +6541,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label62;
                label62: while(0);
-               /* ./compiling//compiling_icode.nit:734 */
+               /* ./compiling//compiling_icode.nit:749 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_63) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6335,7 +6601,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:735 */
+               /* ./compiling//compiling_icode.nit:750 */
                if (!once_value_64) {
                if (!once_value_65) {
                fra.me.REG[6] = BOX_NativeString("%");
@@ -6357,7 +6623,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:736 */
+               /* ./compiling//compiling_icode.nit:751 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_66) {
@@ -6370,43 +6636,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label67;
                label67: while(0);
-               /* ./compiling//compiling_icode.nit:736 */
+               /* ./compiling//compiling_icode.nit:751 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_68) {
                fra.me.REG[7] = BOX_NativeString(")%UNTAG_Int(");
@@ -6418,43 +6694,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label69;
                label69: while(0);
-               /* ./compiling//compiling_icode.nit:736 */
+               /* ./compiling//compiling_icode.nit:751 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_70) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6468,7 +6754,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:737 */
+               /* ./compiling//compiling_icode.nit:752 */
                if (!once_value_71) {
                if (!once_value_72) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -6490,7 +6776,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:738 */
+               /* ./compiling//compiling_icode.nit:753 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_73) {
@@ -6503,43 +6789,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label74;
                label74: while(0);
-               /* ./compiling//compiling_icode.nit:738 */
+               /* ./compiling//compiling_icode.nit:753 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_75) {
                fra.me.REG[7] = BOX_NativeString(")<UNTAG_Int(");
@@ -6551,43 +6847,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label76;
                label76: while(0);
-               /* ./compiling//compiling_icode.nit:738 */
+               /* ./compiling//compiling_icode.nit:753 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_77) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6601,7 +6907,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:739 */
+               /* ./compiling//compiling_icode.nit:754 */
                if (!once_value_78) {
                if (!once_value_79) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -6623,7 +6929,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:740 */
+               /* ./compiling//compiling_icode.nit:755 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_80) {
@@ -6636,43 +6942,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label81;
                label81: while(0);
-               /* ./compiling//compiling_icode.nit:740 */
+               /* ./compiling//compiling_icode.nit:755 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_82) {
                fra.me.REG[7] = BOX_NativeString(")>UNTAG_Int(");
@@ -6684,43 +7000,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label83;
                label83: while(0);
-               /* ./compiling//compiling_icode.nit:740 */
+               /* ./compiling//compiling_icode.nit:755 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_84) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6734,7 +7060,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:741 */
+               /* ./compiling//compiling_icode.nit:756 */
                if (!once_value_85) {
                if (!once_value_86) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -6756,7 +7082,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:742 */
+               /* ./compiling//compiling_icode.nit:757 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_87) {
@@ -6769,43 +7095,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label88;
                label88: while(0);
-               /* ./compiling//compiling_icode.nit:742 */
+               /* ./compiling//compiling_icode.nit:757 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_89) {
                fra.me.REG[7] = BOX_NativeString(")<=UNTAG_Int(");
@@ -6817,43 +7153,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label90;
                label90: while(0);
-               /* ./compiling//compiling_icode.nit:742 */
+               /* ./compiling//compiling_icode.nit:757 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_91) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -6867,7 +7213,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:743 */
+               /* ./compiling//compiling_icode.nit:758 */
                if (!once_value_92) {
                if (!once_value_93) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -6889,7 +7235,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:744 */
+               /* ./compiling//compiling_icode.nit:759 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_94) {
@@ -6902,43 +7248,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label95;
                label95: while(0);
-               /* ./compiling//compiling_icode.nit:744 */
+               /* ./compiling//compiling_icode.nit:759 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_96) {
                fra.me.REG[7] = BOX_NativeString(")>=UNTAG_Int(");
@@ -6950,43 +7306,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label97;
                label97: while(0);
-               /* ./compiling//compiling_icode.nit:744 */
+               /* ./compiling//compiling_icode.nit:759 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_98) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7000,7 +7366,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:745 */
+               /* ./compiling//compiling_icode.nit:760 */
                if (!once_value_99) {
                if (!once_value_100) {
                fra.me.REG[6] = BOX_NativeString("lshift");
@@ -7022,7 +7388,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:746 */
+               /* ./compiling//compiling_icode.nit:761 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_101) {
@@ -7035,43 +7401,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label102;
                label102: while(0);
-               /* ./compiling//compiling_icode.nit:746 */
+               /* ./compiling//compiling_icode.nit:761 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_103) {
                fra.me.REG[7] = BOX_NativeString(")<<UNTAG_Int(");
@@ -7083,43 +7459,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label104;
                label104: while(0);
-               /* ./compiling//compiling_icode.nit:746 */
+               /* ./compiling//compiling_icode.nit:761 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_105) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7133,7 +7519,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:747 */
+               /* ./compiling//compiling_icode.nit:762 */
                if (!once_value_106) {
                if (!once_value_107) {
                fra.me.REG[6] = BOX_NativeString("rshift");
@@ -7155,7 +7541,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:748 */
+               /* ./compiling//compiling_icode.nit:763 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_108) {
@@ -7168,43 +7554,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label109;
                label109: while(0);
-               /* ./compiling//compiling_icode.nit:748 */
+               /* ./compiling//compiling_icode.nit:763 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_110) {
                fra.me.REG[7] = BOX_NativeString(")>>UNTAG_Int(");
@@ -7216,43 +7612,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label111;
                label111: while(0);
-               /* ./compiling//compiling_icode.nit:748 */
+               /* ./compiling//compiling_icode.nit:763 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_112) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7266,7 +7672,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:749 */
+               /* ./compiling//compiling_icode.nit:764 */
                if (!once_value_113) {
                if (!once_value_114) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -7288,7 +7694,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:750 */
+               /* ./compiling//compiling_icode.nit:765 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_115) {
@@ -7301,43 +7707,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label116;
                label116: while(0);
-               /* ./compiling//compiling_icode.nit:750 */
+               /* ./compiling//compiling_icode.nit:765 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_117) {
                fra.me.REG[7] = BOX_NativeString(")==(");
@@ -7349,43 +7765,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label118;
                label118: while(0);
-               /* ./compiling//compiling_icode.nit:750 */
+               /* ./compiling//compiling_icode.nit:765 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_119) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7399,7 +7825,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:751 */
+               /* ./compiling//compiling_icode.nit:766 */
                if (!once_value_120) {
                if (!once_value_121) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -7421,7 +7847,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:752 */
+               /* ./compiling//compiling_icode.nit:767 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_122) {
@@ -7434,43 +7860,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label123;
                label123: while(0);
-               /* ./compiling//compiling_icode.nit:752 */
+               /* ./compiling//compiling_icode.nit:767 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_124) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
@@ -7482,43 +7918,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label125;
                label125: while(0);
-               /* ./compiling//compiling_icode.nit:752 */
+               /* ./compiling//compiling_icode.nit:767 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_126) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7552,7 +7998,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       }
     }
   } else {
-    /* ./compiling//compiling_icode.nit:754 */
+    /* ./compiling//compiling_icode.nit:769 */
     if (!once_value_127) {
       if (!once_value_128) {
         fra.me.REG[6] = BOX_NativeString("Float");
@@ -7574,7 +8020,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./compiling//compiling_icode.nit:755 */
+      /* ./compiling//compiling_icode.nit:770 */
       if (!once_value_129) {
         if (!once_value_130) {
           fra.me.REG[6] = BOX_NativeString("object_id");
@@ -7596,7 +8042,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./compiling//compiling_icode.nit:756 */
+        /* ./compiling//compiling_icode.nit:771 */
         REGB1 = TAG_Int(3);
         fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_131) {
@@ -7609,43 +8055,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         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:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[7] = fra.me.REG[4];
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB0 = TAG_Bool(false);
           REGB2 = REGB0;
         }
         if (UNTAG_Bool(REGB2)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label132;
         label132: while(0);
-        /* ./compiling//compiling_icode.nit:756 */
+        /* ./compiling//compiling_icode.nit:771 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
         if (!once_value_133) {
           fra.me.REG[7] = BOX_NativeString("))");
@@ -7659,7 +8115,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
         fra.me.REG[5] = fra.me.REG[6];
       } else {
-        /* ./compiling//compiling_icode.nit:757 */
+        /* ./compiling//compiling_icode.nit:772 */
         if (!once_value_134) {
           if (!once_value_135) {
             fra.me.REG[6] = BOX_NativeString("unary -");
@@ -7681,7 +8137,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//compiling_icode.nit:758 */
+          /* ./compiling//compiling_icode.nit:773 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_136) {
@@ -7694,43 +8150,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           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:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB2 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB0 = TAG_Bool(false);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label137;
           label137: while(0);
-          /* ./compiling//compiling_icode.nit:758 */
+          /* ./compiling//compiling_icode.nit:773 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           if (!once_value_138) {
             fra.me.REG[7] = BOX_NativeString("))");
@@ -7744,7 +8210,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
           fra.me.REG[5] = fra.me.REG[6];
         } else {
-          /* ./compiling//compiling_icode.nit:759 */
+          /* ./compiling//compiling_icode.nit:774 */
           if (!once_value_139) {
             if (!once_value_140) {
               fra.me.REG[6] = BOX_NativeString("output");
@@ -7766,7 +8232,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:760 */
+            /* ./compiling//compiling_icode.nit:775 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_141) {
@@ -7779,43 +8245,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             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:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB2 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB0 = TAG_Bool(false);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label142;
             label142: while(0);
-            /* ./compiling//compiling_icode.nit:760 */
+            /* ./compiling//compiling_icode.nit:775 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             if (!once_value_143) {
               fra.me.REG[7] = BOX_NativeString("));");
@@ -7829,7 +8305,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[5] = fra.me.REG[6];
           } else {
-            /* ./compiling//compiling_icode.nit:761 */
+            /* ./compiling//compiling_icode.nit:776 */
             if (!once_value_144) {
               if (!once_value_145) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -7851,7 +8327,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:762 */
+              /* ./compiling//compiling_icode.nit:777 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_146) {
@@ -7864,43 +8340,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               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:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB2 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label147;
               label147: while(0);
-              /* ./compiling//compiling_icode.nit:762 */
+              /* ./compiling//compiling_icode.nit:777 */
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_148) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -7914,7 +8400,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
               fra.me.REG[5] = fra.me.REG[6];
             } else {
-              /* ./compiling//compiling_icode.nit:763 */
+              /* ./compiling//compiling_icode.nit:778 */
               if (!once_value_149) {
                if (!once_value_150) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -7936,7 +8422,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:764 */
+               /* ./compiling//compiling_icode.nit:779 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_151) {
@@ -7949,43 +8435,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label152;
                label152: while(0);
-               /* ./compiling//compiling_icode.nit:764 */
+               /* ./compiling//compiling_icode.nit:779 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_153) {
                fra.me.REG[7] = BOX_NativeString(")+UNBOX_Float(");
@@ -7997,43 +8493,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label154;
                label154: while(0);
-               /* ./compiling//compiling_icode.nit:764 */
+               /* ./compiling//compiling_icode.nit:779 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_155) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8047,7 +8553,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:765 */
+               /* ./compiling//compiling_icode.nit:780 */
                if (!once_value_156) {
                if (!once_value_157) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -8069,7 +8575,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:766 */
+               /* ./compiling//compiling_icode.nit:781 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_158) {
@@ -8082,43 +8588,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label159;
                label159: while(0);
-               /* ./compiling//compiling_icode.nit:766 */
+               /* ./compiling//compiling_icode.nit:781 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_160) {
                fra.me.REG[7] = BOX_NativeString(")-UNBOX_Float(");
@@ -8130,43 +8646,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label161;
                label161: while(0);
-               /* ./compiling//compiling_icode.nit:766 */
+               /* ./compiling//compiling_icode.nit:781 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_162) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8180,7 +8706,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:767 */
+               /* ./compiling//compiling_icode.nit:782 */
                if (!once_value_163) {
                if (!once_value_164) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -8202,7 +8728,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:768 */
+               /* ./compiling//compiling_icode.nit:783 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_165) {
@@ -8215,43 +8741,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label166;
                label166: while(0);
-               /* ./compiling//compiling_icode.nit:768 */
+               /* ./compiling//compiling_icode.nit:783 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_167) {
                fra.me.REG[7] = BOX_NativeString(")*UNBOX_Float(");
@@ -8263,43 +8799,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label168;
                label168: while(0);
-               /* ./compiling//compiling_icode.nit:768 */
+               /* ./compiling//compiling_icode.nit:783 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_169) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8313,7 +8859,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:769 */
+               /* ./compiling//compiling_icode.nit:784 */
                if (!once_value_170) {
                if (!once_value_171) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -8335,7 +8881,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:770 */
+               /* ./compiling//compiling_icode.nit:785 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_172) {
@@ -8348,43 +8894,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label173;
                label173: while(0);
-               /* ./compiling//compiling_icode.nit:770 */
+               /* ./compiling//compiling_icode.nit:785 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_174) {
                fra.me.REG[7] = BOX_NativeString(")/UNBOX_Float(");
@@ -8396,43 +8952,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label175;
                label175: while(0);
-               /* ./compiling//compiling_icode.nit:770 */
+               /* ./compiling//compiling_icode.nit:785 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_176) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8446,7 +9012,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:771 */
+               /* ./compiling//compiling_icode.nit:786 */
                if (!once_value_177) {
                if (!once_value_178) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -8468,7 +9034,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:772 */
+               /* ./compiling//compiling_icode.nit:787 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_179) {
@@ -8481,43 +9047,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label180;
                label180: while(0);
-               /* ./compiling//compiling_icode.nit:772 */
+               /* ./compiling//compiling_icode.nit:787 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_181) {
                fra.me.REG[7] = BOX_NativeString(")<UNBOX_Float(");
@@ -8529,43 +9105,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label182;
                label182: while(0);
-               /* ./compiling//compiling_icode.nit:772 */
+               /* ./compiling//compiling_icode.nit:787 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_183) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8579,7 +9165,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:773 */
+               /* ./compiling//compiling_icode.nit:788 */
                if (!once_value_184) {
                if (!once_value_185) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -8601,7 +9187,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:774 */
+               /* ./compiling//compiling_icode.nit:789 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_186) {
@@ -8614,43 +9200,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label187;
                label187: while(0);
-               /* ./compiling//compiling_icode.nit:774 */
+               /* ./compiling//compiling_icode.nit:789 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_188) {
                fra.me.REG[7] = BOX_NativeString(")>UNBOX_Float(");
@@ -8662,43 +9258,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label189;
                label189: while(0);
-               /* ./compiling//compiling_icode.nit:774 */
+               /* ./compiling//compiling_icode.nit:789 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_190) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8712,7 +9318,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:775 */
+               /* ./compiling//compiling_icode.nit:790 */
                if (!once_value_191) {
                if (!once_value_192) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -8734,7 +9340,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:776 */
+               /* ./compiling//compiling_icode.nit:791 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_193) {
@@ -8747,43 +9353,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label194;
                label194: while(0);
-               /* ./compiling//compiling_icode.nit:776 */
+               /* ./compiling//compiling_icode.nit:791 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_195) {
                fra.me.REG[7] = BOX_NativeString(")<=UNBOX_Float(");
@@ -8795,43 +9411,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label196;
                label196: while(0);
-               /* ./compiling//compiling_icode.nit:776 */
+               /* ./compiling//compiling_icode.nit:791 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_197) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8845,7 +9471,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:777 */
+               /* ./compiling//compiling_icode.nit:792 */
                if (!once_value_198) {
                if (!once_value_199) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -8867,7 +9493,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:778 */
+               /* ./compiling//compiling_icode.nit:793 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_200) {
@@ -8880,43 +9506,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label201;
                label201: while(0);
-               /* ./compiling//compiling_icode.nit:778 */
+               /* ./compiling//compiling_icode.nit:793 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_202) {
                fra.me.REG[7] = BOX_NativeString(")>=UNBOX_Float(");
@@ -8928,43 +9564,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label203;
                label203: while(0);
-               /* ./compiling//compiling_icode.nit:778 */
+               /* ./compiling//compiling_icode.nit:793 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_204) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -8990,7 +9636,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         }
       }
     } else {
-      /* ./compiling//compiling_icode.nit:780 */
+      /* ./compiling//compiling_icode.nit:795 */
       if (!once_value_205) {
         if (!once_value_206) {
           fra.me.REG[6] = BOX_NativeString("Char");
@@ -9012,7 +9658,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./compiling//compiling_icode.nit:781 */
+        /* ./compiling//compiling_icode.nit:796 */
         if (!once_value_207) {
           if (!once_value_208) {
             fra.me.REG[6] = BOX_NativeString("object_id");
@@ -9034,7 +9680,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//compiling_icode.nit:782 */
+          /* ./compiling//compiling_icode.nit:797 */
           REGB1 = TAG_Int(3);
           fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_209) {
@@ -9047,43 +9693,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           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:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB2 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB0 = TAG_Bool(false);
             REGB2 = REGB0;
           }
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label210;
           label210: while(0);
-          /* ./compiling//compiling_icode.nit:782 */
+          /* ./compiling//compiling_icode.nit:797 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
           if (!once_value_211) {
             fra.me.REG[7] = BOX_NativeString("))");
@@ -9097,7 +9753,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
           fra.me.REG[5] = fra.me.REG[6];
         } else {
-          /* ./compiling//compiling_icode.nit:783 */
+          /* ./compiling//compiling_icode.nit:798 */
           if (!once_value_212) {
             if (!once_value_213) {
               fra.me.REG[6] = BOX_NativeString("unary -");
@@ -9119,7 +9775,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:784 */
+            /* ./compiling//compiling_icode.nit:799 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_214) {
@@ -9132,43 +9788,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             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:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB2 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB0 = TAG_Bool(false);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label215;
             label215: while(0);
-            /* ./compiling//compiling_icode.nit:784 */
+            /* ./compiling//compiling_icode.nit:799 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             if (!once_value_216) {
               fra.me.REG[7] = BOX_NativeString("))");
@@ -9182,7 +9848,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[5] = fra.me.REG[6];
           } else {
-            /* ./compiling//compiling_icode.nit:785 */
+            /* ./compiling//compiling_icode.nit:800 */
             if (!once_value_217) {
               if (!once_value_218) {
                fra.me.REG[6] = BOX_NativeString("output");
@@ -9204,7 +9870,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:786 */
+              /* ./compiling//compiling_icode.nit:801 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_219) {
@@ -9217,43 +9883,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               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:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB2 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label220;
               label220: while(0);
-              /* ./compiling//compiling_icode.nit:786 */
+              /* ./compiling//compiling_icode.nit:801 */
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_221) {
                fra.me.REG[7] = BOX_NativeString("));");
@@ -9267,7 +9943,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
               fra.me.REG[5] = fra.me.REG[6];
             } else {
-              /* ./compiling//compiling_icode.nit:787 */
+              /* ./compiling//compiling_icode.nit:802 */
               if (!once_value_222) {
                if (!once_value_223) {
                fra.me.REG[6] = BOX_NativeString("ascii");
@@ -9289,7 +9965,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:788 */
+               /* ./compiling//compiling_icode.nit:803 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_224) {
@@ -9302,43 +9978,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label225;
                label225: while(0);
-               /* ./compiling//compiling_icode.nit:788 */
+               /* ./compiling//compiling_icode.nit:803 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_226) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -9352,7 +10038,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:789 */
+               /* ./compiling//compiling_icode.nit:804 */
                if (!once_value_227) {
                if (!once_value_228) {
                fra.me.REG[6] = BOX_NativeString("succ");
@@ -9374,7 +10060,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:790 */
+               /* ./compiling//compiling_icode.nit:805 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_229) {
@@ -9387,43 +10073,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label230;
                label230: while(0);
-               /* ./compiling//compiling_icode.nit:790 */
+               /* ./compiling//compiling_icode.nit:805 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_231) {
                fra.me.REG[7] = BOX_NativeString(")+1)");
@@ -9437,7 +10133,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:791 */
+               /* ./compiling//compiling_icode.nit:806 */
                if (!once_value_232) {
                if (!once_value_233) {
                fra.me.REG[6] = BOX_NativeString("prec");
@@ -9459,7 +10155,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:792 */
+               /* ./compiling//compiling_icode.nit:807 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_234) {
@@ -9472,43 +10168,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label235;
                label235: while(0);
-               /* ./compiling//compiling_icode.nit:792 */
+               /* ./compiling//compiling_icode.nit:807 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_236) {
                fra.me.REG[7] = BOX_NativeString(")-1)");
@@ -9522,7 +10228,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:793 */
+               /* ./compiling//compiling_icode.nit:808 */
                if (!once_value_237) {
                if (!once_value_238) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -9544,7 +10250,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:794 */
+               /* ./compiling//compiling_icode.nit:809 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_239) {
@@ -9557,43 +10263,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label240;
                label240: while(0);
-               /* ./compiling//compiling_icode.nit:794 */
+               /* ./compiling//compiling_icode.nit:809 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_241) {
                fra.me.REG[7] = BOX_NativeString(")-'0')");
@@ -9607,7 +10323,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:795 */
+               /* ./compiling//compiling_icode.nit:810 */
                if (!once_value_242) {
                if (!once_value_243) {
                fra.me.REG[6] = BOX_NativeString("+");
@@ -9629,7 +10345,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:796 */
+               /* ./compiling//compiling_icode.nit:811 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_244) {
@@ -9642,43 +10358,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label245;
                label245: while(0);
-               /* ./compiling//compiling_icode.nit:796 */
+               /* ./compiling//compiling_icode.nit:811 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_246) {
                fra.me.REG[7] = BOX_NativeString(")+UNTAG_Char(");
@@ -9690,43 +10416,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label247;
                label247: while(0);
-               /* ./compiling//compiling_icode.nit:796 */
+               /* ./compiling//compiling_icode.nit:811 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_248) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -9740,7 +10476,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:797 */
+               /* ./compiling//compiling_icode.nit:812 */
                if (!once_value_249) {
                if (!once_value_250) {
                fra.me.REG[6] = BOX_NativeString("-");
@@ -9762,7 +10498,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:798 */
+               /* ./compiling//compiling_icode.nit:813 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_251) {
@@ -9775,43 +10511,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label252;
                label252: while(0);
-               /* ./compiling//compiling_icode.nit:798 */
+               /* ./compiling//compiling_icode.nit:813 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_253) {
                fra.me.REG[7] = BOX_NativeString(")-UNTAG_Char(");
@@ -9823,43 +10569,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label254;
                label254: while(0);
-               /* ./compiling//compiling_icode.nit:798 */
+               /* ./compiling//compiling_icode.nit:813 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_255) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -9873,7 +10629,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:799 */
+               /* ./compiling//compiling_icode.nit:814 */
                if (!once_value_256) {
                if (!once_value_257) {
                fra.me.REG[6] = BOX_NativeString("*");
@@ -9895,7 +10651,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:800 */
+               /* ./compiling//compiling_icode.nit:815 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_258) {
@@ -9908,43 +10664,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label259;
                label259: while(0);
-               /* ./compiling//compiling_icode.nit:800 */
+               /* ./compiling//compiling_icode.nit:815 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_260) {
                fra.me.REG[7] = BOX_NativeString(")*UNTAG_Char(");
@@ -9956,43 +10722,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label261;
                label261: while(0);
-               /* ./compiling//compiling_icode.nit:800 */
+               /* ./compiling//compiling_icode.nit:815 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_262) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10006,7 +10782,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:801 */
+               /* ./compiling//compiling_icode.nit:816 */
                if (!once_value_263) {
                if (!once_value_264) {
                fra.me.REG[6] = BOX_NativeString("/");
@@ -10028,7 +10804,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:802 */
+               /* ./compiling//compiling_icode.nit:817 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_265) {
@@ -10041,43 +10817,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label266;
                label266: while(0);
-               /* ./compiling//compiling_icode.nit:802 */
+               /* ./compiling//compiling_icode.nit:817 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_267) {
                fra.me.REG[7] = BOX_NativeString(")/UNTAG_Char(");
@@ -10089,43 +10875,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label268;
                label268: while(0);
-               /* ./compiling//compiling_icode.nit:802 */
+               /* ./compiling//compiling_icode.nit:817 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_269) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10139,7 +10935,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:803 */
+               /* ./compiling//compiling_icode.nit:818 */
                if (!once_value_270) {
                if (!once_value_271) {
                fra.me.REG[6] = BOX_NativeString("%");
@@ -10161,7 +10957,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:804 */
+               /* ./compiling//compiling_icode.nit:819 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_272) {
@@ -10174,43 +10970,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label273;
                label273: while(0);
-               /* ./compiling//compiling_icode.nit:804 */
+               /* ./compiling//compiling_icode.nit:819 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_274) {
                fra.me.REG[7] = BOX_NativeString(")%UNTAG_Char(");
@@ -10222,43 +11028,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label275;
                label275: while(0);
-               /* ./compiling//compiling_icode.nit:804 */
+               /* ./compiling//compiling_icode.nit:819 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_276) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10272,7 +11088,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:805 */
+               /* ./compiling//compiling_icode.nit:820 */
                if (!once_value_277) {
                if (!once_value_278) {
                fra.me.REG[6] = BOX_NativeString("<");
@@ -10294,7 +11110,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:806 */
+               /* ./compiling//compiling_icode.nit:821 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_279) {
@@ -10307,43 +11123,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label280;
                label280: while(0);
-               /* ./compiling//compiling_icode.nit:806 */
+               /* ./compiling//compiling_icode.nit:821 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_281) {
                fra.me.REG[7] = BOX_NativeString(")<UNTAG_Char(");
@@ -10355,43 +11181,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label282;
                label282: while(0);
-               /* ./compiling//compiling_icode.nit:806 */
+               /* ./compiling//compiling_icode.nit:821 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_283) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10405,7 +11241,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:807 */
+               /* ./compiling//compiling_icode.nit:822 */
                if (!once_value_284) {
                if (!once_value_285) {
                fra.me.REG[6] = BOX_NativeString(">");
@@ -10427,7 +11263,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:808 */
+               /* ./compiling//compiling_icode.nit:823 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_286) {
@@ -10440,43 +11276,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label287;
                label287: while(0);
-               /* ./compiling//compiling_icode.nit:808 */
+               /* ./compiling//compiling_icode.nit:823 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_288) {
                fra.me.REG[7] = BOX_NativeString(")>UNTAG_Char(");
@@ -10488,43 +11334,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label289;
                label289: while(0);
-               /* ./compiling//compiling_icode.nit:808 */
+               /* ./compiling//compiling_icode.nit:823 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_290) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10538,7 +11394,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:809 */
+               /* ./compiling//compiling_icode.nit:824 */
                if (!once_value_291) {
                if (!once_value_292) {
                fra.me.REG[6] = BOX_NativeString("<=");
@@ -10560,7 +11416,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:810 */
+               /* ./compiling//compiling_icode.nit:825 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_293) {
@@ -10573,43 +11429,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label294;
                label294: while(0);
-               /* ./compiling//compiling_icode.nit:810 */
+               /* ./compiling//compiling_icode.nit:825 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_295) {
                fra.me.REG[7] = BOX_NativeString(")<=UNTAG_Char(");
@@ -10621,43 +11487,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label296;
                label296: while(0);
-               /* ./compiling//compiling_icode.nit:810 */
+               /* ./compiling//compiling_icode.nit:825 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_297) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10671,7 +11547,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:811 */
+               /* ./compiling//compiling_icode.nit:826 */
                if (!once_value_298) {
                if (!once_value_299) {
                fra.me.REG[6] = BOX_NativeString(">=");
@@ -10693,7 +11569,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:812 */
+               /* ./compiling//compiling_icode.nit:827 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_300) {
@@ -10706,43 +11582,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label301;
                label301: while(0);
-               /* ./compiling//compiling_icode.nit:812 */
+               /* ./compiling//compiling_icode.nit:827 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_302) {
                fra.me.REG[7] = BOX_NativeString(")>=UNTAG_Char(");
@@ -10754,43 +11640,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label303;
                label303: while(0);
-               /* ./compiling//compiling_icode.nit:812 */
+               /* ./compiling//compiling_icode.nit:827 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_304) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10804,7 +11700,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:813 */
+               /* ./compiling//compiling_icode.nit:828 */
                if (!once_value_305) {
                if (!once_value_306) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -10826,7 +11722,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:814 */
+               /* ./compiling//compiling_icode.nit:829 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_307) {
@@ -10839,43 +11735,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label308;
                label308: while(0);
-               /* ./compiling//compiling_icode.nit:814 */
+               /* ./compiling//compiling_icode.nit:829 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_309) {
                fra.me.REG[7] = BOX_NativeString(")==(");
@@ -10887,43 +11793,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label310;
                label310: while(0);
-               /* ./compiling//compiling_icode.nit:814 */
+               /* ./compiling//compiling_icode.nit:829 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_311) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -10937,7 +11853,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:815 */
+               /* ./compiling//compiling_icode.nit:830 */
                if (!once_value_312) {
                if (!once_value_313) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -10959,7 +11875,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:816 */
+               /* ./compiling//compiling_icode.nit:831 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_314) {
@@ -10972,43 +11888,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label315;
                label315: while(0);
-               /* ./compiling//compiling_icode.nit:816 */
+               /* ./compiling//compiling_icode.nit:831 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_316) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
@@ -11020,43 +11946,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label317;
                label317: while(0);
-               /* ./compiling//compiling_icode.nit:816 */
+               /* ./compiling//compiling_icode.nit:831 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_318) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11088,7 +12024,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           }
         }
       } else {
-        /* ./compiling//compiling_icode.nit:818 */
+        /* ./compiling//compiling_icode.nit:833 */
         if (!once_value_319) {
           if (!once_value_320) {
             fra.me.REG[6] = BOX_NativeString("Bool");
@@ -11110,7 +12046,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//compiling_icode.nit:819 */
+          /* ./compiling//compiling_icode.nit:834 */
           if (!once_value_321) {
             if (!once_value_322) {
               fra.me.REG[6] = BOX_NativeString("object_id");
@@ -11132,7 +12068,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:820 */
+            /* ./compiling//compiling_icode.nit:835 */
             REGB1 = TAG_Int(3);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_323) {
@@ -11145,43 +12081,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             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:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB2 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB0 = TAG_Bool(false);
               REGB2 = REGB0;
             }
             if (UNTAG_Bool(REGB2)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label324;
             label324: while(0);
-            /* ./compiling//compiling_icode.nit:820 */
+            /* ./compiling//compiling_icode.nit:835 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
             if (!once_value_325) {
               fra.me.REG[7] = BOX_NativeString("))");
@@ -11195,7 +12141,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
             fra.me.REG[5] = fra.me.REG[6];
           } else {
-            /* ./compiling//compiling_icode.nit:821 */
+            /* ./compiling//compiling_icode.nit:836 */
             if (!once_value_326) {
               if (!once_value_327) {
                fra.me.REG[6] = BOX_NativeString("unary -");
@@ -11217,7 +12163,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:822 */
+              /* ./compiling//compiling_icode.nit:837 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_328) {
@@ -11230,43 +12176,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               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:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB2 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label329;
               label329: while(0);
-              /* ./compiling//compiling_icode.nit:822 */
+              /* ./compiling//compiling_icode.nit:837 */
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_330) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11280,7 +12236,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
               fra.me.REG[5] = fra.me.REG[6];
             } else {
-              /* ./compiling//compiling_icode.nit:823 */
+              /* ./compiling//compiling_icode.nit:838 */
               if (!once_value_331) {
                if (!once_value_332) {
                fra.me.REG[6] = BOX_NativeString("output");
@@ -11302,7 +12258,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:824 */
+               /* ./compiling//compiling_icode.nit:839 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_333) {
@@ -11315,43 +12271,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label334;
                label334: while(0);
-               /* ./compiling//compiling_icode.nit:824 */
+               /* ./compiling//compiling_icode.nit:839 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_335) {
                fra.me.REG[7] = BOX_NativeString(")?\"true\\n\":\"false\\n\");");
@@ -11365,7 +12331,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:825 */
+               /* ./compiling//compiling_icode.nit:840 */
                if (!once_value_336) {
                if (!once_value_337) {
                fra.me.REG[6] = BOX_NativeString("ascii");
@@ -11387,7 +12353,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:826 */
+               /* ./compiling//compiling_icode.nit:841 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_338) {
@@ -11400,43 +12366,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label339;
                label339: while(0);
-               /* ./compiling//compiling_icode.nit:826 */
+               /* ./compiling//compiling_icode.nit:841 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_340) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11450,7 +12426,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:827 */
+               /* ./compiling//compiling_icode.nit:842 */
                if (!once_value_341) {
                if (!once_value_342) {
                fra.me.REG[6] = BOX_NativeString("to_i");
@@ -11472,7 +12448,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:828 */
+               /* ./compiling//compiling_icode.nit:843 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_343) {
@@ -11485,43 +12461,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label344;
                label344: while(0);
-               /* ./compiling//compiling_icode.nit:828 */
+               /* ./compiling//compiling_icode.nit:843 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_345) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11535,7 +12521,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:829 */
+               /* ./compiling//compiling_icode.nit:844 */
                if (!once_value_346) {
                if (!once_value_347) {
                fra.me.REG[6] = BOX_NativeString("==");
@@ -11557,7 +12543,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:830 */
+               /* ./compiling//compiling_icode.nit:845 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_348) {
@@ -11570,43 +12556,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label349;
                label349: while(0);
-               /* ./compiling//compiling_icode.nit:830 */
+               /* ./compiling//compiling_icode.nit:845 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_350) {
                fra.me.REG[7] = BOX_NativeString(")==(");
@@ -11618,43 +12614,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label351;
                label351: while(0);
-               /* ./compiling//compiling_icode.nit:830 */
+               /* ./compiling//compiling_icode.nit:845 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_352) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11668,7 +12674,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:831 */
+               /* ./compiling//compiling_icode.nit:846 */
                if (!once_value_353) {
                if (!once_value_354) {
                fra.me.REG[6] = BOX_NativeString("!=");
@@ -11690,7 +12696,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:832 */
+               /* ./compiling//compiling_icode.nit:847 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_355) {
@@ -11703,43 +12709,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label356;
                label356: while(0);
-               /* ./compiling//compiling_icode.nit:832 */
+               /* ./compiling//compiling_icode.nit:847 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_357) {
                fra.me.REG[7] = BOX_NativeString(")!=(");
@@ -11751,43 +12767,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label358;
                label358: while(0);
-               /* ./compiling//compiling_icode.nit:832 */
+               /* ./compiling//compiling_icode.nit:847 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_359) {
                fra.me.REG[7] = BOX_NativeString("))");
@@ -11808,7 +12834,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             }
           }
         } else {
-          /* ./compiling//compiling_icode.nit:834 */
+          /* ./compiling//compiling_icode.nit:849 */
           if (!once_value_360) {
             if (!once_value_361) {
               fra.me.REG[6] = BOX_NativeString("NativeArray");
@@ -11830,7 +12856,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./compiling//compiling_icode.nit:835 */
+            /* ./compiling//compiling_icode.nit:850 */
             if (!once_value_362) {
               if (!once_value_363) {
                fra.me.REG[6] = BOX_NativeString("object_id");
@@ -11852,7 +12878,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:836 */
+              /* ./compiling//compiling_icode.nit:851 */
               REGB1 = TAG_Int(3);
               fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_364) {
@@ -11865,43 +12891,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               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:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[7] = fra.me.REG[4];
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB2 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
               }
               if (UNTAG_Bool(REGB2)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label365;
               label365: while(0);
-              /* ./compiling//compiling_icode.nit:836 */
+              /* ./compiling//compiling_icode.nit:851 */
               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
               if (!once_value_366) {
                fra.me.REG[7] = BOX_NativeString(")->object_id)");
@@ -11915,7 +12951,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
               fra.me.REG[5] = fra.me.REG[6];
             } else {
-              /* ./compiling//compiling_icode.nit:837 */
+              /* ./compiling//compiling_icode.nit:852 */
               if (!once_value_367) {
                if (!once_value_368) {
                fra.me.REG[6] = BOX_NativeString("[]");
@@ -11937,7 +12973,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:838 */
+               /* ./compiling//compiling_icode.nit:853 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_369) {
@@ -11950,43 +12986,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label370;
                label370: while(0);
-               /* ./compiling//compiling_icode.nit:838 */
+               /* ./compiling//compiling_icode.nit:853 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_371) {
                fra.me.REG[7] = BOX_NativeString(")->val[UNTAG_Int(");
@@ -11998,43 +13044,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label372;
                label372: while(0);
-               /* ./compiling//compiling_icode.nit:838 */
+               /* ./compiling//compiling_icode.nit:853 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_373) {
                fra.me.REG[7] = BOX_NativeString(")]");
@@ -12048,7 +13104,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:839 */
+               /* ./compiling//compiling_icode.nit:854 */
                if (!once_value_374) {
                if (!once_value_375) {
                fra.me.REG[6] = BOX_NativeString("[]=");
@@ -12070,7 +13126,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:840 */
+               /* ./compiling//compiling_icode.nit:855 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_376) {
@@ -12083,43 +13139,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label377;
                label377: while(0);
-               /* ./compiling//compiling_icode.nit:840 */
+               /* ./compiling//compiling_icode.nit:855 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_378) {
                fra.me.REG[7] = BOX_NativeString(")->val[UNTAG_Int(");
@@ -12131,43 +13197,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label379;
                label379: while(0);
-               /* ./compiling//compiling_icode.nit:840 */
+               /* ./compiling//compiling_icode.nit:855 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_380) {
                fra.me.REG[7] = BOX_NativeString(")]=");
@@ -12179,43 +13255,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label381;
                label381: while(0);
-               /* ./compiling//compiling_icode.nit:840 */
+               /* ./compiling//compiling_icode.nit:855 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_382) {
                fra.me.REG[7] = BOX_NativeString("");
@@ -12229,7 +13315,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:841 */
+               /* ./compiling//compiling_icode.nit:856 */
                if (!once_value_383) {
                if (!once_value_384) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
@@ -12251,7 +13337,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:842 */
+               /* ./compiling//compiling_icode.nit:857 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_385) {
@@ -12264,43 +13350,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label386;
                label386: while(0);
-               /* ./compiling//compiling_icode.nit:842 */
+               /* ./compiling//compiling_icode.nit:857 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_387) {
                fra.me.REG[7] = BOX_NativeString(")->val, ((Nit_NativeArray)");
@@ -12312,43 +13408,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label388;
                label388: while(0);
-               /* ./compiling//compiling_icode.nit:842 */
+               /* ./compiling//compiling_icode.nit:857 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_389) {
                fra.me.REG[7] = BOX_NativeString(")->val, UNTAG_Int(");
@@ -12360,43 +13466,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[7] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label390;
                label390: while(0);
-               /* ./compiling//compiling_icode.nit:842 */
+               /* ./compiling//compiling_icode.nit:857 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
                if (!once_value_391) {
                fra.me.REG[7] = BOX_NativeString(")*sizeof(val_t))");
@@ -12414,7 +13530,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               }
             }
           } else {
-            /* ./compiling//compiling_icode.nit:844 */
+            /* ./compiling//compiling_icode.nit:859 */
             if (!once_value_392) {
               if (!once_value_393) {
                fra.me.REG[6] = BOX_NativeString("NativeString");
@@ -12436,7 +13552,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./compiling//compiling_icode.nit:845 */
+              /* ./compiling//compiling_icode.nit:860 */
               if (!once_value_394) {
                if (!once_value_395) {
                fra.me.REG[6] = BOX_NativeString("object_id");
@@ -12458,7 +13574,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:846 */
+               /* ./compiling//compiling_icode.nit:861 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_396) {
@@ -12471,43 +13587,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label397;
                label397: while(0);
-               /* ./compiling//compiling_icode.nit:846 */
+               /* ./compiling//compiling_icode.nit:861 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_398) {
                fra.me.REG[2] = BOX_NativeString("))");
@@ -12521,7 +13647,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:847 */
+               /* ./compiling//compiling_icode.nit:862 */
                if (!once_value_399) {
                if (!once_value_400) {
                fra.me.REG[6] = BOX_NativeString("atoi");
@@ -12543,7 +13669,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:848 */
+               /* ./compiling//compiling_icode.nit:863 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_401) {
@@ -12556,43 +13682,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label402;
                label402: while(0);
-               /* ./compiling//compiling_icode.nit:848 */
+               /* ./compiling//compiling_icode.nit:863 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_403) {
                fra.me.REG[2] = BOX_NativeString(")))");
@@ -12606,7 +13742,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:849 */
+               /* ./compiling//compiling_icode.nit:864 */
                if (!once_value_404) {
                if (!once_value_405) {
                fra.me.REG[6] = BOX_NativeString("[]");
@@ -12628,7 +13764,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:850 */
+               /* ./compiling//compiling_icode.nit:865 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_406) {
@@ -12641,43 +13777,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label407;
                label407: while(0);
-               /* ./compiling//compiling_icode.nit:850 */
+               /* ./compiling//compiling_icode.nit:865 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_408) {
                fra.me.REG[2] = BOX_NativeString(")[UNTAG_Int(");
@@ -12689,43 +13835,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label409;
                label409: while(0);
-               /* ./compiling//compiling_icode.nit:850 */
+               /* ./compiling//compiling_icode.nit:865 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_410) {
                fra.me.REG[2] = BOX_NativeString(")])");
@@ -12739,7 +13895,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:851 */
+               /* ./compiling//compiling_icode.nit:866 */
                if (!once_value_411) {
                if (!once_value_412) {
                fra.me.REG[6] = BOX_NativeString("[]=");
@@ -12761,7 +13917,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:852 */
+               /* ./compiling//compiling_icode.nit:867 */
                REGB1 = TAG_Int(7);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_413) {
@@ -12774,43 +13930,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label414;
                label414: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
+               /* ./compiling//compiling_icode.nit:867 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_415) {
                fra.me.REG[2] = BOX_NativeString(")[UNTAG_Int(");
@@ -12822,43 +13988,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label416;
                label416: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
+               /* ./compiling//compiling_icode.nit:867 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_417) {
                fra.me.REG[2] = BOX_NativeString(")]=UNTAG_Char(");
@@ -12870,43 +14046,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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(2);
-               /* ./../lib/standard//collection//array.nit:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label418;
                label418: while(0);
-               /* ./compiling//compiling_icode.nit:852 */
+               /* ./compiling//compiling_icode.nit:867 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_419) {
                fra.me.REG[2] = BOX_NativeString(");");
@@ -12920,7 +14106,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:853 */
+               /* ./compiling//compiling_icode.nit:868 */
                if (!once_value_420) {
                if (!once_value_421) {
                fra.me.REG[6] = BOX_NativeString("copy_to");
@@ -12942,7 +14128,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                REGB1 = TAG_Int(11);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_422) {
@@ -12955,43 +14141,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label423;
                label423: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_424) {
                fra.me.REG[2] = BOX_NativeString(")+UNTAG_Int(");
@@ -13003,43 +14199,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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(4);
-               /* ./../lib/standard//collection//array.nit:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label425;
                label425: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_426) {
                fra.me.REG[2] = BOX_NativeString("), UNBOX_NativeString(");
@@ -13051,43 +14257,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label427;
                label427: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_428) {
                fra.me.REG[2] = BOX_NativeString(")+UNTAG_Int(");
@@ -13099,43 +14315,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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(3);
-               /* ./../lib/standard//collection//array.nit:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label429;
                label429: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_430) {
                fra.me.REG[2] = BOX_NativeString("), UNTAG_Int(");
@@ -13147,43 +14373,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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(2);
-               /* ./../lib/standard//collection//array.nit:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label431;
                label431: while(0);
-               /* ./compiling//compiling_icode.nit:854 */
+               /* ./compiling//compiling_icode.nit:869 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_432) {
                fra.me.REG[2] = BOX_NativeString("));");
@@ -13202,7 +14438,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                }
               }
             } else {
-              /* ./compiling//compiling_icode.nit:856 */
+              /* ./compiling//compiling_icode.nit:871 */
               if (!once_value_433) {
                if (!once_value_434) {
                fra.me.REG[6] = BOX_NativeString("object_id");
@@ -13224,7 +14460,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:857 */
+               /* ./compiling//compiling_icode.nit:872 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_435) {
@@ -13237,43 +14473,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label436;
                label436: while(0);
-               /* ./compiling//compiling_icode.nit:857 */
+               /* ./compiling//compiling_icode.nit:872 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_437) {
                fra.me.REG[2] = BOX_NativeString(")[1].object_id)");
@@ -13287,7 +14533,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
               } else {
-               /* ./compiling//compiling_icode.nit:858 */
+               /* ./compiling//compiling_icode.nit:873 */
                if (!once_value_438) {
                if (!once_value_439) {
                fra.me.REG[6] = BOX_NativeString("sys");
@@ -13309,7 +14555,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:859 */
+               /* ./compiling//compiling_icode.nit:874 */
                if (!once_value_440) {
                fra.me.REG[6] = BOX_NativeString("(G_sys)");
                REGB1 = TAG_Int(7);
@@ -13320,7 +14566,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = fra.me.REG[6];
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:860 */
+               /* ./compiling//compiling_icode.nit:875 */
                if (!once_value_441) {
                if (!once_value_442) {
                fra.me.REG[6] = BOX_NativeString("is_same_type");
@@ -13342,7 +14588,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:861 */
+               /* ./compiling//compiling_icode.nit:876 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_443) {
@@ -13355,43 +14601,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label444;
                label444: while(0);
-               /* ./compiling//compiling_icode.nit:861 */
+               /* ./compiling//compiling_icode.nit:876 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_445) {
                fra.me.REG[2] = BOX_NativeString(")==VAL2VFT(");
@@ -13403,43 +14659,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label446;
                label446: while(0);
-               /* ./compiling//compiling_icode.nit:861 */
+               /* ./compiling//compiling_icode.nit:876 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_447) {
                fra.me.REG[2] = BOX_NativeString(")))");
@@ -13453,7 +14719,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:862 */
+               /* ./compiling//compiling_icode.nit:877 */
                if (!once_value_448) {
                if (!once_value_449) {
                fra.me.REG[6] = BOX_NativeString("exit");
@@ -13475,7 +14741,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:863 */
+               /* ./compiling//compiling_icode.nit:878 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_450) {
@@ -13488,43 +14754,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label451;
                label451: while(0);
-               /* ./compiling//compiling_icode.nit:863 */
+               /* ./compiling//compiling_icode.nit:878 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_452) {
                fra.me.REG[2] = BOX_NativeString("));");
@@ -13538,7 +14814,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:864 */
+               /* ./compiling//compiling_icode.nit:879 */
                if (!once_value_453) {
                if (!once_value_454) {
                fra.me.REG[6] = BOX_NativeString("calloc_array");
@@ -13560,7 +14836,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:865 */
+               /* ./compiling//compiling_icode.nit:880 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_455) {
@@ -13573,43 +14849,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label456;
                label456: while(0);
-               /* ./compiling//compiling_icode.nit:865 */
+               /* ./compiling//compiling_icode.nit:880 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_457) {
                fra.me.REG[2] = BOX_NativeString("), sizeof(val_t))");
@@ -13623,7 +14909,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:866 */
+               /* ./compiling//compiling_icode.nit:881 */
                if (!once_value_458) {
                if (!once_value_459) {
                fra.me.REG[6] = BOX_NativeString("calloc_string");
@@ -13645,7 +14931,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:867 */
+               /* ./compiling//compiling_icode.nit:882 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_460) {
@@ -13658,43 +14944,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label461;
                label461: while(0);
-               /* ./compiling//compiling_icode.nit:867 */
+               /* ./compiling//compiling_icode.nit:882 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_462) {
                fra.me.REG[2] = BOX_NativeString(") * sizeof(char))))");
@@ -13708,7 +15004,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:869 */
+               /* ./compiling//compiling_icode.nit:884 */
                if (!once_value_463) {
                if (!once_value_464) {
                fra.me.REG[6] = BOX_NativeString("output_class_name");
@@ -13730,7 +15026,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:870 */
+               /* ./compiling//compiling_icode.nit:885 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_465) {
@@ -13743,43 +15039,53 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[4];
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label466;
                label466: while(0);
-               /* ./compiling//compiling_icode.nit:870 */
+               /* ./compiling//compiling_icode.nit:885 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                if (!once_value_467) {
                fra.me.REG[2] = BOX_NativeString(")[2].cname);");
@@ -13793,7 +15099,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
                fra.me.REG[5] = fra.me.REG[6];
                } else {
-               /* ./compiling//compiling_icode.nit:872 */
+               /* ./compiling//compiling_icode.nit:887 */
                if (!once_value_468) {
                if (!once_value_469) {
                fra.me.REG[6] = BOX_NativeString("native_class_name");
@@ -13815,7 +15121,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                REGB1 = REGB2;
                }
                if (UNTAG_Bool(REGB1)) {
-               /* ./compiling//compiling_icode.nit:873 */
+               /* ./compiling//compiling_icode.nit:888 */
                REGB1 = TAG_Int(3);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_470) {
@@ -13828,41 +15134,51 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
                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:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB2 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB0 = TAG_Bool(false);
                REGB2 = REGB0;
                }
                if (UNTAG_Bool(REGB2)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label471;
                label471: while(0);
-               /* ./compiling//compiling_icode.nit:873 */
+               /* ./compiling//compiling_icode.nit:888 */
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
                if (!once_value_472) {
                fra.me.REG[4] = BOX_NativeString(")[2].cname);");
@@ -13889,7 +15205,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       }
     }
   }
-  /* ./compiling//compiling_icode.nit:876 */
+  /* ./compiling//compiling_icode.nit:891 */
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -13903,9 +15219,9 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     }
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:877 */
+    /* ./compiling//compiling_icode.nit:892 */
     fra.me.REG[6] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./compiling//compiling_icode.nit:878 */
+    /* ./compiling//compiling_icode.nit:893 */
     REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
@@ -13933,7 +15249,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 878);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 893);
       }
       fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
@@ -13949,7 +15265,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
     }
-    /* ./compiling//compiling_icode.nit:879 */
+    /* ./compiling//compiling_icode.nit:894 */
     REGB1 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_475) {
@@ -13975,7 +15291,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     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___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:880 */
+    /* ./compiling//compiling_icode.nit:895 */
     if (!once_value_477) {
       fra.me.REG[4] = BOX_NativeString("nit_exit(1);");
       REGB1 = TAG_Int(12);
@@ -13985,7 +15301,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     } else fra.me.REG[4] = once_value_477;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:881 */
+    /* ./compiling//compiling_icode.nit:896 */
     if (!once_value_478) {
       fra.me.REG[4] = BOX_NativeString("NIT_NULL");
       REGB1 = TAG_Int(8);
@@ -13996,7 +15312,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     fra.me.REG[4] = fra.me.REG[4];
     fra.me.REG[5] = fra.me.REG[4];
   }
-  /* ./compiling//compiling_icode.nit:883 */
+  /* ./compiling//compiling_icode.nit:898 */
   fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -14011,7 +15327,7 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     }
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:884 */
+    /* ./compiling//compiling_icode.nit:899 */
     fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[4] = CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_479) {
@@ -14024,12 +15340,12 @@ void compiling___compiling_icode___INative___compile_intern_method_to_c(val_t p0
     fra.me.REG[6] = fra.me.REG[6];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   } else {
-    /* ./compiling//compiling_icode.nit:885 */
+    /* ./compiling//compiling_icode.nit:900 */
     REGB1 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB1)) {
-      /* ./compiling//compiling_icode.nit:886 */
+      /* ./compiling//compiling_icode.nit:901 */
       fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-      /* ./compiling//compiling_icode.nit:887 */
+      /* ./compiling//compiling_icode.nit:902 */
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
     }
   }
@@ -14044,7 +15360,7 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 893;
+  fra.me.line = 908;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIntValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14053,12 +15369,12 @@ void compiling___compiling_icode___IIntValue___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:895 */
+  /* ./compiling//compiling_icode.nit:910 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:896 */
+  /* ./compiling//compiling_icode.nit:911 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:897 */
+  /* ./compiling//compiling_icode.nit:912 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Int(");
     REGB0 = TAG_Int(8);
@@ -14093,7 +15409,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 902;
+  fra.me.line = 917;
   fra.me.meth = LOCATE_compiling___compiling_icode___IBoolValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14102,12 +15418,12 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:904 */
+  /* ./compiling//compiling_icode.nit:919 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:905 */
+  /* ./compiling//compiling_icode.nit:920 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:906 */
+  /* ./compiling//compiling_icode.nit:921 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14117,7 +15433,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:907 */
+  /* ./compiling//compiling_icode.nit:922 */
   REGB0 = CALL_icode___icode_base___IBoolValue___value(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_2) {
@@ -14140,7 +15456,7 @@ void compiling___compiling_icode___IBoolValue___compile_to_c(val_t p0, val_t p1)
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:908 */
+  /* ./compiling//compiling_icode.nit:923 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14161,7 +15477,7 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 913;
+  fra.me.line = 928;
   fra.me.meth = LOCATE_compiling___compiling_icode___ICharValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14170,12 +15486,12 @@ void compiling___compiling_icode___ICharValue___compile_to_c(val_t p0, val_t p1)
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:915 */
+  /* ./compiling//compiling_icode.nit:930 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:916 */
+  /* ./compiling//compiling_icode.nit:931 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:917 */
+  /* ./compiling//compiling_icode.nit:932 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("TAG_Char(");
     REGB0 = TAG_Int(9);
@@ -14207,7 +15523,7 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
   static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 922;
+  fra.me.line = 937;
   fra.me.meth = LOCATE_compiling___compiling_icode___IFloatValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14216,12 +15532,12 @@ void compiling___compiling_icode___IFloatValue___compile_to_c(val_t p0, val_t p1
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:924 */
+  /* ./compiling//compiling_icode.nit:939 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:925 */
+  /* ./compiling//compiling_icode.nit:940 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:926 */
+  /* ./compiling//compiling_icode.nit:941 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_Float(");
     REGB0 = TAG_Int(10);
@@ -14253,7 +15569,7 @@ void compiling___compiling_icode___IStringValue___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 931;
+  fra.me.line = 946;
   fra.me.meth = LOCATE_compiling___compiling_icode___IStringValue___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14262,12 +15578,12 @@ void compiling___compiling_icode___IStringValue___compile_to_c(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:933 */
+  /* ./compiling//compiling_icode.nit:948 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:934 */
+  /* ./compiling//compiling_icode.nit:949 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:935 */
+  /* ./compiling//compiling_icode.nit:950 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("BOX_NativeString(\"");
     REGB0 = TAG_Int(18);
@@ -14307,7 +15623,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 940;
+  fra.me.line = 955;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAbort___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -14316,12 +15632,12 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:942 */
+  /* ./compiling//compiling_icode.nit:957 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:943 */
+  /* ./compiling//compiling_icode.nit:958 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:944 */
+  /* ./compiling//compiling_icode.nit:959 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("nit_abort(\"");
     REGB0 = TAG_Int(11);
@@ -14331,61 +15647,76 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:945 */
+  /* ./compiling//compiling_icode.nit:960 */
   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:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label2;
   label2: while(0);
-  /* ./compiling//compiling_icode.nit:945 */
+  /* ./compiling//compiling_icode.nit:960 */
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:946 */
+  /* ./compiling//compiling_icode.nit:961 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:946 */
+  /* ./compiling//compiling_icode.nit:961 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./compiling//compiling_icode.nit:946 */
+  /* ./compiling//compiling_icode.nit:961 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:947 */
+    /* ./compiling//compiling_icode.nit:962 */
     if (!once_value_3) {
       fra.me.REG[2] = BOX_NativeString("\", \"");
       REGB1 = TAG_Int(4);
@@ -14395,46 +15726,56 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     } else fra.me.REG[2] = once_value_3;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:948 */
+    /* ./compiling//compiling_icode.nit:963 */
     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:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB0 = REGB2;
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label4;
     label4: while(0);
-    /* ./compiling//compiling_icode.nit:948 */
+    /* ./compiling//compiling_icode.nit:963 */
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:949 */
+    /* ./compiling//compiling_icode.nit:964 */
     if (!once_value_5) {
       fra.me.REG[2] = BOX_NativeString("\"");
       REGB1 = TAG_Int(1);
@@ -14445,7 +15786,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[2] = fra.me.REG[2];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   } else {
-    /* ./compiling//compiling_icode.nit:951 */
+    /* ./compiling//compiling_icode.nit:966 */
     if (!once_value_6) {
       fra.me.REG[2] = BOX_NativeString("\", NULL");
       REGB1 = TAG_Int(7);
@@ -14456,7 +15797,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[2] = fra.me.REG[2];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./compiling//compiling_icode.nit:953 */
+  /* ./compiling//compiling_icode.nit:968 */
   if (!once_value_7) {
     fra.me.REG[2] = BOX_NativeString(", LOCATE_");
     REGB1 = TAG_Int(9);
@@ -14466,13 +15807,13 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[2] = once_value_7;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:954 */
+  /* ./compiling//compiling_icode.nit:969 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbort___module_location(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_compiling___compiling_base___MMModule___cname(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:955 */
+  /* ./compiling//compiling_icode.nit:970 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:956 */
+  /* ./compiling//compiling_icode.nit:971 */
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -14487,7 +15828,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:957 */
+    /* ./compiling//compiling_icode.nit:972 */
     if (!once_value_8) {
       fra.me.REG[2] = BOX_NativeString(", ");
       REGB1 = TAG_Int(2);
@@ -14497,16 +15838,16 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     } else fra.me.REG[2] = once_value_8;
     fra.me.REG[2] = fra.me.REG[2];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:958 */
+    /* ./compiling//compiling_icode.nit:973 */
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 958);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 973);
     }
     REGB1 = CALL_location___Location___line_start(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[0] = CALL_standard___string___Object___to_s(REGB1)(REGB1);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* ./compiling//compiling_icode.nit:960 */
+    /* ./compiling//compiling_icode.nit:975 */
     if (!once_value_9) {
       fra.me.REG[0] = BOX_NativeString(", 0");
       REGB1 = TAG_Int(3);
@@ -14517,7 +15858,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:962 */
+  /* ./compiling//compiling_icode.nit:977 */
   if (!once_value_10) {
     fra.me.REG[0] = BOX_NativeString(");\n");
     REGB1 = TAG_Int(3);
@@ -14531,7 +15872,7 @@ void compiling___compiling_icode___IAbort___compile_to_c(val_t p0, val_t p1){
   return;
 }
 void compiling___compiling_icode___IMove___compile_to_c(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -14539,72 +15880,75 @@ void compiling___compiling_icode___IMove___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 967;
+  fra.me.line = 982;
   fra.me.meth = LOCATE_compiling___compiling_icode___IMove___compile_to_c;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:969 */
-  REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:982 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./compiling//compiling_icode.nit:984 */
+  REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:970 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:971 */
-  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+  /* ./compiling//compiling_icode.nit:985 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:986 */
+  fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 971);
+    nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 986);
   }
-  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:972 */
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
+  fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:987 */
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:973 */
-  fra.me.REG[0] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:974 */
+  /* ./compiling//compiling_icode.nit:988 */
+  fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:989 */
   fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:975 */
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:976 */
+  /* ./compiling//compiling_icode.nit:990 */
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:991 */
   if (!once_value_2) {
-    fra.me.REG[3] = BOX_NativeString(" = ");
+    fra.me.REG[4] = BOX_NativeString(" = ");
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-    once_value_2 = fra.me.REG[3];
+    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+    once_value_2 = fra.me.REG[4];
     register_static_object(&once_value_2);
-  } else fra.me.REG[3] = once_value_2;
-  fra.me.REG[3] = fra.me.REG[3];
+  } else fra.me.REG[4] = once_value_2;
+  fra.me.REG[4] = fra.me.REG[4];
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:992 */
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:977 */
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:978 */
+  /* ./compiling//compiling_icode.nit:993 */
   if (!once_value_3) {
-    fra.me.REG[2] = BOX_NativeString(";\n");
+    fra.me.REG[3] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-    once_value_3 = fra.me.REG[2];
+    fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+    once_value_3 = fra.me.REG[3];
     register_static_object(&once_value_3);
-  } else fra.me.REG[2] = once_value_3;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  } else fra.me.REG[3] = once_value_3;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -14617,7 +15961,7 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 983;
+  fra.me.line = 998;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrRead___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14627,23 +15971,23 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:985 */
+  /* ./compiling//compiling_icode.nit:1000 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:986 */
+  /* ./compiling//compiling_icode.nit:1001 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:987 */
+  /* ./compiling//compiling_icode.nit:1002 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:988 */
+  /* ./compiling//compiling_icode.nit:1003 */
   fra.me.REG[3] = CALL_icode___icode_base___IAttrRead___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_compiling___compiling_base___MMGlobalProperty___attr_access(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:989 */
+  /* ./compiling//compiling_icode.nit:1004 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14653,11 +15997,11 @@ void compiling___compiling_icode___IAttrRead___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:990 */
+  /* ./compiling//compiling_icode.nit:1005 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:991 */
+  /* ./compiling//compiling_icode.nit:1006 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(")");
     REGB0 = TAG_Int(1);
@@ -14680,7 +16024,7 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(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_compiling___compiling_icode;
-  fra.me.line = 996;
+  fra.me.line = 1011;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrIsset___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14690,18 +16034,18 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:998 */
+  /* ./compiling//compiling_icode.nit:1013 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:999 */
+  /* ./compiling//compiling_icode.nit:1014 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1000 */
+  /* ./compiling//compiling_icode.nit:1015 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1001 */
+  /* ./compiling//compiling_icode.nit:1016 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14711,12 +16055,12 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1002 */
+  /* ./compiling//compiling_icode.nit:1017 */
   fra.me.REG[3] = CALL_icode___icode_base___IAttrIsset___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_compiling___compiling_base___MMGlobalProperty___attr_access(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1003 */
+  /* ./compiling//compiling_icode.nit:1018 */
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14726,11 +16070,11 @@ void compiling___compiling_icode___IAttrIsset___compile_to_c(val_t p0, val_t p1)
   } else fra.me.REG[3] = once_value_3;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1004 */
+  /* ./compiling//compiling_icode.nit:1019 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1005 */
+  /* ./compiling//compiling_icode.nit:1020 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString(")!=NIT_NULL)");
     REGB0 = TAG_Int(12);
@@ -14753,7 +16097,7 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1010;
+  fra.me.line = 1025;
   fra.me.meth = LOCATE_compiling___compiling_icode___IAttrWrite___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -14763,17 +16107,17 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1012 */
+  /* ./compiling//compiling_icode.nit:1027 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1013 */
+  /* ./compiling//compiling_icode.nit:1028 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_instr(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1014 */
+  /* ./compiling//compiling_icode.nit:1029 */
   fra.me.REG[3] = CALL_icode___icode_base___IAttrWrite___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_compiling___compiling_base___MMGlobalProperty___attr_access(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1015 */
+  /* ./compiling//compiling_icode.nit:1030 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString("(");
     REGB0 = TAG_Int(1);
@@ -14783,11 +16127,11 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   } else fra.me.REG[3] = once_value_1;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1016 */
+  /* ./compiling//compiling_icode.nit:1031 */
   fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1017 */
+  /* ./compiling//compiling_icode.nit:1032 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString(") = ");
     REGB0 = TAG_Int(4);
@@ -14797,11 +16141,11 @@ void compiling___compiling_icode___IAttrWrite___compile_to_c(val_t p0, val_t p1)
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1018 */
+  /* ./compiling//compiling_icode.nit:1033 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1019 */
+  /* ./compiling//compiling_icode.nit:1034 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
@@ -14825,14 +16169,23 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         static val_t once_value_5; /* Once value */
         static val_t once_value_6; /* Once value */
         static val_t once_value_7; /* Once value */
-  static val_t once_value_8; /* Once value */
-  static val_t once_value_9; /* Once value */
-  static val_t once_value_10; /* Once value */
-  static val_t once_value_11; /* Once value */
-  static val_t once_value_12; /* Once value */
+    static val_t once_value_8; /* Once value */
+    static val_t once_value_9; /* Once value */
+    static val_t once_value_10; /* Once value */
+    static val_t once_value_11; /* Once value */
+    static val_t once_value_12; /* Once value */
+    static val_t once_value_13; /* Once value */
+    static val_t once_value_14; /* Once value */
+    static val_t once_value_15; /* Once value */
+    static val_t once_value_16; /* Once value */
+    static val_t once_value_17; /* Once value */
+    static val_t once_value_18; /* Once value */
+    static val_t once_value_19; /* Once value */
+    static val_t once_value_20; /* Once value */
+    static val_t once_value_21; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1024;
+  fra.me.line = 1039;
   fra.me.meth = LOCATE_compiling___compiling_icode___ITypeCheck___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -14844,25 +16197,21 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1026 */
+  /* ./compiling//compiling_icode.nit:1041 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:1028 */
+  /* ./compiling//compiling_icode.nit:1042 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1029 */
-  fra.me.REG[2] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1030 */
-  fra.me.REG[3] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1031 */
-  fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1032 */
+  /* ./compiling//compiling_icode.nit:1043 */
+  fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:1044 */
+  fra.me.REG[3] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:1045 */
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -14871,17 +16220,17 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
     register_static_object(&once_value_2);
   } else fra.me.REG[4] = once_value_2;
   fra.me.REG[4] = fra.me.REG[4];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1033 */
-  fra.me.REG[4] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./compiling//compiling_icode.nit:1046 */
+  fra.me.REG[4] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_base___IRegister___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)) {
-    /* ./compiling//compiling_icode.nit:1034 */
+    /* ./compiling//compiling_icode.nit:1047 */
     fra.me.REG[4] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:1035 */
+      /* ./compiling//compiling_icode.nit:1048 */
       if (!once_value_3) {
         fra.me.REG[4] = BOX_NativeString("(");
         REGB0 = TAG_Int(1);
@@ -14890,10 +16239,10 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         register_static_object(&once_value_3);
       } else fra.me.REG[4] = once_value_3;
       fra.me.REG[4] = fra.me.REG[4];
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-      /* ./compiling//compiling_icode.nit:1036 */
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ./compiling//compiling_icode.nit:1037 */
+      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      /* ./compiling//compiling_icode.nit:1049 */
+      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+      /* ./compiling//compiling_icode.nit:1050 */
       if (!once_value_4) {
         fra.me.REG[4] = BOX_NativeString("==NIT_NULL) || ");
         REGB0 = TAG_Int(15);
@@ -14902,12 +16251,12 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         register_static_object(&once_value_4);
       } else fra.me.REG[4] = once_value_4;
       fra.me.REG[4] = fra.me.REG[4];
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     } else {
-      /* ./compiling//compiling_icode.nit:1038 */
+      /* ./compiling//compiling_icode.nit:1051 */
       fra.me.REG[4] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[4] = CALL_metamodel___static_type___MMType___as_nullable(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[5] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[5] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[5] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[5])(fra.me.REG[5]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[5]));
       if (UNTAG_Bool(REGB0)) {
@@ -14916,9 +16265,9 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:1039 */
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-        /* ./compiling//compiling_icode.nit:1040 */
+        /* ./compiling//compiling_icode.nit:1052 */
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        /* ./compiling//compiling_icode.nit:1053 */
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -14927,11 +16276,11 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
           register_static_object(&once_value_5);
         } else fra.me.REG[5] = once_value_5;
         fra.me.REG[5] = fra.me.REG[5];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1041 */
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+        /* ./compiling//compiling_icode.nit:1054 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1043 */
+        /* ./compiling//compiling_icode.nit:1056 */
         if (!once_value_6) {
           fra.me.REG[5] = BOX_NativeString("(");
           REGB0 = TAG_Int(1);
@@ -14940,10 +16289,10 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
           register_static_object(&once_value_6);
         } else fra.me.REG[5] = once_value_6;
         fra.me.REG[5] = fra.me.REG[5];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1044 */
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-        /* ./compiling//compiling_icode.nit:1045 */
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+        /* ./compiling//compiling_icode.nit:1057 */
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        /* ./compiling//compiling_icode.nit:1058 */
         if (!once_value_7) {
           fra.me.REG[5] = BOX_NativeString("!=NIT_NULL) && ");
           REGB0 = TAG_Int(15);
@@ -14952,72 +16301,192 @@ void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1)
           register_static_object(&once_value_7);
         } else fra.me.REG[5] = once_value_7;
         fra.me.REG[5] = fra.me.REG[5];
-        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+        CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       }
     }
   }
-  /* ./compiling//compiling_icode.nit:1048 */
-  if (!once_value_8) {
-    fra.me.REG[5] = BOX_NativeString("VAL_ISA(");
-    REGB0 = TAG_Int(8);
-    fra.me.REG[5] = NEW_String_standard___string___String___with_native(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_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./compiling//compiling_icode.nit:1049 */
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1050 */
-  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);
-    once_value_9 = fra.me.REG[3];
-    register_static_object(&once_value_9);
-  } else fra.me.REG[3] = once_value_9;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1051 */
-  fra.me.REG[3] = CALL_compiling___compiling_base___MMGlobalClass___color_id(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1052 */
-  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);
-    once_value_10 = fra.me.REG[3];
-    register_static_object(&once_value_10);
-  } else fra.me.REG[3] = once_value_10;
-  fra.me.REG[3] = fra.me.REG[3];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1053 */
-  fra.me.REG[2] = CALL_compiling___compiling_base___MMGlobalClass___id_id(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1054 */
-  if (!once_value_11) {
-    fra.me.REG[2] = BOX_NativeString(")) /*cast ");
-    REGB0 = TAG_Int(10);
-    fra.me.REG[2] = NEW_String_standard___string___String___with_native(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;
-  fra.me.REG[2] = fra.me.REG[2];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1055 */
-  fra.me.REG[0] = CALL_icode___icode_base___ITypeCheck___stype(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]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1056 */
-  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);
-    once_value_12 = fra.me.REG[0];
-    register_static_object(&once_value_12);
-  } else fra.me.REG[0] = once_value_12;
-  fra.me.REG[0] = fra.me.REG[0];
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:1062 */
+  fra.me.REG[5] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./compiling//compiling_icode.nit:1063 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___virtualtype___MMVirtualType, ID_metamodel___virtualtype___MMVirtualType)) /*cast MMVirtualType*/;
+  if (UNTAG_Bool(REGB0)) {
+    /* ./compiling//compiling_icode.nit:1064 */
+    fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1065 */
+    fra.me.REG[1] = CALL_metamodel___virtualtype___MMVirtualType___property(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:1066 */
+    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);
+      once_value_8 = fra.me.REG[4];
+      register_static_object(&once_value_8);
+    } else fra.me.REG[4] = once_value_8;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1067 */
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:1068 */
+    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);
+      once_value_9 = fra.me.REG[4];
+      register_static_object(&once_value_9);
+    } else fra.me.REG[4] = once_value_9;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1069 */
+    fra.me.REG[4] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_color(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1070 */
+    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);
+      once_value_10 = fra.me.REG[4];
+      register_static_object(&once_value_10);
+    } else fra.me.REG[4] = once_value_10;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1071 */
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1072 */
+    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);
+      once_value_11 = fra.me.REG[4];
+      register_static_object(&once_value_11);
+    } else fra.me.REG[4] = once_value_11;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1073 */
+    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);
+      once_value_12 = fra.me.REG[4];
+      register_static_object(&once_value_12);
+    } else fra.me.REG[4] = once_value_12;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    /* ./compiling//compiling_icode.nit:1074 */
+    fra.me.REG[1] = CALL_compiling___compiling_base___MMGlobalProperty___vt_class_id(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:1075 */
+    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);
+      once_value_13 = fra.me.REG[1];
+      register_static_object(&once_value_13);
+    } else fra.me.REG[1] = once_value_13;
+    fra.me.REG[1] = fra.me.REG[1];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:1076 */
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1077 */
+    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);
+      once_value_14 = fra.me.REG[0];
+      register_static_object(&once_value_14);
+    } else fra.me.REG[0] = once_value_14;
+    fra.me.REG[0] = fra.me.REG[0];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1078 */
+    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);
+      once_value_15 = fra.me.REG[0];
+      register_static_object(&once_value_15);
+    } else fra.me.REG[0] = once_value_15;
+    fra.me.REG[0] = fra.me.REG[0];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1079 */
+    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1080 */
+    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);
+      once_value_16 = fra.me.REG[0];
+      register_static_object(&once_value_16);
+    } else fra.me.REG[0] = once_value_16;
+    fra.me.REG[0] = fra.me.REG[0];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  } else {
+    /* ./compiling//compiling_icode.nit:1082 */
+    fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1083 */
+    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);
+      once_value_17 = fra.me.REG[1];
+      register_static_object(&once_value_17);
+    } else fra.me.REG[1] = once_value_17;
+    fra.me.REG[1] = fra.me.REG[1];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    /* ./compiling//compiling_icode.nit:1084 */
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:1085 */
+    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);
+      once_value_18 = fra.me.REG[2];
+      register_static_object(&once_value_18);
+    } else fra.me.REG[2] = once_value_18;
+    fra.me.REG[2] = fra.me.REG[2];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:1086 */
+    fra.me.REG[2] = CALL_compiling___compiling_base___MMGlobalClass___color_id(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:1087 */
+    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);
+      once_value_19 = fra.me.REG[2];
+      register_static_object(&once_value_19);
+    } else fra.me.REG[2] = once_value_19;
+    fra.me.REG[2] = fra.me.REG[2];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    /* ./compiling//compiling_icode.nit:1088 */
+    fra.me.REG[0] = CALL_compiling___compiling_base___MMGlobalClass___id_id(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1089 */
+    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);
+      once_value_20 = fra.me.REG[0];
+      register_static_object(&once_value_20);
+    } else fra.me.REG[0] = once_value_20;
+    fra.me.REG[0] = fra.me.REG[0];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1090 */
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+    /* ./compiling//compiling_icode.nit:1091 */
+    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);
+      once_value_21 = fra.me.REG[5];
+      register_static_object(&once_value_21);
+    } else fra.me.REG[5] = once_value_21;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  }
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -15042,7 +16511,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_15; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1061;
+  fra.me.line = 1097;
   fra.me.meth = LOCATE_compiling___compiling_icode___IIs___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -15054,18 +16523,18 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1063 */
+  /* ./compiling//compiling_icode.nit:1099 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:1064 */
+  /* ./compiling//compiling_icode.nit:1100 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1065 */
+  /* ./compiling//compiling_icode.nit:1101 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1066 */
+  /* ./compiling//compiling_icode.nit:1102 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -15075,19 +16544,19 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1067 */
+  /* ./compiling//compiling_icode.nit:1103 */
   fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1068 */
+  /* ./compiling//compiling_icode.nit:1104 */
   fra.me.REG[4] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1069 */
+  /* ./compiling//compiling_icode.nit:1105 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:1070 */
+    /* ./compiling//compiling_icode.nit:1106 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:1071 */
+      /* ./compiling//compiling_icode.nit:1107 */
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString("1)");
         REGB0 = TAG_Int(2);
@@ -15097,17 +16566,17 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
       } else fra.me.REG[5] = once_value_3;
       fra.me.REG[5] = fra.me.REG[5];
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-      /* ./compiling//compiling_icode.nit:1072 */
+      /* ./compiling//compiling_icode.nit:1108 */
       goto label1;
     } else {
-      /* ./compiling//compiling_icode.nit:1073 */
+      /* ./compiling//compiling_icode.nit:1109 */
       REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:1074 */
+        /* ./compiling//compiling_icode.nit:1110 */
         fra.me.REG[5] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[5] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1075 */
+        /* ./compiling//compiling_icode.nit:1111 */
         if (!once_value_4) {
           fra.me.REG[5] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -15117,10 +16586,10 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         } else fra.me.REG[5] = once_value_4;
         fra.me.REG[5] = fra.me.REG[5];
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1076 */
+        /* ./compiling//compiling_icode.nit:1112 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1078 */
+        /* ./compiling//compiling_icode.nit:1114 */
         if (!once_value_5) {
           fra.me.REG[5] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
@@ -15130,22 +16599,22 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         } else fra.me.REG[5] = once_value_5;
         fra.me.REG[5] = fra.me.REG[5];
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-        /* ./compiling//compiling_icode.nit:1079 */
+        /* ./compiling//compiling_icode.nit:1115 */
         goto label1;
       }
     }
   } else {
-    /* ./compiling//compiling_icode.nit:1081 */
+    /* ./compiling//compiling_icode.nit:1117 */
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//compiling_icode.nit:1082 */
+      /* ./compiling//compiling_icode.nit:1118 */
       REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:1083 */
+        /* ./compiling//compiling_icode.nit:1119 */
         fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ./compiling//compiling_icode.nit:1084 */
+        /* ./compiling//compiling_icode.nit:1120 */
         if (!once_value_6) {
           fra.me.REG[3] = BOX_NativeString("==NIT_NULL)");
           REGB0 = TAG_Int(11);
@@ -15155,13 +16624,13 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         } else fra.me.REG[3] = once_value_6;
         fra.me.REG[3] = fra.me.REG[3];
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ./compiling//compiling_icode.nit:1085 */
+        /* ./compiling//compiling_icode.nit:1121 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1086 */
+        /* ./compiling//compiling_icode.nit:1122 */
         REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./compiling//compiling_icode.nit:1087 */
+          /* ./compiling//compiling_icode.nit:1123 */
           if (!once_value_7) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_NN(");
             REGB0 = TAG_Int(12);
@@ -15172,7 +16641,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           fra.me.REG[3] = fra.me.REG[3];
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
         } else {
-          /* ./compiling//compiling_icode.nit:1089 */
+          /* ./compiling//compiling_icode.nit:1125 */
           if (!once_value_8) {
             fra.me.REG[3] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
@@ -15182,11 +16651,11 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           } else fra.me.REG[3] = once_value_8;
           fra.me.REG[3] = fra.me.REG[3];
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1090 */
+          /* ./compiling//compiling_icode.nit:1126 */
           fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
           fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1091 */
+          /* ./compiling//compiling_icode.nit:1127 */
           if (!once_value_9) {
             fra.me.REG[3] = BOX_NativeString(",");
             REGB0 = TAG_Int(1);
@@ -15196,11 +16665,11 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           } else fra.me.REG[3] = once_value_9;
           fra.me.REG[3] = fra.me.REG[3];
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1092 */
+          /* ./compiling//compiling_icode.nit:1128 */
           fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
           fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1093 */
+          /* ./compiling//compiling_icode.nit:1129 */
           if (!once_value_10) {
             fra.me.REG[3] = BOX_NativeString("))");
             REGB0 = TAG_Int(2);
@@ -15210,15 +16679,15 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           } else fra.me.REG[3] = once_value_10;
           fra.me.REG[3] = fra.me.REG[3];
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./compiling//compiling_icode.nit:1094 */
+          /* ./compiling//compiling_icode.nit:1130 */
           goto label1;
         }
       }
     } else {
-      /* ./compiling//compiling_icode.nit:1097 */
+      /* ./compiling//compiling_icode.nit:1133 */
       REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMTypeNone, ID_metamodel___static_type___MMTypeNone)) /*cast MMTypeNone*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//compiling_icode.nit:1098 */
+        /* ./compiling//compiling_icode.nit:1134 */
         if (!once_value_11) {
           fra.me.REG[3] = BOX_NativeString("0)");
           REGB0 = TAG_Int(2);
@@ -15228,13 +16697,13 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
         } else fra.me.REG[3] = once_value_11;
         fra.me.REG[3] = fra.me.REG[3];
         CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ./compiling//compiling_icode.nit:1099 */
+        /* ./compiling//compiling_icode.nit:1135 */
         goto label1;
       } else {
-        /* ./compiling//compiling_icode.nit:1100 */
+        /* ./compiling//compiling_icode.nit:1136 */
         REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./compiling//compiling_icode.nit:1101 */
+          /* ./compiling//compiling_icode.nit:1137 */
           if (!once_value_12) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_ON(");
             REGB0 = TAG_Int(12);
@@ -15245,7 +16714,7 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
           fra.me.REG[4] = fra.me.REG[4];
           CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
         } else {
-          /* ./compiling//compiling_icode.nit:1103 */
+          /* ./compiling//compiling_icode.nit:1139 */
           if (!once_value_13) {
             fra.me.REG[4] = BOX_NativeString("IS_EQUAL_OO(");
             REGB0 = TAG_Int(12);
@@ -15259,11 +16728,11 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
       }
     }
   }
-  /* ./compiling//compiling_icode.nit:1106 */
+  /* ./compiling//compiling_icode.nit:1142 */
   fra.me.REG[4] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1107 */
+  /* ./compiling//compiling_icode.nit:1143 */
   if (!once_value_14) {
     fra.me.REG[4] = BOX_NativeString(",");
     REGB0 = TAG_Int(1);
@@ -15273,11 +16742,11 @@ void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[4] = once_value_14;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1108 */
+  /* ./compiling//compiling_icode.nit:1144 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1109 */
+  /* ./compiling//compiling_icode.nit:1145 */
   if (!once_value_15) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
@@ -15299,7 +16768,7 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1114;
+  fra.me.line = 1150;
   fra.me.meth = LOCATE_compiling___compiling_icode___INot___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -15309,18 +16778,18 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1116 */
+  /* ./compiling//compiling_icode.nit:1152 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:1117 */
+  /* ./compiling//compiling_icode.nit:1153 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1118 */
+  /* ./compiling//compiling_icode.nit:1154 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1119 */
+  /* ./compiling//compiling_icode.nit:1155 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(!UNTAG_Bool(");
     REGB0 = TAG_Int(21);
@@ -15330,11 +16799,11 @@ void compiling___compiling_icode___INot___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1120 */
+  /* ./compiling//compiling_icode.nit:1156 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1121 */
+  /* ./compiling//compiling_icode.nit:1157 */
   if (!once_value_3) {
     fra.me.REG[0] = BOX_NativeString("))");
     REGB0 = TAG_Int(2);
@@ -15374,7 +16843,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_19; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1126;
+  fra.me.line = 1162;
   fra.me.meth = LOCATE_compiling___compiling_icode___IOnce___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -15386,25 +16855,27 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1128 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1129 */
+  /* ./compiling//compiling_icode.nit:1162 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./compiling//compiling_icode.nit:1164 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICode___location(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:1165 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___new_number(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1130 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+  /* ./compiling//compiling_icode.nit:1166 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 1130);
+    nit_abort("Cast failed", NULL, LOCATE_compiling___compiling_icode, 1166);
   }
-  /* ./compiling//compiling_icode.nit:1131 */
-  fra.me.REG[3] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:1167 */
+  fra.me.REG[0] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:1132 */
+    /* ./compiling//compiling_icode.nit:1168 */
     REGB1 = TAG_Int(5);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_1) {
       fra.me.REG[4] = BOX_NativeString("static val_t once_value_");
       REGB1 = TAG_Int(24);
@@ -15413,9 +16884,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_1);
     } else fra.me.REG[4] = once_value_1;
     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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     if (!once_value_2) {
       fra.me.REG[4] = BOX_NativeString("; static int once_bool_");
       REGB1 = TAG_Int(23);
@@ -15424,9 +16895,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_2);
     } else fra.me.REG[4] = once_value_2;
     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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     if (!once_value_3) {
       fra.me.REG[4] = BOX_NativeString("; /* Once value */");
       REGB1 = TAG_Int(18);
@@ -15435,12 +16906,12 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_3);
     } else fra.me.REG[4] = once_value_3;
     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]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:1133 */
+    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_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1169 */
     REGB1 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("if (!once_bool_");
       REGB1 = TAG_Int(15);
@@ -15449,9 +16920,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString(") {");
       REGB1 = TAG_Int(3);
@@ -15460,13 +16931,13 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_5);
     } else fra.me.REG[4] = once_value_5;
     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]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* ./compiling//compiling_icode.nit:1136 */
+    /* ./compiling//compiling_icode.nit:1172 */
     REGB1 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_6) {
       fra.me.REG[4] = BOX_NativeString("static val_t once_value_");
       REGB1 = TAG_Int(24);
@@ -15475,9 +16946,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_6);
     } else fra.me.REG[4] = once_value_6;
     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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     if (!once_value_7) {
       fra.me.REG[4] = BOX_NativeString("; /* Once value */");
       REGB1 = TAG_Int(18);
@@ -15486,12 +16957,12 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       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]);
-    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]);
-    /* ./compiling//compiling_icode.nit:1137 */
+    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_compiling___compiling_icode___I2CCompilerVisitor___add_decl(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./compiling//compiling_icode.nit:1173 */
     REGB1 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_8) {
       fra.me.REG[4] = BOX_NativeString("if (!once_value_");
       REGB1 = TAG_Int(16);
@@ -15500,9 +16971,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_8);
     } else fra.me.REG[4] = once_value_8;
     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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString(") {");
       REGB1 = TAG_Int(3);
@@ -15511,18 +16982,18 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_9);
     } else fra.me.REG[4] = once_value_9;
     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]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    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_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:1139 */
+  /* ./compiling//compiling_icode.nit:1175 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1140 */
-  fra.me.REG[3] = CALL_icode___icode_base___IOnce___body(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1141 */
-  fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1142 */
+  /* ./compiling//compiling_icode.nit:1176 */
+  fra.me.REG[0] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:1177 */
+  fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./compiling//compiling_icode.nit:1178 */
   REGB1 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_10) {
@@ -15545,7 +17016,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[5] = once_value_11;
   fra.me.REG[5] = fra.me.REG[5];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
   if (!once_value_12) {
     fra.me.REG[5] = BOX_NativeString(";");
     REGB1 = TAG_Int(1);
@@ -15557,7 +17028,7 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1143 */
+  /* ./compiling//compiling_icode.nit:1179 */
   REGB1 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_13) {
@@ -15582,12 +17053,12 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1144 */
-  fra.me.REG[2] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./compiling//compiling_icode.nit:1180 */
+  fra.me.REG[3] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Int(3);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_15) {
       fra.me.REG[4] = BOX_NativeString("once_bool_");
       REGB1 = TAG_Int(10);
@@ -15596,9 +17067,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_15);
     } else fra.me.REG[4] = once_value_15;
     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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     if (!once_value_16) {
       fra.me.REG[4] = BOX_NativeString(" = true;");
       REGB1 = TAG_Int(8);
@@ -15607,15 +17078,15 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
       register_static_object(&once_value_16);
     } else fra.me.REG[4] = once_value_16;
     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]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    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]);
   }
-  /* ./compiling//compiling_icode.nit:1145 */
+  /* ./compiling//compiling_icode.nit:1181 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1146 */
+  /* ./compiling//compiling_icode.nit:1182 */
   REGB1 = TAG_Int(5);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_17) {
     fra.me.REG[4] = BOX_NativeString("} else ");
     REGB1 = TAG_Int(7);
@@ -15624,8 +17095,8 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_17);
   } else fra.me.REG[4] = once_value_17;
   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]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   if (!once_value_18) {
     fra.me.REG[4] = BOX_NativeString(" = once_value_");
     REGB1 = TAG_Int(14);
@@ -15634,9 +17105,9 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_18);
   } else fra.me.REG[4] = once_value_18;
   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]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   if (!once_value_19) {
     fra.me.REG[4] = BOX_NativeString(";");
     REGB0 = TAG_Int(1);
@@ -15645,13 +17116,13 @@ void compiling___compiling_icode___IOnce___compile_to_c(val_t p0, val_t p1){
     register_static_object(&once_value_19);
   } else fra.me.REG[4] = once_value_19;
   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]);
-  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1147 */
-  fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1148 */
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  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]);
+  /* ./compiling//compiling_icode.nit:1183 */
+  fra.me.REG[1] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  /* ./compiling//compiling_icode.nit:1184 */
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -15676,7 +17147,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_14; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1153;
+  fra.me.line = 1189;
   fra.me.meth = LOCATE_compiling___compiling_icode___IClosCall___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -15689,13 +17160,13 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1155 */
+  /* ./compiling//compiling_icode.nit:1191 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1158 */
+  /* ./compiling//compiling_icode.nit:1194 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:1159 */
+    /* ./compiling//compiling_icode.nit:1195 */
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -15721,7 +17192,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     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]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./compiling//compiling_icode.nit:1160 */
+    /* ./compiling//compiling_icode.nit:1196 */
     REGB0 = TAG_Int(1);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_3) {
@@ -15734,7 +17205,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[3] = fra.me.REG[3];
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   } else {
-    /* ./compiling//compiling_icode.nit:1162 */
+    /* ./compiling//compiling_icode.nit:1198 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_4) {
@@ -15761,7 +17232,7 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
     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];
-    /* ./compiling//compiling_icode.nit:1163 */
+    /* ./compiling//compiling_icode.nit:1199 */
     REGB0 = TAG_Int(1);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
@@ -15775,11 +17246,11 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
     fra.me.REG[4] = fra.me.REG[3];
   }
-  /* ./compiling//compiling_icode.nit:1165 */
+  /* ./compiling//compiling_icode.nit:1201 */
   fra.me.REG[3] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___registers(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1167 */
+  /* ./compiling//compiling_icode.nit:1203 */
   REGB0 = TAG_Int(7);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_7) {
@@ -15834,13 +17305,13 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1168 */
+  /* ./compiling//compiling_icode.nit:1204 */
   fra.me.REG[2] = NEW_Writer_compiling___compiling_writer___Writer___init();
-  /* ./compiling//compiling_icode.nit:1169 */
+  /* ./compiling//compiling_icode.nit:1205 */
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1170 */
+  /* ./compiling//compiling_icode.nit:1206 */
   CALL_compiling___compiling_icode___ICode___store_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1173 */
+  /* ./compiling//compiling_icode.nit:1209 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_12) {
@@ -15865,11 +17336,11 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1174 */
+  /* ./compiling//compiling_icode.nit:1210 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___indent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1175 */
+  /* ./compiling//compiling_icode.nit:1211 */
   fra.me.REG[0] = CALL_icode___icode_base___IClosCall___break_seq(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1176 */
+  /* ./compiling//compiling_icode.nit:1212 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -15884,20 +17355,20 @@ void compiling___compiling_icode___IClosCall___compile_to_c(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:1177 */
+    /* ./compiling//compiling_icode.nit:1213 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 1177);
+      nit_abort("Reciever is null", NULL, LOCATE_compiling___compiling_icode, 1213);
     }
     CALL_compiling___compiling_icode___ICode___compile_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
-  /* ./compiling//compiling_icode.nit:1179 */
+  /* ./compiling//compiling_icode.nit:1215 */
   fra.me.REG[0] = CALL_compiling___compiling_icode___I2CCompilerVisitor___iroutine(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_goto(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1180 */
+  /* ./compiling//compiling_icode.nit:1216 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1181 */
+  /* ./compiling//compiling_icode.nit:1217 */
   if (!once_value_14) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB0 = TAG_Int(1);
@@ -15922,7 +17393,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1186;
+  fra.me.line = 1222;
   fra.me.meth = LOCATE_compiling___compiling_icode___IHasClos___compile_to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -15933,18 +17404,18 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1188 */
+  /* ./compiling//compiling_icode.nit:1224 */
   REGB0 = CALL_compiling___compiling_icode___ICode___need_result(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./compiling//compiling_icode.nit:1189 */
+  /* ./compiling//compiling_icode.nit:1225 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_location(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1190 */
+  /* ./compiling//compiling_icode.nit:1226 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___ICode___new_result(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1191 */
+  /* ./compiling//compiling_icode.nit:1227 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("TAG_Bool(");
     REGB0 = TAG_Int(9);
@@ -15954,10 +17425,10 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1192 */
+  /* ./compiling//compiling_icode.nit:1228 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//compiling_icode.nit:1193 */
+    /* ./compiling//compiling_icode.nit:1229 */
     if (!once_value_3) {
       fra.me.REG[3] = BOX_NativeString("closctx->closure_funs[");
       REGB0 = TAG_Int(22);
@@ -15967,12 +17438,12 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     } else fra.me.REG[3] = once_value_3;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ./compiling//compiling_icode.nit:1194 */
+    /* ./compiling//compiling_icode.nit:1230 */
     fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___closures(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[4] = CALL_icode___icode_base___IHasClos___closure_decl(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]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:1195 */
+    /* ./compiling//compiling_icode.nit:1231 */
     if (!once_value_4) {
       fra.me.REG[4] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
@@ -15983,7 +17454,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   } else {
-    /* ./compiling//compiling_icode.nit:1197 */
+    /* ./compiling//compiling_icode.nit:1233 */
     if (!once_value_5) {
       fra.me.REG[4] = BOX_NativeString("CREG[");
       REGB0 = TAG_Int(5);
@@ -15993,12 +17464,12 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     } else fra.me.REG[4] = once_value_5;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-    /* ./compiling//compiling_icode.nit:1198 */
+    /* ./compiling//compiling_icode.nit:1234 */
     fra.me.REG[1] = CALL_compiling___compiling_icode___I2CCompilerVisitor___closures(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[0] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-    /* ./compiling//compiling_icode.nit:1199 */
+    /* ./compiling//compiling_icode.nit:1235 */
     if (!once_value_6) {
       fra.me.REG[0] = BOX_NativeString("]");
       REGB0 = TAG_Int(1);
@@ -16009,7 +17480,7 @@ void compiling___compiling_icode___IHasClos___compile_to_c(val_t p0, val_t p1){
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:1201 */
+  /* ./compiling//compiling_icode.nit:1237 */
   if (!once_value_7) {
     fra.me.REG[0] = BOX_NativeString(" != NULL)");
     REGB0 = TAG_Int(9);
@@ -16041,7 +17512,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___compiling_icode;
-  fra.me.line = 1206;
+  fra.me.line = 1242;
   fra.me.meth = LOCATE_compiling___compiling_icode___IClosureDef___compile_closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -16056,31 +17527,31 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//compiling_icode.nit:1210 */
+  /* ./compiling//compiling_icode.nit:1246 */
   fra.me.REG[2] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1213 */
+  /* ./compiling//compiling_icode.nit:1249 */
   REGB0 = CALL_compiling___compiling_icode___I2CCompilerVisitor___closure(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1214 */
+  /* ./compiling//compiling_icode.nit:1250 */
   REGB1 = TAG_Bool(true);
   CALL_compiling___compiling_icode___I2CCompilerVisitor___closure__eq(fra.me.REG[1])(fra.me.REG[1], REGB1);
-  /* ./compiling//compiling_icode.nit:1217 */
+  /* ./compiling//compiling_icode.nit:1253 */
   fra.me.REG[3] = CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1218 */
+  /* ./compiling//compiling_icode.nit:1254 */
   fra.me.REG[4] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1221 */
+  /* ./compiling//compiling_icode.nit:1257 */
   fra.me.REG[4] = CALL_compiling___compiling_base___CompilerVisitor___decl_writer(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1222 */
+  /* ./compiling//compiling_icode.nit:1258 */
   fra.me.REG[5] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./compiling//compiling_icode.nit:1223 */
+  /* ./compiling//compiling_icode.nit:1259 */
   fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___top_writer(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[6])(fra.me.REG[6]);
   CALL_compiling___compiling_base___CompilerVisitor___writer__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* ./compiling//compiling_icode.nit:1224 */
+  /* ./compiling//compiling_icode.nit:1260 */
   fra.me.REG[6] = CALL_compiling___compiling_base___CompilerVisitor___header_writer(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[6] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[6])(fra.me.REG[6]);
   CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* ./compiling//compiling_icode.nit:1227 */
+  /* ./compiling//compiling_icode.nit:1263 */
   REGB1 = TAG_Int(5);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_1) {
@@ -16116,7 +17587,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   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]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-  /* ./compiling//compiling_icode.nit:1228 */
+  /* ./compiling//compiling_icode.nit:1264 */
   fra.me.REG[7] = CALL_compiling___compiling_icode___I2CCompilerVisitor___visitor(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_4) {
     fra.me.REG[8] = BOX_NativeString("struct stack_frame_t *closctx");
@@ -16127,13 +17598,13 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   } else fra.me.REG[8] = once_value_4;
   fra.me.REG[8] = fra.me.REG[8];
   fra.me.REG[8] = CALL_compiling___compiling_icode___IRoutine___compile_signature_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[6], NIT_NULL, fra.me.REG[8], NIT_NULL);
-  /* ./compiling//compiling_icode.nit:1229 */
+  /* ./compiling//compiling_icode.nit:1265 */
   fra.me.REG[7] = CALL_compiling___compiling_base___CompilerVisitor___writer(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[7] = CALL_compiling___compiling_writer___Writer___sub(fra.me.REG[7])(fra.me.REG[7]);
   CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-  /* ./compiling//compiling_icode.nit:1231 */
+  /* ./compiling//compiling_icode.nit:1267 */
   fra.me.REG[8] = CALL_compiling___compiling_icode___IRoutine___compile_inside_to_c(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[8]);
-  /* ./compiling//compiling_icode.nit:1232 */
+  /* ./compiling//compiling_icode.nit:1268 */
   REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -16147,7 +17618,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     }
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./compiling//compiling_icode.nit:1233 */
+    /* ./compiling//compiling_icode.nit:1269 */
     if (!once_value_5) {
       fra.me.REG[0] = BOX_NativeString("return;");
       REGB1 = TAG_Int(7);
@@ -16158,7 +17629,7 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     fra.me.REG[0] = fra.me.REG[0];
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* ./compiling//compiling_icode.nit:1235 */
+    /* ./compiling//compiling_icode.nit:1271 */
     REGB1 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_6) {
@@ -16183,9 +17654,9 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//compiling_icode.nit:1237 */
+  /* ./compiling//compiling_icode.nit:1273 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___unindent(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./compiling//compiling_icode.nit:1238 */
+  /* ./compiling//compiling_icode.nit:1274 */
   if (!once_value_8) {
     fra.me.REG[0] = BOX_NativeString("}");
     REGB1 = TAG_Int(1);
@@ -16195,15 +17666,15 @@ val_t compiling___compiling_icode___IClosureDef___compile_closure(val_t p0, val_
   } else fra.me.REG[0] = once_value_8;
   fra.me.REG[0] = fra.me.REG[0];
   CALL_compiling___compiling_icode___I2CCompilerVisitor___add_instr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./compiling//compiling_icode.nit:1241 */
+  /* ./compiling//compiling_icode.nit:1277 */
   CALL_compiling___compiling_base___CompilerVisitor___writer__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* ./compiling//compiling_icode.nit:1242 */
+  /* ./compiling//compiling_icode.nit:1278 */
   CALL_compiling___compiling_base___CompilerVisitor___decl_writer__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//compiling_icode.nit:1243 */
+  /* ./compiling//compiling_icode.nit:1279 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___closure__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-  /* ./compiling//compiling_icode.nit:1244 */
+  /* ./compiling//compiling_icode.nit:1280 */
   CALL_compiling___compiling_icode___I2CCompilerVisitor___local_labels__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//compiling_icode.nit:1245 */
+  /* ./compiling//compiling_icode.nit:1281 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_9) {
index 68ff60f..240b736 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/compiling_icode. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/compiling_icode. */
 #ifndef compiling___compiling_icode_sep
 #define compiling___compiling_icode_sep
 #include "analysis._sep.h"
@@ -296,7 +296,7 @@ val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1,
 static const char * const LOCATE_compiling___compiling_icode___ITypeCheck___compile_to_c = "compiling_icode::ITypeCheck::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___ITypeCheck___compile_to_c(val_t p0, val_t p1);
 typedef void (*compiling___compiling_icode___ITypeCheck___compile_to_c_t)(val_t p0, val_t p1);
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_compiling___compiling_icode___IIs___compile_to_c = "compiling_icode::IIs::(compiling_icode::ICode::compile_to_c)";
 void compiling___compiling_icode___IIs___compile_to_c(val_t p0, val_t p1);
 typedef void (*compiling___compiling_icode___IIs___compile_to_c_t)(val_t p0, val_t p1);
index 9aeafce..84d802b 100644 (file)
@@ -60,6 +60,7 @@ val_t compiling___compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t
   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_compiling___compiling_writer;
@@ -84,36 +85,41 @@ val_t compiling___compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t
   }
   /* ./compiling//compiling_writer.nit:42 */
   REGB0 = TAG_Bool(true);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
       /* ./compiling//compiling_writer.nit:44 */
       if (UNTAG_Bool(REGB0)) {
@@ -124,14 +130,14 @@ val_t compiling___compiling_writer___Writer___add_all(val_t p0, val_t p1, val_t
       }
       /* ./compiling//compiling_writer.nit:45 */
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
index c792434..1a84150 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/compiling_writer. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/compiling_writer. */
 #ifndef compiling___compiling_writer_sep
 #define compiling___compiling_writer_sep
 #include "standard._sep.h"
index ee71f6e..5dd5cd1 100644 (file)
@@ -1,27 +1,30 @@
 /* This C file is generated by NIT to compile module compiling___icode_generator. */
 #include "compiling___icode_generator._sep.h"
 void compiling___icode_generator___Program___generate_icode_files(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___icode_generator;
-  fra.me.line = 25;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_compiling___icode_generator___Program___generate_icode_files;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//icode_generator.nit:27 */
-  fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  /* ./compiling//icode_generator.nit:26 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./compiling//icode_generator.nit:28 */
+  fra.me.REG[2] = CALL_program___Program___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);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 27);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 28);
   }
-  CALL_standard___file___String___mkdir(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_program___Program___with_each_live_local_classes(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___Program___generate_icode_files_1));
+  CALL_standard___file___String___mkdir(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_program___Program___with_each_live_local_classes(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___Program___generate_icode_files_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -29,23 +32,23 @@ void compiling___icode_generator___Program___generate_icode_files(val_t p0){
     struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
     val_t REGB0;
     val_t tmp;
-    /* ./compiling//icode_generator.nit:29 */
+    /* ./compiling//icode_generator.nit:30 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_compiling___icode_generator;
-    fra.me.line = 29;
+    fra.me.line = 30;
     fra.me.meth = LOCATE_compiling___icode_generator___Program___generate_icode_files;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
     fra.me.REG[0] = NIT_NULL;
     fra.me.REG[1] = NIT_NULL;
     fra.me.REG[0] = p0;
-    /* ./compiling//icode_generator.nit:30 */
-    fra.me.REG[1] = CALL_program___Program___tc(closctx->REG[0])(closctx->REG[0]);
+    /* ./compiling//icode_generator.nit:31 */
+    fra.me.REG[1] = CALL_program___Program___tc(closctx->REG[1])(closctx->REG[1]);
     fra.me.REG[1] = CALL_compiling___compiling_base___ToolContext___compdir(fra.me.REG[1])(fra.me.REG[1]);
     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*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_compiling___icode_generator, 30);
+      nit_abort("Cast failed", NULL, LOCATE_compiling___icode_generator, 31);
     }
     CALL_compiling___icode_generator___MMLocalClass___generate_icode_file(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     stack_frame_head = fra.me.prev;
@@ -60,7 +63,7 @@ void compiling___icode_generator___FileICodeDumper___init(val_t p0, val_t p1, in
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___icode_generator;
-  fra.me.line = 40;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_compiling___icode_generator___FileICodeDumper___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -69,13 +72,13 @@ void compiling___icode_generator___FileICodeDumper___init(val_t p0, val_t p1, in
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//icode_generator.nit:40 */
+  /* ./compiling//icode_generator.nit:41 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./compiling//icode_generator.nit:42 */
+  /* ./compiling//icode_generator.nit:43 */
   REGB0 = TAG_Bool(false);
   REGB1 = TAG_Bool(false);
   CALL_analysis___icode_dump___ICodeDumper___init(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1, init_table);
-  /* ./compiling//icode_generator.nit:43 */
+  /* ./compiling//icode_generator.nit:44 */
   ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -91,7 +94,7 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___icode_generator;
-  fra.me.line = 46;
+  fra.me.line = 47;
   fra.me.meth = LOCATE_compiling___icode_generator___FileICodeDumper___write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -101,20 +104,25 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//icode_generator.nit:47 */
+  /* ./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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//icode_generator.nit:48 */
+      /* ./compiling//icode_generator.nit:49 */
       REGB2 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 48);
+        nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 49);
       }
       fra.me.REG[2] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
       if (!once_value_1) {
@@ -126,31 +134,31 @@ void compiling___icode_generator___FileICodeDumper___write(val_t p0, val_t p1){
       } 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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./compiling//icode_generator.nit:50 */
+  /* ./compiling//icode_generator.nit:51 */
   REGB0 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 50);
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 51);
   }
   fra.me.REG[3] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
   CALL_standard___stream___OStream___write(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  /* ./compiling//icode_generator.nit:51 */
+  /* ./compiling//icode_generator.nit:52 */
   REGB0 = TAG_Bool(ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 51);
+    nit_abort("Uninitialized attribute %s", "_file", LOCATE_compiling___icode_generator, 52);
   }
   fra.me.REG[0] = ATTR_compiling___icode_generator___FileICodeDumper____file(fra.me.REG[0]);
   if (!once_value_3) {
@@ -179,7 +187,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___icode_generator;
-  fra.me.line = 56;
+  fra.me.line = 57;
   fra.me.meth = LOCATE_compiling___icode_generator___MMLocalClass___generate_icode_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -189,7 +197,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//icode_generator.nit:58 */
+  /* ./compiling//icode_generator.nit:59 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -224,7 +232,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
-  /* ./compiling//icode_generator.nit:59 */
+  /* ./compiling//icode_generator.nit:60 */
   fra.me.REG[1] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -239,7 +247,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./compiling//icode_generator.nit:61 */
+    /* ./compiling//icode_generator.nit:62 */
     fra.me.REG[1] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -255,11 +263,11 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//icode_generator.nit:62 */
-      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
       /* ./compiling//icode_generator.nit:63 */
-      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
       /* ./compiling//icode_generator.nit:64 */
+      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//icode_generator.nit:65 */
       if (!once_value_4) {
         fra.me.REG[3] = BOX_NativeString("Init var iroutine::\n");
         REGB0 = TAG_Int(20);
@@ -269,14 +277,14 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       } else fra.me.REG[3] = once_value_4;
       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]);
-      /* ./compiling//icode_generator.nit:65 */
+      /* ./compiling//icode_generator.nit:66 */
       fra.me.REG[3] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 65);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 66);
       }
       CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      /* ./compiling//icode_generator.nit:66 */
+      /* ./compiling//icode_generator.nit:67 */
       if (!once_value_5) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
@@ -287,7 +295,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       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]);
     }
-    /* ./compiling//icode_generator.nit:68 */
+    /* ./compiling//icode_generator.nit:69 */
     fra.me.REG[1] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -303,11 +311,11 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//icode_generator.nit:69 */
-      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
       /* ./compiling//icode_generator.nit:70 */
-      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[2]);
       /* ./compiling//icode_generator.nit:71 */
+      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//icode_generator.nit:72 */
       if (!once_value_6) {
         fra.me.REG[3] = BOX_NativeString("Check new instance iroutine::\n");
         REGB0 = TAG_Int(30);
@@ -317,14 +325,14 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       } else fra.me.REG[3] = once_value_6;
       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]);
-      /* ./compiling//icode_generator.nit:72 */
+      /* ./compiling//icode_generator.nit:73 */
       fra.me.REG[3] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 72);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 73);
       }
       CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      /* ./compiling//icode_generator.nit:73 */
+      /* ./compiling//icode_generator.nit:74 */
       if (!once_value_7) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
@@ -335,14 +343,14 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       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]);
     }
-    /* ./compiling//icode_generator.nit:77 */
+    /* ./compiling//icode_generator.nit:78 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___MMLocalClass___generate_icode_file_8));
   }
-  /* ./compiling//icode_generator.nit:90 */
+  /* ./compiling//icode_generator.nit:91 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___icode_generator___MMLocalClass___generate_icode_file_13));
-  /* ./compiling//icode_generator.nit:96 */
+  /* ./compiling//icode_generator.nit:97 */
   CALL_standard___stream___IOS___close(fra.me.REG[2])(fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
@@ -369,25 +377,25 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./compiling//icode_generator.nit:78 */
+      /* ./compiling//icode_generator.nit:79 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         goto label9;
       }
-      /* ./compiling//icode_generator.nit:79 */
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
       /* ./compiling//icode_generator.nit:80 */
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+      /* ./compiling//icode_generator.nit:81 */
       REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_compiling___icode_generator, 80);
+        nit_abort("Assert failed", NULL, LOCATE_compiling___icode_generator, 81);
       }
-      /* ./compiling//icode_generator.nit:81 */
-      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(closctx->REG[2]);
       /* ./compiling//icode_generator.nit:82 */
-      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[1] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(closctx->REG[2]);
       /* ./compiling//icode_generator.nit:83 */
+      CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./compiling//icode_generator.nit:84 */
       REGB0 = TAG_Int(3);
       fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_10) {
@@ -412,15 +420,15 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       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___stream___OStream___write(closctx->REG[2])(closctx->REG[2], fra.me.REG[2]);
-      /* ./compiling//icode_generator.nit:84 */
+      /* ./compiling//icode_generator.nit:85 */
       fra.me.REG[2] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[0])(closctx->REG[0]);
       fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 84);
+        nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 85);
       }
       CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-      /* ./compiling//icode_generator.nit:85 */
+      /* ./compiling//icode_generator.nit:86 */
       if (!once_value_12) {
         fra.me.REG[1] = BOX_NativeString("\n\n");
         REGB0 = TAG_Int(2);
@@ -452,9 +460,9 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//icode_generator.nit:91 */
-    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
     /* ./compiling//icode_generator.nit:92 */
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+    /* ./compiling//icode_generator.nit:93 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[0]));
     if (UNTAG_Bool(REGB0)) {
@@ -469,7 +477,7 @@ void compiling___icode_generator___MMLocalClass___generate_icode_file(val_t p0,
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//icode_generator.nit:93 */
+      /* ./compiling//icode_generator.nit:94 */
       CALL_compiling___icode_generator___MMMethod___generate_icode(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
     }
     stack_frame_head = fra.me.prev;
@@ -484,7 +492,7 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___icode_generator;
-  fra.me.line = 101;
+  fra.me.line = 102;
   fra.me.meth = LOCATE_compiling___icode_generator___MMMethod___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -495,11 +503,11 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//icode_generator.nit:103 */
-  fra.me.REG[2] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1]);
   /* ./compiling//icode_generator.nit:104 */
-  CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[2] = NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1]);
   /* ./compiling//icode_generator.nit:105 */
+  CALL_analysis___icode_dump___ICodeDumper___indent(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./compiling//icode_generator.nit:106 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -524,14 +532,14 @@ void compiling___icode_generator___MMMethod___generate_icode(val_t p0, val_t p1)
   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_standard___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./compiling//icode_generator.nit:106 */
+  /* ./compiling//icode_generator.nit:107 */
   fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(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_compiling___icode_generator, 106);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___icode_generator, 107);
   }
   CALL_analysis___icode_dump___IRoutine___dump(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./compiling//icode_generator.nit:107 */
+  /* ./compiling//icode_generator.nit:108 */
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("\n\n");
     REGB0 = TAG_Int(2);
index f7a2169..ddaab57 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/icode_generator. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/icode_generator. */
 #ifndef compiling___icode_generator_sep
 #define compiling___icode_generator_sep
 #include "compiling___compiling_base._sep.h"
index ee6e2b4..3a20046 100644 (file)
@@ -87,11 +87,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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB3)) {
       /* ./compiling//table_computation.nit:46 */
       REGB3 = REGB1;
@@ -106,18 +111,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ./compiling//table_computation.nit:48 */
       REGB0 = REGB3;
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label1;
     }
   }
@@ -391,7 +396,7 @@ void compiling___table_computation___CompiledClass___init(val_t p0, val_t p1, in
   return;
 }
 val_t compiling___table_computation___MMConcreteClass___class_color_pos(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -399,12 +404,15 @@ val_t compiling___table_computation___MMConcreteClass___class_color_pos(val_t p0
   fra.me.line = 85;
   fra.me.meth = LOCATE_compiling___table_computation___MMConcreteClass___class_color_pos;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:85 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./compiling//table_computation.nit:86 */
-  fra.me.REG[0] = ATTR_compiling___table_computation___MMConcreteClass____class_color_pos(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_compiling___table_computation___MMConcreteClass____class_color_pos(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_compiling___table_computation, 86);
@@ -412,7 +420,7 @@ val_t compiling___table_computation___MMConcreteClass___class_color_pos(val_t p0
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t compiling___table_computation___MMConcreteClass___class_layout(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -514,30 +522,30 @@ void compiling___table_computation___MMConcreteClass___build_layout_in(val_t p0,
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./compiling//table_computation.nit:108 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(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_compiling___table_computation___MMConcreteClass___build_layout_in_1));
-  /* ./compiling//table_computation.nit:122 */
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(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_compiling___table_computation___MMConcreteClass___build_layout_in_1));
+  /* ./compiling//table_computation.nit:125 */
   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)) {
-    /* ./compiling//table_computation.nit:123 */
+    /* ./compiling//table_computation.nit:126 */
     fra.me.REG[0] = NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init();
-    /* ./compiling//table_computation.nit:124 */
+    /* ./compiling//table_computation.nit:127 */
     fra.me.REG[4] = CALL_compiling___table_computation___ModuleTableEltGroup___elements(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-    /* ./compiling//table_computation.nit:125 */
+    /* ./compiling//table_computation.nit:128 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./compiling//table_computation.nit:128 */
+  /* ./compiling//table_computation.nit:131 */
   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)) {
-    /* ./compiling//table_computation.nit:129 */
+    /* ./compiling//table_computation.nit:132 */
     fra.me.REG[0] = NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init();
-    /* ./compiling//table_computation.nit:130 */
+    /* ./compiling//table_computation.nit:133 */
     fra.me.REG[3] = CALL_compiling___table_computation___ModuleTableEltGroup___elements(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    /* ./compiling//table_computation.nit:131 */
+    /* ./compiling//table_computation.nit:134 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
   stack_frame_head = fra.me.prev;
@@ -585,10 +593,21 @@ void compiling___table_computation___MMConcreteClass___build_layout_in(val_t p0,
           /* ./compiling//table_computation.nit:114 */
           fra.me.REG[1] = NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(fra.me.REG[0]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
+        } else {
+          /* ./compiling//table_computation.nit:115 */
+          REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
+          if (UNTAG_Bool(REGB0)) {
+            /* ./compiling//table_computation.nit:116 */
+            fra.me.REG[1] = NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(fra.me.REG[0]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
+            /* ./compiling//table_computation.nit:117 */
+            fra.me.REG[1] = NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(fra.me.REG[0]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[1]);
+          }
         }
       }
     }
-    /* ./compiling//table_computation.nit:117 */
+    /* ./compiling//table_computation.nit:120 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
     if (UNTAG_Bool(REGB0)) {
       REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super(fra.me.REG[0])(fra.me.REG[0]);
@@ -597,7 +616,7 @@ void compiling___table_computation___MMConcreteClass___build_layout_in(val_t p0,
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//table_computation.nit:118 */
+      /* ./compiling//table_computation.nit:121 */
       fra.me.REG[0] = NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
     }
@@ -610,17 +629,17 @@ val_t compiling___table_computation___Program___table_information(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 137;
+  fra.me.line = 140;
   fra.me.meth = LOCATE_compiling___table_computation___Program___table_information;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:137 */
+  /* ./compiling//table_computation.nit:140 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_table_information", LOCATE_compiling___table_computation, 137);
+    nit_abort("Uninitialized attribute %s", "_table_information", LOCATE_compiling___table_computation, 140);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -632,17 +651,17 @@ val_t compiling___table_computation___Program___compiled_classes(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 140;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_compiling___table_computation___Program___compiled_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:140 */
+  /* ./compiling//table_computation.nit:143 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_compiled_classes", LOCATE_compiling___table_computation, 140);
+    nit_abort("Uninitialized attribute %s", "_compiled_classes", LOCATE_compiling___table_computation, 143);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -656,7 +675,7 @@ void compiling___table_computation___Program___do_table_computation(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_compiling___table_computation;
-  fra.me.line = 143;
+  fra.me.line = 146;
   fra.me.meth = LOCATE_compiling___table_computation___Program___do_table_computation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -664,7 +683,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:145 */
+  /* ./compiling//table_computation.nit:148 */
   fra.me.REG[1] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("Building tables");
@@ -676,16 +695,16 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
   fra.me.REG[2] = fra.me.REG[2];
   REGB0 = TAG_Int(1);
   CALL_mmloader___ToolContext___info(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
-  /* ./compiling//table_computation.nit:146 */
+  /* ./compiling//table_computation.nit:149 */
   fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___mhe(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_compiling___table_computation, 146);
+    nit_abort("Reciever is null", NULL, LOCATE_compiling___table_computation, 149);
   }
   fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_compiling___table_computation___Program___do_table_computation_2));
-  /* ./compiling//table_computation.nit:151 */
+  /* ./compiling//table_computation.nit:154 */
   fra.me.REG[2] = CALL_program___Program___tc(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_5) {
     fra.me.REG[1] = BOX_NativeString("Merging all tables");
@@ -697,7 +716,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
   fra.me.REG[1] = fra.me.REG[1];
   REGB0 = TAG_Int(2);
   CALL_mmloader___ToolContext___info(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], REGB0);
-  /* ./compiling//table_computation.nit:152 */
+  /* ./compiling//table_computation.nit:155 */
   CALL_compiling___table_computation___Program___do_global_table_analysis(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -723,7 +742,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//table_computation.nit:147 */
+    /* ./compiling//table_computation.nit:150 */
     fra.me.REG[1] = CALL_program___Program___tc(closctx->REG[0])(closctx->REG[0]);
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -751,7 +770,7 @@ void compiling___table_computation___Program___do_table_computation(val_t p0){
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(2);
     CALL_mmloader___ToolContext___info(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], REGB0);
-    /* ./compiling//table_computation.nit:148 */
+    /* ./compiling//table_computation.nit:151 */
     CALL_compiling___table_computation___MMModule___local_analysis(fra.me.REG[0])(fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
@@ -766,7 +785,7 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 155;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_compiling___table_computation___Program___do_global_table_analysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 12;
@@ -783,86 +802,91 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:158 */
+  /* ./compiling//table_computation.nit:161 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//table_computation.nit:159 */
+  /* ./compiling//table_computation.nit:162 */
   fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ./compiling//table_computation.nit:160 */
+  /* ./compiling//table_computation.nit:163 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//table_computation.nit:161 */
+  /* ./compiling//table_computation.nit:164 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//table_computation.nit:163 */
+  /* ./compiling//table_computation.nit:166 */
   fra.me.REG[4] = NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init();
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:164 */
+  /* ./compiling//table_computation.nit:167 */
   fra.me.REG[4] = NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___init();
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:165 */
+  /* ./compiling//table_computation.nit:168 */
   fra.me.REG[4] = NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___init();
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:166 */
+  /* ./compiling//table_computation.nit:169 */
   fra.me.REG[4] = NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init();
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:167 */
+  /* ./compiling//table_computation.nit:170 */
   fra.me.REG[4] = NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init();
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:169 */
+  /* ./compiling//table_computation.nit:172 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ./compiling//table_computation.nit:170 */
-  REGB1 = TAG_Int(3);
   /* ./compiling//table_computation.nit:173 */
+  REGB1 = TAG_Int(3);
+  /* ./compiling//table_computation.nit:176 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ./compiling//table_computation.nit:174 */
+  /* ./compiling//table_computation.nit:177 */
   fra.me.REG[5] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
   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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[5] = fra.me.REG[4];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ./compiling//table_computation.nit:179 */
+      /* ./compiling//table_computation.nit:182 */
       fra.me.REG[8] = NEW_CompiledClass_compiling___table_computation___CompiledClass___init(fra.me.REG[7]);
-      /* ./compiling//table_computation.nit:180 */
+      /* ./compiling//table_computation.nit:183 */
       fra.me.REG[9] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
       CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10], fra.me.REG[8]);
-      /* ./compiling//table_computation.nit:184 */
+      /* ./compiling//table_computation.nit:187 */
       fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./compiling//table_computation.nit:185 */
+      /* ./compiling//table_computation.nit:188 */
       fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMGlobalClass___mmmodule(fra.me.REG[10])(fra.me.REG[10]);
-      /* ./compiling//table_computation.nit:186 */
+      /* ./compiling//table_computation.nit:189 */
       fra.me.REG[10] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[7])(fra.me.REG[7]);
       REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
@@ -878,507 +902,552 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ./compiling//table_computation.nit:187 */
+        /* ./compiling//table_computation.nit:190 */
         CALL_compiling___table_computation___CompiledClass___id__eq(fra.me.REG[8])(fra.me.REG[8], REGB0);
-        /* ./compiling//table_computation.nit:188 */
+        /* ./compiling//table_computation.nit:191 */
         REGB3 = TAG_Int(4);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-        /* ./compiling//table_computation.nit:188 */
+        /* ./compiling//table_computation.nit:191 */
         REGB0 = REGB3;
       } else {
-        /* ./compiling//table_computation.nit:190 */
+        /* ./compiling//table_computation.nit:193 */
         CALL_compiling___table_computation___CompiledClass___id__eq(fra.me.REG[8])(fra.me.REG[8], REGB1);
-        /* ./compiling//table_computation.nit:191 */
+        /* ./compiling//table_computation.nit:194 */
         REGB3 = TAG_Int(4);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-        /* ./compiling//table_computation.nit:191 */
+        /* ./compiling//table_computation.nit:194 */
         REGB1 = REGB3;
       }
-      /* ./compiling//table_computation.nit:195 */
+      /* ./compiling//table_computation.nit:198 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrderElement___direct_smallers(fra.me.REG[8])(fra.me.REG[8]);
       REGB3 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[8])(fra.me.REG[8]);
       if (UNTAG_Bool(REGB3)) {
-        /* ./compiling//table_computation.nit:196 */
+        /* ./compiling//table_computation.nit:199 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
       }
-      /* ./compiling//table_computation.nit:200 */
+      /* ./compiling//table_computation.nit:203 */
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./compiling//table_computation.nit:201 */
+      /* ./compiling//table_computation.nit:204 */
       REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 201);
+        nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 204);
       }
-      /* ./compiling//table_computation.nit:202 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./compiling//table_computation.nit:206 */
+  /* ./compiling//table_computation.nit:209 */
   fra.me.REG[6] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ./compiling//table_computation.nit:207 */
+  /* ./compiling//table_computation.nit:210 */
   fra.me.REG[5] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
-      /* ./compiling//table_computation.nit:209 */
+      /* ./compiling//table_computation.nit:212 */
       while(1) {
         fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[8])(fra.me.REG[8]);
         fra.me.REG[10] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[10])(fra.me.REG[10]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
-        /* ./compiling//table_computation.nit:209 */
+        /* ./compiling//table_computation.nit:212 */
         REGB0 = TAG_Int(1);
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB0 = TAG_Bool((REGB1)==(REGB0));
-          /* ./compiling//table_computation.nit:209 */
+          /* ./compiling//table_computation.nit:212 */
           REGB3 = REGB0;
         }
         if (UNTAG_Bool(REGB3)) {
-          /* ./compiling//table_computation.nit:210 */
+          /* ./compiling//table_computation.nit:213 */
           fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[8])(fra.me.REG[8]);
           fra.me.REG[10] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[10])(fra.me.REG[10]);
           fra.me.REG[10] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[10])(fra.me.REG[10]);
           fra.me.REG[8] = fra.me.REG[10];
         } else {
-          /* ./compiling//table_computation.nit:209 */
+          /* ./compiling//table_computation.nit:212 */
           goto label5;
         }
       }
       label5: while(0);
-      /* ./compiling//table_computation.nit:212 */
+      /* ./compiling//table_computation.nit:215 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
-      /* ./compiling//table_computation.nit:213 */
+      /* ./compiling//table_computation.nit:216 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./compiling//table_computation.nit:218 */
+  /* ./compiling//table_computation.nit:221 */
   REGB2 = TAG_Int(0);
   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:221 */
+  /* ./compiling//table_computation.nit:224 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[7] = fra.me.REG[4];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = TAG_Bool(VAL_ISA(REGB0, 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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB3)];
-      /* ./compiling//table_computation.nit:223 */
+      /* ./compiling//table_computation.nit:226 */
       fra.me.REG[10] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
       fra.me.REG[9] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[9]);
-      /* ./compiling//table_computation.nit:224 */
+      /* ./compiling//table_computation.nit:227 */
       REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//table_computation.nit:226 */
+        /* ./compiling//table_computation.nit:229 */
         fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
         CALL_compiling___table_computation___Program___build_tables_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[8], fra.me.REG[2]);
-        /* ./compiling//table_computation.nit:227 */
+        /* ./compiling//table_computation.nit:230 */
         fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-        /* ./compiling//table_computation.nit:227 */
+        /* ./compiling//table_computation.nit:230 */
         if (UNTAG_Bool(REGB0)) {
           fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
-          /* ./compiling//table_computation.nit:227 */
+          /* ./compiling//table_computation.nit:230 */
           REGB2 = REGB0;
         }
       } else {
-        /* ./compiling//table_computation.nit:230 */
+        /* ./compiling//table_computation.nit:233 */
         fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[8])(fra.me.REG[8]);
         fra.me.REG[10] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[10] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[10])(fra.me.REG[10]);
-        /* ./compiling//table_computation.nit:231 */
+        /* ./compiling//table_computation.nit:234 */
         fra.me.REG[11] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[10] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[10]);
-        /* ./compiling//table_computation.nit:232 */
+        /* ./compiling//table_computation.nit:235 */
         fra.me.REG[11] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
         REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[11])(fra.me.REG[11]);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 232);
+          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 235);
         }
-        /* ./compiling//table_computation.nit:233 */
+        /* ./compiling//table_computation.nit:236 */
         fra.me.REG[11] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
         fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[10]);
-        /* ./compiling//table_computation.nit:234 */
+        /* ./compiling//table_computation.nit:237 */
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./compiling//table_computation.nit:235 */
+        /* ./compiling//table_computation.nit:238 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[8], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 235);
+          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 238);
         }
-        /* ./compiling//table_computation.nit:236 */
+        /* ./compiling//table_computation.nit:239 */
         fra.me.REG[8] = CALL_compiling___table_computation___MMConcreteClass___class_color_pos(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./compiling//table_computation.nit:237 */
+        /* ./compiling//table_computation.nit:240 */
         fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
-        /* ./compiling//table_computation.nit:238 */
+        /* ./compiling//table_computation.nit:241 */
         fra.me.REG[10] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
         CALL_compiling___table_computation___ColorContext___color__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8], REGB0);
-        /* ./compiling//table_computation.nit:239 */
+        /* ./compiling//table_computation.nit:242 */
         fra.me.REG[9] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[9])(fra.me.REG[9]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-        /* ./compiling//table_computation.nit:240 */
+        /* ./compiling//table_computation.nit:243 */
         if (UNTAG_Bool(REGB1)) {
           REGB2 = REGB0;
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ./compiling//table_computation.nit:243 */
+  /* ./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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ./compiling//table_computation.nit:243 */
+  /* ./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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[1] = fra.me.REG[4];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    REGB1 = TAG_Bool(VAL_ISA(REGB0, 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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
-      /* ./compiling//table_computation.nit:247 */
+      /* ./compiling//table_computation.nit:250 */
       fra.me.REG[9] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
       fra.me.REG[10] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
-      /* ./compiling//table_computation.nit:248 */
+      /* ./compiling//table_computation.nit:251 */
       fra.me.REG[9] = CALL_compiling___table_computation___CompiledClass___class_layout(fra.me.REG[10])(fra.me.REG[10]);
-      /* ./compiling//table_computation.nit:249 */
+      /* ./compiling//table_computation.nit:252 */
       fra.me.REG[10] = CALL_compiling___table_computation___CompiledClass___instance_layout(fra.me.REG[10])(fra.me.REG[10]);
-      /* ./compiling//table_computation.nit:250 */
+      /* ./compiling//table_computation.nit:253 */
       fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalClass___crhe(fra.me.REG[8])(fra.me.REG[8]);
       fra.me.REG[11] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[11])(fra.me.REG[11]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[11])(fra.me.REG[11], (&(fra.me)), ((fun_t)OC_compiling___table_computation___Program___do_global_table_analysis_8));
-      /* ./compiling//table_computation.nit:257 */
+      /* ./compiling//table_computation.nit:260 */
       REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//table_computation.nit:258 */
+        /* ./compiling//table_computation.nit:261 */
         REGB0 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[9])(fra.me.REG[9]);
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:217 */
+        REGB4 = TAG_Bool(VAL_ISA(REGB1, 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:234 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-        /* ./compiling//table_computation.nit:258 */
+        /* ./compiling//table_computation.nit:261 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./compiling//table_computation.nit:259 */
+          /* ./compiling//table_computation.nit:262 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
         }
-        /* ./compiling//table_computation.nit:261 */
+        /* ./compiling//table_computation.nit:264 */
         REGB1 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[10])(fra.me.REG[10]);
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:217 */
+        REGB4 = TAG_Bool(VAL_ISA(REGB0, 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 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-        /* ./compiling//table_computation.nit:261 */
+        /* ./compiling//table_computation.nit:264 */
         if (UNTAG_Bool(REGB0)) {
-          /* ./compiling//table_computation.nit:262 */
+          /* ./compiling//table_computation.nit:265 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[10]);
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label9;
     }
   }
   label9: while(0);
-  /* ./compiling//table_computation.nit:268 */
+  /* ./compiling//table_computation.nit:271 */
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ./compiling//table_computation.nit:268 */
+  /* ./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);
-  /* ./compiling//table_computation.nit:269 */
+  /* ./compiling//table_computation.nit:272 */
   REGB3 = TAG_Int(0);
   CALL_compiling___table_computation___Program___colorize(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[6], REGB3);
-  /* ./compiling//table_computation.nit:272 */
+  /* ./compiling//table_computation.nit:275 */
   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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = TAG_Bool(VAL_ISA(REGB0, 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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
-      /* ./compiling//table_computation.nit:274 */
+      /* ./compiling//table_computation.nit:277 */
       fra.me.REG[1] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[10] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[10]);
-      /* ./compiling//table_computation.nit:275 */
+      /* ./compiling//table_computation.nit:278 */
       REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./compiling//table_computation.nit:277 */
+        /* ./compiling//table_computation.nit:280 */
         fra.me.REG[1] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         CALL_compiling___table_computation___Program___build_tables_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[7], fra.me.REG[2]);
-        /* ./compiling//table_computation.nit:278 */
+        /* ./compiling//table_computation.nit:281 */
         fra.me.REG[1] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[10])(fra.me.REG[10]);
         CALL_compiling___table_computation___Program___build_tables_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[7], fra.me.REG[3]);
       } else {
-        /* ./compiling//table_computation.nit:281 */
+        /* ./compiling//table_computation.nit:284 */
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./compiling//table_computation.nit:282 */
+        /* ./compiling//table_computation.nit:285 */
         fra.me.REG[9] = CALL_compiling___table_computation___Program___compiled_classes(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[1]);
-        /* ./compiling//table_computation.nit:283 */
+        /* ./compiling//table_computation.nit:286 */
         fra.me.REG[9] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[9])(fra.me.REG[9]);
-        /* ./compiling//table_computation.nit:284 */
+        /* ./compiling//table_computation.nit:287 */
         fra.me.REG[9] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[8] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[1])(fra.me.REG[1]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
-        /* ./compiling//table_computation.nit:285 */
+        /* ./compiling//table_computation.nit:288 */
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./compiling//table_computation.nit:286 */
+        /* ./compiling//table_computation.nit:289 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 286);
+          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 289);
         }
-        /* ./compiling//table_computation.nit:287 */
+        /* ./compiling//table_computation.nit:290 */
         fra.me.REG[7] = CALL_compiling___table_computation___MMConcreteClass___class_color_pos(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./compiling//table_computation.nit:288 */
+        /* ./compiling//table_computation.nit:291 */
         fra.me.REG[8] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[9] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[8])(fra.me.REG[8], REGB0, fra.me.REG[7]);
-        /* ./compiling//table_computation.nit:289 */
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[8])(fra.me.REG[8], REGB0, fra.me.REG[7]);
+        /* ./compiling//table_computation.nit:292 */
         while(1) {
           fra.me.REG[7] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-          /* ./../lib/standard//kernel.nit:214 */
+          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:231 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
-          /* ./compiling//table_computation.nit:289 */
+          /* ./compiling//table_computation.nit:292 */
           if (UNTAG_Bool(REGB0)) {
-            /* ./compiling//table_computation.nit:290 */
+            /* ./compiling//table_computation.nit:293 */
             fra.me.REG[7] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
           } else {
-            /* ./compiling//table_computation.nit:289 */
+            /* ./compiling//table_computation.nit:292 */
             goto label10;
           }
         }
         label10: while(0);
-        /* ./compiling//table_computation.nit:292 */
+        /* ./compiling//table_computation.nit:295 */
         fra.me.REG[7] = CALL_compiling___table_computation___CompiledClass___class_table(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[8] = CALL_compiling___table_computation___CompiledClass___class_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[7], fra.me.REG[8]);
-        /* ./compiling//table_computation.nit:293 */
+        /* ./compiling//table_computation.nit:296 */
         fra.me.REG[8] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[10])(fra.me.REG[10]);
         REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[8])(fra.me.REG[8]);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 293);
+          nit_abort("Assert failed", NULL, LOCATE_compiling___table_computation, 296);
         }
-        /* ./compiling//table_computation.nit:294 */
+        /* ./compiling//table_computation.nit:297 */
         fra.me.REG[8] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[10])(fra.me.REG[10]);
         fra.me.REG[1] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[1])(fra.me.REG[1]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[1]);
-        /* ./compiling//table_computation.nit:295 */
+        /* ./compiling//table_computation.nit:298 */
         fra.me.REG[1] = CALL_compiling___table_computation___CompiledClass___instance_table(fra.me.REG[10])(fra.me.REG[10]);
         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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label11;
     }
   }
@@ -1409,10 +1478,10 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
     struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
     val_t REGB0;
     val_t tmp;
-    /* ./compiling//table_computation.nit:175 */
+    /* ./compiling//table_computation.nit:178 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_compiling___table_computation;
-    fra.me.line = 175;
+    fra.me.line = 178;
     fra.me.meth = LOCATE_compiling___table_computation___Program___do_global_table_analysis;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
@@ -1439,13 +1508,13 @@ void compiling___table_computation___Program___do_global_table_analysis(val_t p0
         fra.me.REG[0] = NIT_NULL;
         fra.me.REG[1] = NIT_NULL;
         fra.me.REG[0] = p0;
-        /* ./compiling//table_computation.nit:251 */
+        /* ./compiling//table_computation.nit:254 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
         if (UNTAG_Bool(REGB0)) {
-          /* ./compiling//table_computation.nit:252 */
+          /* ./compiling//table_computation.nit:255 */
           fra.me.REG[1] = CALL_compiling___table_computation___MMConcreteClass___class_layout(fra.me.REG[0])(fra.me.REG[0]);
           CALL_compiling___table_computation___TableEltComposite___add(closctx->REG[9])(closctx->REG[9], fra.me.REG[0], fra.me.REG[1]);
-          /* ./compiling//table_computation.nit:253 */
+          /* ./compiling//table_computation.nit:256 */
           fra.me.REG[1] = CALL_compiling___table_computation___MMConcreteClass___instance_layout(fra.me.REG[0])(fra.me.REG[0]);
           CALL_compiling___table_computation___TableEltComposite___add(closctx->REG[10])(closctx->REG[10], fra.me.REG[0], fra.me.REG[1]);
         }
@@ -1466,7 +1535,7 @@ void compiling___table_computation___Program___colorize(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_compiling___table_computation;
-  fra.me.line = 300;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_compiling___table_computation___Program___colorize;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -1485,124 +1554,139 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   REGB0 = p3;
-  /* ./compiling//table_computation.nit:303 */
+  /* ./compiling//table_computation.nit:306 */
   fra.me.REG[3] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  /* ./compiling//table_computation.nit:304 */
+  /* ./compiling//table_computation.nit:307 */
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-      /* ./compiling//table_computation.nit:306 */
+      /* ./compiling//table_computation.nit:309 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-      /* ./compiling//table_computation.nit:307 */
+      /* ./compiling//table_computation.nit:310 */
       REGB3 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./compiling//table_computation.nit:308 */
+      /* ./compiling//table_computation.nit:311 */
       fra.me.REG[7] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
       REGB4 = CALL_compiling___table_computation___ColorContext___has_color(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
       if (UNTAG_Bool(REGB4)) {
-        /* ./compiling//table_computation.nit:309 */
+        /* ./compiling//table_computation.nit:312 */
         fra.me.REG[7] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
         REGB4 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
         REGB2 = REGB4;
       } else {
-        /* ./compiling//table_computation.nit:311 */
+        /* ./compiling//table_computation.nit:314 */
         CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[4])(fra.me.REG[4]);
         CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_compiling___table_computation___Program___colorize_1));
-        /* ./compiling//table_computation.nit:317 */
+        /* ./compiling//table_computation.nit:320 */
         REGB4 = REGB0;
-        /* ./compiling//table_computation.nit:318 */
+        /* ./compiling//table_computation.nit:321 */
         while(1) {
           REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB2));
           if (UNTAG_Bool(REGB5)) {
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ./../lib/standard//kernel.nit:227 */
             REGB6 = TAG_Bool((REGB4)==(REGB2));
-            /* ./compiling//table_computation.nit:318 */
+            /* ./compiling//table_computation.nit:321 */
             REGB5 = REGB6;
           }
           REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
           if (UNTAG_Bool(REGB5)) {
-            /* ./compiling//table_computation.nit:319 */
+            /* ./compiling//table_computation.nit:322 */
             REGB2 = REGB4;
-            /* ./../lib/standard//collection//array.nit:231 */
+            /* ./../lib/standard//collection//array.nit:266 */
             fra.me.REG[7] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:234 */
+            /* ./../lib/standard//collection//array.nit:269 */
             REGB5 = TAG_Int(0);
-            /* ./../lib/standard//collection//array.nit:235 */
+            /* ./../lib/standard//collection//array.nit:270 */
             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, 235);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
             }
             REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ./../lib/standard//collection//array.nit:236 */
+            /* ./../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:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             while(1) {
-              /* ./../lib/standard//collection//array.nit:23 */
+              /* ./../lib/standard//collection//array.nit:24 */
               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, 23);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
               }
               REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-              /* ./../lib/standard//kernel.nit:215 */
+              REGB7 = TAG_Bool(VAL_ISA(REGB6, 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:232 */
               REGB6 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB6));
-              /* ./../lib/standard//collection//array.nit:237 */
+              /* ./../lib/standard//collection//array.nit:272 */
               if (UNTAG_Bool(REGB6)) {
-               /* ./../lib/standard//collection//array.nit:238 */
+               /* ./../lib/standard//collection//array.nit:273 */
                REGB6 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB5)];
-               /* ./compiling//table_computation.nit:321 */
+               /* ./compiling//table_computation.nit:324 */
                REGB6 = TAG_Int(0);
-               /* ./compiling//table_computation.nit:322 */
+               /* ./compiling//table_computation.nit:325 */
                while(1) {
-               /* ./../lib/standard//kernel.nit:215 */
+               REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB6), VTID_standard___kernel___Comparable___OTHER(REGB6))) /*cast OTHER*/;
+               if (UNTAG_Bool(REGB7)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+               }
+               /* ./../lib/standard//kernel.nit:232 */
                REGB7 = TAG_Bool(UNTAG_Int(REGB6)<UNTAG_Int(REGB3));
-               /* ./compiling//table_computation.nit:322 */
+               /* ./compiling//table_computation.nit:325 */
                if (UNTAG_Bool(REGB7)) {
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
-               /* ./compiling//table_computation.nit:323 */
+               /* ./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:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
-               /* ./compiling//table_computation.nit:323 */
+               /* ./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);
                REGB7 = CALL_compiling___table_computation___Program___free_color(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[10], fra.me.REG[9]);
                REGB7 = TAG_Bool(!UNTAG_Bool(REGB7));
@@ -1611,106 +1695,111 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
                REGB7 = REGB8;
                }
                if (UNTAG_Bool(REGB7)) {
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB6));
-               /* ./compiling//table_computation.nit:324 */
+               /* ./compiling//table_computation.nit:327 */
                REGB8 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
-               /* ./compiling//table_computation.nit:324 */
+               /* ./compiling//table_computation.nit:327 */
                REGB4 = REGB8;
-               /* ./compiling//table_computation.nit:325 */
+               /* ./compiling//table_computation.nit:328 */
                REGB8 = TAG_Int(0);
                REGB6 = REGB8;
                } else {
-               /* ./compiling//table_computation.nit:327 */
+               /* ./compiling//table_computation.nit:330 */
                REGB8 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB8 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB8));
-               /* ./compiling//table_computation.nit:327 */
+               /* ./compiling//table_computation.nit:330 */
                REGB6 = REGB8;
                }
                } else {
-               /* ./compiling//table_computation.nit:322 */
+               /* ./compiling//table_computation.nit:325 */
                goto label2;
                }
                }
                label2: while(0);
-               /* ./../lib/standard//collection//array.nit:239 */
+               /* ./../lib/standard//collection//array.nit:274 */
                REGB6 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB6 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB6));
-               /* ./../lib/standard//collection//array.nit:239 */
+               /* ./../lib/standard//collection//array.nit:274 */
                REGB5 = REGB6;
               } else {
-               /* ./../lib/standard//collection//array.nit:237 */
+               /* ./../lib/standard//collection//array.nit:272 */
                goto label3;
               }
             }
             label3: while(0);
           } else {
-            /* ./compiling//table_computation.nit:318 */
+            /* ./compiling//table_computation.nit:321 */
             goto label4;
           }
         }
         label4: while(0);
-        /* ./compiling//table_computation.nit:332 */
+        /* ./compiling//table_computation.nit:335 */
         fra.me.REG[8] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
         CALL_compiling___table_computation___ColorContext___color__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6], REGB2);
       }
-      /* ./compiling//table_computation.nit:334 */
+      /* ./compiling//table_computation.nit:337 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         if (UNTAG_Bool(REGB5)) {
-          /* ./compiling//table_computation.nit:334 */
+          /* ./compiling//table_computation.nit:337 */
           REGB5 = REGB4;
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB6 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-          /* ./compiling//table_computation.nit:335 */
+          /* ./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:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB6 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-            /* ./compiling//table_computation.nit:336 */
+            /* ./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);
             REGB6 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB6)) {
-              nit_abort("Reciever is null", NULL, LOCATE_compiling___table_computation, 336);
+              nit_abort("Reciever is null", NULL, LOCATE_compiling___table_computation, 339);
             }
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
           } else {
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-            /* ./compiling//table_computation.nit:338 */
+            /* ./compiling//table_computation.nit:341 */
             REGB6 = TAG_Int(1);
             fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB6);
             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:337 */
+          /* ./../lib/standard//kernel.nit:354 */
           REGB5 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-          /* ./../lib/standard//kernel.nit:337 */
+          /* ./../lib/standard//kernel.nit:354 */
           REGB4 = REGB5;
         } else {
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           goto label5;
         }
       }
       label5: while(0);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB4;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
@@ -1722,7 +1811,7 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
           struct {struct stack_frame_t me;} fra;
           val_t REGB0;
           val_t tmp;
-          /* ./compiling//table_computation.nit:312 */
+          /* ./compiling//table_computation.nit:315 */
           fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
           fra.me.file = LOCATE_compiling___table_computation;
           fra.me.line = 0;
@@ -1731,10 +1820,10 @@ void compiling___table_computation___Program___colorize(val_t p0, val_t p1, val_
           fra.me.REG_size = 1;
           fra.me.REG[0] = NIT_NULL;
           fra.me.REG[0] = p0;
-          /* ./compiling//table_computation.nit:313 */
+          /* ./compiling//table_computation.nit:316 */
           REGB0 = CALL_compiling___table_computation___TableElt___is_related_to(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
           if (UNTAG_Bool(REGB0)) {
-            /* ./compiling//table_computation.nit:314 */
+            /* ./compiling//table_computation.nit:317 */
             CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
           }
           stack_frame_head = fra.me.prev;
@@ -1748,7 +1837,7 @@ val_t compiling___table_computation___Program___free_color(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_compiling___table_computation;
-  fra.me.line = 344;
+  fra.me.line = 347;
   fra.me.meth = LOCATE_compiling___table_computation___Program___free_color;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1759,57 +1848,62 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-      /* ./compiling//table_computation.nit:347 */
+      /* ./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]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./compiling//table_computation.nit:348 */
+        /* ./compiling//table_computation.nit:351 */
         REGB1 = TAG_Bool(false);
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./compiling//table_computation.nit:351 */
+  /* ./compiling//table_computation.nit:354 */
   REGB0 = TAG_Bool(true);
   REGB1 = REGB0;
   goto label1;
@@ -1825,7 +1919,7 @@ void compiling___table_computation___Program___append_to_table(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 354;
+  fra.me.line = 357;
   fra.me.meth = LOCATE_compiling___table_computation___Program___append_to_table;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1837,40 +1931,45 @@ void compiling___table_computation___Program___append_to_table(val_t p0, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//table_computation.nit:356 */
+  /* ./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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./compiling//table_computation.nit:356 */
+      /* ./compiling//table_computation.nit:359 */
       REGB2 = REGB0;
-      /* ./compiling//table_computation.nit:357 */
+      /* ./compiling//table_computation.nit:360 */
       fra.me.REG[3] = CALL_compiling___table_computation___TableElt___item(fra.me.REG[2])(fra.me.REG[2], REGB2);
-      /* ./compiling//table_computation.nit:358 */
+      /* ./compiling//table_computation.nit:361 */
       fra.me.REG[4] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-      /* ./compiling//table_computation.nit:358 */
+      /* ./compiling//table_computation.nit:361 */
       CALL_compiling___table_computation___ColorContext___color__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], REGB2);
-      /* ./compiling//table_computation.nit:359 */
+      /* ./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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label1;
     }
   }
@@ -1888,7 +1987,7 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 363;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_compiling___table_computation___Program___build_tables_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -1904,130 +2003,150 @@ void compiling___table_computation___Program___build_tables_in(val_t p0, val_t p
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./compiling//table_computation.nit:365 */
+  /* ./compiling//table_computation.nit:368 */
   fra.me.REG[4] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  /* ./compiling//table_computation.nit:366 */
+  /* ./compiling//table_computation.nit:369 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-      /* ./compiling//table_computation.nit:368 */
+      /* ./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]);
       if (UNTAG_Bool(REGB2)) {
-        /* ./compiling//table_computation.nit:369 */
+        /* ./compiling//table_computation.nit:372 */
         fra.me.REG[7] = CALL_compiling___table_computation___Program___table_information(fra.me.REG[0])(fra.me.REG[0]);
         REGB2 = CALL_compiling___table_computation___ColorContext___color(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-        /* ./compiling//table_computation.nit:370 */
+        /* ./compiling//table_computation.nit:373 */
         REGB3 = CALL_compiling___table_computation___TableElt___length(fra.me.REG[6])(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ./compiling//table_computation.nit:371 */
+        /* ./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]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-        /* ./compiling//table_computation.nit:372 */
+        /* ./compiling//table_computation.nit:375 */
         if (UNTAG_Bool(REGB2)) {
-          /* ./compiling//table_computation.nit:373 */
+          /* ./compiling//table_computation.nit:376 */
           REGB0 = REGB3;
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./compiling//table_computation.nit:377 */
+  /* ./compiling//table_computation.nit:380 */
   REGB1 = TAG_Int(0);
-  /* ./compiling//table_computation.nit:378 */
+  /* ./compiling//table_computation.nit:381 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./compiling//table_computation.nit:378 */
+    /* ./compiling//table_computation.nit:381 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./compiling//table_computation.nit:379 */
+      /* ./compiling//table_computation.nit:382 */
       REGB3 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], REGB1);
       if (UNTAG_Bool(REGB3)) {
-        /* ./compiling//table_computation.nit:380 */
+        /* ./compiling//table_computation.nit:383 */
         fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB1);
-        /* ./compiling//table_computation.nit:381 */
+        /* ./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:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./compiling//table_computation.nit:381 */
+            /* ./compiling//table_computation.nit:384 */
             REGB4 = REGB3;
-            /* ./compiling//table_computation.nit:382 */
+            /* ./compiling//table_computation.nit:385 */
             fra.me.REG[2] = CALL_compiling___table_computation___TableElt___item(fra.me.REG[0])(fra.me.REG[0], REGB4);
-            CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB1, fra.me.REG[2]);
-            /* ./compiling//table_computation.nit:383 */
+            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:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-            /* ./compiling//table_computation.nit:383 */
+            /* ./compiling//table_computation.nit:386 */
             REGB1 = REGB4;
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB3 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label2;
           }
         }
         label2: while(0);
       } else {
-        /* ./compiling//table_computation.nit:386 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB1, NIT_NULL);
-        /* ./compiling//table_computation.nit:387 */
+        /* ./compiling//table_computation.nit:389 */
+        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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-        /* ./compiling//table_computation.nit:387 */
+        /* ./compiling//table_computation.nit:390 */
         REGB1 = REGB3;
       }
     } else {
-      /* ./compiling//table_computation.nit:378 */
+      /* ./compiling//table_computation.nit:381 */
       goto label3;
     }
   }
@@ -2041,17 +2160,17 @@ val_t compiling___table_computation___MMModule___local_table(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 394;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_compiling___table_computation___MMModule___local_table;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:394 */
+  /* ./compiling//table_computation.nit:397 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_compiling___table_computation, 394);
+    nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_compiling___table_computation, 397);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2062,14 +2181,14 @@ void compiling___table_computation___MMModule___local_analysis(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 397;
+  fra.me.line = 400;
   fra.me.meth = LOCATE_compiling___table_computation___MMModule___local_analysis;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:400 */
+  /* ./compiling//table_computation.nit:403 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_compiling___table_computation___MMModule___local_analysis_1));
   stack_frame_head = fra.me.prev;
@@ -2092,14 +2211,14 @@ void compiling___table_computation___MMModule___local_analysis(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./compiling//table_computation.nit:401 */
+    /* ./compiling//table_computation.nit:404 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./compiling//table_computation.nit:402 */
+      /* ./compiling//table_computation.nit:405 */
       REGB0 = TAG_Bool(ATTR_compiling___table_computation___MMModule____local_table(closctx->REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_compiling___table_computation, 402);
+        nit_abort("Uninitialized attribute %s", "_local_table", LOCATE_compiling___table_computation, 405);
       }
       fra.me.REG[1] = ATTR_compiling___table_computation___MMModule____local_table(closctx->REG[0]);
       CALL_compiling___table_computation___MMConcreteClass___build_layout_in(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2127,12 +2246,12 @@ val_t compiling___table_computation___TableElt___is_related_to(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 418;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_compiling___table_computation___TableElt___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./compiling//table_computation.nit:418 */
-  nit_abort("Deferred method called", NULL, LOCATE_compiling___table_computation, 418);
+  /* ./compiling//table_computation.nit:421 */
+  nit_abort("Deferred method called", NULL, LOCATE_compiling___table_computation, 421);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2142,13 +2261,13 @@ val_t compiling___table_computation___TableElt___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 421;
+  fra.me.line = 424;
   fra.me.meth = LOCATE_compiling___table_computation___TableElt___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:422 */
+  /* ./compiling//table_computation.nit:425 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -2161,14 +2280,14 @@ val_t compiling___table_computation___TableElt___item(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 424;
+  fra.me.line = 427;
   fra.me.meth = LOCATE_compiling___table_computation___TableElt___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./compiling//table_computation.nit:425 */
+  /* ./compiling//table_computation.nit:428 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2180,17 +2299,17 @@ val_t compiling___table_computation___ModuleTableEltGroup___elements(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 437;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_compiling___table_computation___ModuleTableEltGroup___elements;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:437 */
+  /* ./compiling//table_computation.nit:440 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___ModuleTableEltGroup____elements(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_elements", LOCATE_compiling___table_computation, 437);
+    nit_abort("Uninitialized attribute %s", "_elements", LOCATE_compiling___table_computation, 440);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___ModuleTableEltGroup____elements(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2202,17 +2321,17 @@ val_t compiling___table_computation___TableEltProp___property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 443;
+  fra.me.line = 446;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltProp___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:443 */
+  /* ./compiling//table_computation.nit:446 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_compiling___table_computation, 443);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_compiling___table_computation, 446);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2225,7 +2344,7 @@ void compiling___table_computation___TableEltProp___init(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_compiling___table_computation;
-  fra.me.line = 445;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2233,7 +2352,7 @@ void compiling___table_computation___TableEltProp___init(val_t p0, val_t p1, int
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:447 */
+  /* ./compiling//table_computation.nit:450 */
   ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -2245,17 +2364,17 @@ val_t compiling___table_computation___AbsTableEltClass___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 469;
+  fra.me.line = 482;
   fra.me.meth = LOCATE_compiling___table_computation___AbsTableEltClass___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:469 */
+  /* ./compiling//table_computation.nit:482 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_compiling___table_computation, 469);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_compiling___table_computation, 482);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2268,7 +2387,7 @@ void compiling___table_computation___AbsTableEltClass___init(val_t p0, val_t p1,
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2277,10 +2396,10 @@ void compiling___table_computation___AbsTableEltClass___init(val_t p0, val_t p1,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_compiling___table_computation___AbsTableElt___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./compiling//table_computation.nit:474 */
+  /* ./compiling//table_computation.nit:487 */
   ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -2292,7 +2411,7 @@ val_t compiling___table_computation___TableEltClass___is_related_to(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 482;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltClass___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2301,17 +2420,17 @@ val_t compiling___table_computation___TableEltClass___is_related_to(val_t p0, va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:484 */
+  /* ./compiling//table_computation.nit:497 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_compiling___table_computation, 484);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_compiling___table_computation, 497);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___AbsTableEltClass____local_class(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./compiling//table_computation.nit:485 */
+  /* ./compiling//table_computation.nit:498 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
@@ -2325,27 +2444,27 @@ val_t compiling___table_computation___TableEltComposite___length(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 515;
+  fra.me.line = 528;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltComposite___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:515 */
+  /* ./compiling//table_computation.nit:528 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 515);
+    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 528);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./compiling//table_computation.nit:515 */
+  /* ./compiling//table_computation.nit:528 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2357,7 +2476,7 @@ val_t compiling___table_computation___TableEltComposite___is_related_to(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 516;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltComposite___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2365,12 +2484,12 @@ val_t compiling___table_computation___TableEltComposite___is_related_to(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:516 */
+  /* ./compiling//table_computation.nit:529 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____cc(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cc", LOCATE_compiling___table_computation, 516);
+    nit_abort("Uninitialized attribute %s", "_cc", LOCATE_compiling___table_computation, 529);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___TableEltComposite____cc(fra.me.REG[0]);
   fra.me.REG[0] = CALL_compiling___table_computation___CompiledClass___local_class(fra.me.REG[0])(fra.me.REG[0]);
@@ -2386,7 +2505,7 @@ void compiling___table_computation___TableEltComposite___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_compiling___table_computation;
-  fra.me.line = 518;
+  fra.me.line = 531;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltComposite___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2398,33 +2517,33 @@ void compiling___table_computation___TableEltComposite___add(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//table_computation.nit:520 */
+  /* ./compiling//table_computation.nit:533 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____offsets(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_offsets", LOCATE_compiling___table_computation, 520);
+    nit_abort("Uninitialized attribute %s", "_offsets", LOCATE_compiling___table_computation, 533);
   }
   fra.me.REG[3] = ATTR_compiling___table_computation___TableEltComposite____offsets(fra.me.REG[0]);
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 520);
+    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 533);
   }
   fra.me.REG[4] = ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./compiling//table_computation.nit:520 */
+  /* ./compiling//table_computation.nit:533 */
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], REGB0);
-  /* ./compiling//table_computation.nit:521 */
+  /* ./compiling//table_computation.nit:534 */
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 521);
+    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 534);
   }
   fra.me.REG[0] = ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
@@ -2439,55 +2558,65 @@ val_t compiling___table_computation___TableEltComposite___item(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 524;
+  fra.me.line = 537;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltComposite___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./compiling//table_computation.nit:524 */
+  /* ./compiling//table_computation.nit:537 */
   REGB1 = TAG_Bool(ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_table", LOCATE_compiling___table_computation, 524);
+    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:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
-  /* ./compiling//table_computation.nit:524 */
+  /* ./compiling//table_computation.nit:537 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2500,7 +2629,7 @@ void compiling___table_computation___TableEltComposite___init(val_t p0, val_t p1
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 526;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltComposite___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2508,12 +2637,12 @@ void compiling___table_computation___TableEltComposite___init(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:528 */
+  /* ./compiling//table_computation.nit:541 */
   ATTR_compiling___table_computation___TableEltComposite____cc(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:529 */
+  /* ./compiling//table_computation.nit:542 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___TableEltComposite____table(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:530 */
+  /* ./compiling//table_computation.nit:543 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___table_computation___TableEltComposite____offsets(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -2526,7 +2655,7 @@ val_t compiling___table_computation___TableEltClassSelfId___is_related_to(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 537;
+  fra.me.line = 550;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltClassSelfId___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2534,7 +2663,7 @@ val_t compiling___table_computation___TableEltClassSelfId___is_related_to(val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:537 */
+  /* ./compiling//table_computation.nit:550 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2547,7 +2676,7 @@ val_t compiling___table_computation___TableEltClassSelfName___is_related_to(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 543;
+  fra.me.line = 556;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltClassSelfName___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2555,7 +2684,7 @@ val_t compiling___table_computation___TableEltClassSelfName___is_related_to(val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:543 */
+  /* ./compiling//table_computation.nit:556 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2568,7 +2697,7 @@ val_t compiling___table_computation___TableEltClassObjectSize___is_related_to(va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 549;
+  fra.me.line = 562;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltClassObjectSize___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2576,7 +2705,7 @@ val_t compiling___table_computation___TableEltClassObjectSize___is_related_to(va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:549 */
+  /* ./compiling//table_computation.nit:562 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2589,7 +2718,7 @@ val_t compiling___table_computation___TableEltObjectId___is_related_to(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 555;
+  fra.me.line = 568;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltObjectId___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2597,7 +2726,7 @@ val_t compiling___table_computation___TableEltObjectId___is_related_to(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:555 */
+  /* ./compiling//table_computation.nit:568 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2610,7 +2739,7 @@ val_t compiling___table_computation___TableEltVftPointer___is_related_to(val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_compiling___table_computation;
-  fra.me.line = 561;
+  fra.me.line = 574;
   fra.me.meth = LOCATE_compiling___table_computation___TableEltVftPointer___is_related_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2618,7 +2747,7 @@ val_t compiling___table_computation___TableEltVftPointer___is_related_to(val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./compiling//table_computation.nit:561 */
+  /* ./compiling//table_computation.nit:574 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
index f6abe3a..4a3b133 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/compiling/table_computation. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./compiling/table_computation. */
 #ifndef compiling___table_computation_sep
 #define compiling___table_computation_sep
 #include "program._sep.h"
@@ -22,6 +22,10 @@ extern const classtable_elt_t VFT_compiling___table_computation___TableEltProp[]
 
 extern const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[];
 
+extern const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[];
+
+extern const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[];
+
 extern const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[];
 
 extern const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[];
@@ -129,53 +133,59 @@ extern const int SFT_compiling___table_computation[];
 #define ID_compiling___table_computation___TableEltMeth (SFT_compiling___table_computation[35])
 #define COLOR_compiling___table_computation___TableEltMeth (SFT_compiling___table_computation[36])
 #define INIT_TABLE_POS_compiling___table_computation___TableEltMeth (SFT_compiling___table_computation[37] + 0)
-#define ID_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[38])
-#define COLOR_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[39])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[40] + 0)
-#define ID_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[41])
-#define COLOR_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[42])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[43] + 0)
-#define ID_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[44])
-#define COLOR_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[45])
-#define ATTR_compiling___table_computation___AbsTableEltClass____local_class(recv) ATTR(recv, (SFT_compiling___table_computation[46] + 0))
-#define INIT_TABLE_POS_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[47] + 0)
-#define CALL_compiling___table_computation___AbsTableEltClass___local_class(recv) ((compiling___table_computation___AbsTableEltClass___local_class_t)CALL((recv), (SFT_compiling___table_computation[47] + 1)))
-#define CALL_compiling___table_computation___AbsTableEltClass___init(recv) ((compiling___table_computation___AbsTableEltClass___init_t)CALL((recv), (SFT_compiling___table_computation[47] + 2)))
-#define ID_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[48])
-#define COLOR_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[49])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[50] + 0)
-#define ID_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[51])
-#define COLOR_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[52])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[53] + 0)
-#define ID_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[54])
-#define COLOR_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[55])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[56] + 0)
-#define ID_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[57])
-#define COLOR_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[58])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[59] + 0)
-#define ID_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[60])
-#define COLOR_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[61])
-#define ATTR_compiling___table_computation___TableEltComposite____table(recv) ATTR(recv, (SFT_compiling___table_computation[62] + 0))
-#define ATTR_compiling___table_computation___TableEltComposite____cc(recv) ATTR(recv, (SFT_compiling___table_computation[62] + 1))
-#define ATTR_compiling___table_computation___TableEltComposite____offsets(recv) ATTR(recv, (SFT_compiling___table_computation[62] + 2))
-#define INIT_TABLE_POS_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[63] + 0)
-#define CALL_compiling___table_computation___TableEltComposite___add(recv) ((compiling___table_computation___TableEltComposite___add_t)CALL((recv), (SFT_compiling___table_computation[63] + 1)))
-#define CALL_compiling___table_computation___TableEltComposite___init(recv) ((compiling___table_computation___TableEltComposite___init_t)CALL((recv), (SFT_compiling___table_computation[63] + 2)))
-#define ID_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[64])
-#define COLOR_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[65])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[66] + 0)
-#define ID_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[67])
-#define COLOR_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[68])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[69] + 0)
-#define ID_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[70])
-#define COLOR_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[71])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[72] + 0)
-#define ID_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[73])
-#define COLOR_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[74])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[75] + 0)
-#define ID_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[76])
-#define COLOR_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[77])
-#define INIT_TABLE_POS_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[78] + 0)
+#define ID_compiling___table_computation___TableEltVTClassColor (SFT_compiling___table_computation[38])
+#define COLOR_compiling___table_computation___TableEltVTClassColor (SFT_compiling___table_computation[39])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltVTClassColor (SFT_compiling___table_computation[40] + 0)
+#define ID_compiling___table_computation___TableEltVTClassId (SFT_compiling___table_computation[41])
+#define COLOR_compiling___table_computation___TableEltVTClassId (SFT_compiling___table_computation[42])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltVTClassId (SFT_compiling___table_computation[43] + 0)
+#define ID_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[44])
+#define COLOR_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[45])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltSuper (SFT_compiling___table_computation[46] + 0)
+#define ID_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[47])
+#define COLOR_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[48])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltAttr (SFT_compiling___table_computation[49] + 0)
+#define ID_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[50])
+#define COLOR_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[51])
+#define ATTR_compiling___table_computation___AbsTableEltClass____local_class(recv) ATTR(recv, (SFT_compiling___table_computation[52] + 0))
+#define INIT_TABLE_POS_compiling___table_computation___AbsTableEltClass (SFT_compiling___table_computation[53] + 0)
+#define CALL_compiling___table_computation___AbsTableEltClass___local_class(recv) ((compiling___table_computation___AbsTableEltClass___local_class_t)CALL((recv), (SFT_compiling___table_computation[53] + 1)))
+#define CALL_compiling___table_computation___AbsTableEltClass___init(recv) ((compiling___table_computation___AbsTableEltClass___init_t)CALL((recv), (SFT_compiling___table_computation[53] + 2)))
+#define ID_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[54])
+#define COLOR_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[55])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClass (SFT_compiling___table_computation[56] + 0)
+#define ID_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[57])
+#define COLOR_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[58])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassId (SFT_compiling___table_computation[59] + 0)
+#define ID_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[60])
+#define COLOR_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[61])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassInitTable (SFT_compiling___table_computation[62] + 0)
+#define ID_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[63])
+#define COLOR_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[64])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassColor (SFT_compiling___table_computation[65] + 0)
+#define ID_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[66])
+#define COLOR_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[67])
+#define ATTR_compiling___table_computation___TableEltComposite____table(recv) ATTR(recv, (SFT_compiling___table_computation[68] + 0))
+#define ATTR_compiling___table_computation___TableEltComposite____cc(recv) ATTR(recv, (SFT_compiling___table_computation[68] + 1))
+#define ATTR_compiling___table_computation___TableEltComposite____offsets(recv) ATTR(recv, (SFT_compiling___table_computation[68] + 2))
+#define INIT_TABLE_POS_compiling___table_computation___TableEltComposite (SFT_compiling___table_computation[69] + 0)
+#define CALL_compiling___table_computation___TableEltComposite___add(recv) ((compiling___table_computation___TableEltComposite___add_t)CALL((recv), (SFT_compiling___table_computation[69] + 1)))
+#define CALL_compiling___table_computation___TableEltComposite___init(recv) ((compiling___table_computation___TableEltComposite___init_t)CALL((recv), (SFT_compiling___table_computation[69] + 2)))
+#define ID_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[70])
+#define COLOR_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[71])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassSelfId (SFT_compiling___table_computation[72] + 0)
+#define ID_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[73])
+#define COLOR_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[74])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassSelfName (SFT_compiling___table_computation[75] + 0)
+#define ID_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[76])
+#define COLOR_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[77])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltClassObjectSize (SFT_compiling___table_computation[78] + 0)
+#define ID_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[79])
+#define COLOR_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[80])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltObjectId (SFT_compiling___table_computation[81] + 0)
+#define ID_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[82])
+#define COLOR_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[83])
+#define INIT_TABLE_POS_compiling___table_computation___TableEltVftPointer (SFT_compiling___table_computation[84] + 0)
 static const char * const LOCATE_compiling___table_computation___ColorContext___color = "table_computation::ColorContext::color";
 val_t compiling___table_computation___ColorContext___color(val_t p0, val_t p1);
 typedef val_t (*compiling___table_computation___ColorContext___color_t)(val_t p0, val_t p1);
@@ -317,6 +327,8 @@ void compiling___table_computation___TableEltProp___init(val_t p0, val_t p1, int
 typedef void (*compiling___table_computation___TableEltProp___init_t)(val_t p0, val_t p1, int* init_table);
 val_t NEW_TableEltProp_compiling___table_computation___TableEltProp___init(val_t p0);
 val_t NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(val_t p0);
+val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0);
+val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0);
 val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(val_t p0);
 val_t NEW_TableEltAttr_compiling___table_computation___TableEltProp___init(val_t p0);
 static const char * const LOCATE_compiling___table_computation___AbsTableEltClass___local_class = "table_computation::AbsTableEltClass::local_class";
index ff82dc2..1aacd10 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef ENVIRON_NITNI_H
 #define ENVIRON_NITNI_H
 
-#include "environ_nit.h"
+#include ".././../lib/standard//environ_nit.h"
 
 /* out/indirect function for environ::NativeString::get_environ */
 val_t NativeString_get_environ___out( val_t recv );
index 10633ef..9fdc203 100644 (file)
@@ -13,7 +13,6 @@
  * another product.
  */
 
-#define _POSIX_C_SOURCE 1
 #include <stdlib.h>
 
 #define string_NativeString_NativeString_get_environ_0(self) getenv(self)
index 5ab927c..8a11e5c 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_Process{
 } Process;
 #endif
 
-#include "exec_nit.h"
+#include ".././../lib/standard//exec_nit.h"
 
 /* out/indirect function for exec::Process::basic_exec_execute */
 val_t Process_basic_exec_execute___out( val_t recv, val_t p, val_t av, val_t ac, val_t pf );
index 952d0c7..aee4bd3 100644 (file)
@@ -14,7 +14,6 @@
  * another product.
  */
 
-#define _POSIX_C_SOURCE 1
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/wait.h>
index 8b6d2d2..4215bf0 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_NativeFileCapable{
 } NativeFileCapable;
 #endif
 
-#include "file_nit.h"
+#include ".././../lib/standard//file_nit.h"
 
 /* out/indirect function for file::NativeString::file_exists */
 val_t NativeString_file_exists___out( val_t recv );
index 2ce41d3..f9c5654 100644 (file)
@@ -13,7 +13,6 @@
  * another product.
  */
 
-#define _POSIX_C_SOURCE 1
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/stat.h>
index 0680759..cab5d96 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/icode/icode. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./icode/icode. */
 #ifndef icode_sep
 #define icode_sep
 #include "icode___icode_tools._sep.h"
index 85b7349..8557e55 100644 (file)
@@ -6,17 +6,17 @@ val_t icode___icode_base___IRegister___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 27;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_icode___icode_base___IRegister___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:27 */
+  /* ./icode//icode_base.nit:26 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRegister____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 27);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 26);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IRegister____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -29,7 +29,7 @@ void icode___icode_base___IRegister___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 29;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_icode___icode_base___IRegister___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -37,7 +37,7 @@ void icode___icode_base___IRegister___init(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;
-  /* ./icode//icode_base.nit:31 */
+  /* ./icode//icode_base.nit:30 */
   ATTR_icode___icode_base___IRegister____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -64,17 +64,17 @@ val_t icode___icode_base___IClosureDecl___closure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 41;
+  fra.me.line = 40;
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___closure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:41 */
+  /* ./icode//icode_base.nit:40 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_icode___icode_base, 41);
+    nit_abort("Uninitialized attribute %s", "_closure", LOCATE_icode___icode_base, 40);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -85,13 +85,13 @@ val_t icode___icode_base___IClosureDecl___default(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 44;
+  fra.me.line = 43;
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___default;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:44 */
+  /* ./icode//icode_base.nit:43 */
   fra.me.REG[0] = ATTR_icode___icode_base___IClosureDecl____default(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -101,7 +101,7 @@ void icode___icode_base___IClosureDecl___default__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_icode___icode_base;
-  fra.me.line = 44;
+  fra.me.line = 43;
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___default__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -109,7 +109,7 @@ void icode___icode_base___IClosureDecl___default__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:44 */
+  /* ./icode//icode_base.nit:43 */
   ATTR_icode___icode_base___IClosureDecl____default(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -121,7 +121,7 @@ void icode___icode_base___IClosureDecl___init(val_t p0, val_t p1, int* init_tabl
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 47;
+  fra.me.line = 46;
   fra.me.meth = LOCATE_icode___icode_base___IClosureDecl___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -129,7 +129,7 @@ void icode___icode_base___IClosureDecl___init(val_t p0, val_t p1, int* init_tabl
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:47 */
+  /* ./icode//icode_base.nit:46 */
   ATTR_icode___icode_base___IClosureDecl____closure(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -141,17 +141,17 @@ val_t icode___icode_base___IRoutine___params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 52;
+  fra.me.line = 51;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:52 */
+  /* ./icode//icode_base.nit:51 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_params", LOCATE_icode___icode_base, 52);
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_icode___icode_base, 51);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -162,13 +162,13 @@ val_t icode___icode_base___IRoutine___closure_decls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 55;
+  fra.me.line = 54;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:55 */
+  /* ./icode//icode_base.nit:54 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -178,7 +178,7 @@ void icode___icode_base___IRoutine___closure_decls__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_icode___icode_base;
-  fra.me.line = 55;
+  fra.me.line = 54;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___closure_decls__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -186,7 +186,7 @@ void icode___icode_base___IRoutine___closure_decls__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:55 */
+  /* ./icode//icode_base.nit:54 */
   ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -197,17 +197,17 @@ val_t icode___icode_base___IRoutine___registers(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 58;
+  fra.me.line = 57;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___registers;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:58 */
+  /* ./icode//icode_base.nit:57 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_base, 58);
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_base, 57);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -218,13 +218,13 @@ val_t icode___icode_base___IRoutine___result(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 61;
+  fra.me.line = 60;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:61 */
+  /* ./icode//icode_base.nit:60 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____result(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -235,17 +235,17 @@ val_t icode___icode_base___IRoutine___escape_marks(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 64;
+  fra.me.line = 63;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___escape_marks;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:64 */
+  /* ./icode//icode_base.nit:63 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_escape_marks", LOCATE_icode___icode_base, 64);
+    nit_abort("Uninitialized attribute %s", "_escape_marks", LOCATE_icode___icode_base, 63);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -257,17 +257,17 @@ val_t icode___icode_base___IRoutine___body(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 67;
+  fra.me.line = 66;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___body;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:67 */
+  /* ./icode//icode_base.nit:66 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 67);
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 66);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -278,13 +278,13 @@ val_t icode___icode_base___IRoutine___location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 70;
+  fra.me.line = 69;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:70 */
+  /* ./icode//icode_base.nit:69 */
   fra.me.REG[0] = ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -294,7 +294,7 @@ void icode___icode_base___IRoutine___location__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_icode___icode_base;
-  fra.me.line = 70;
+  fra.me.line = 69;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___location__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -302,7 +302,7 @@ void icode___icode_base___IRoutine___location__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:70 */
+  /* ./icode//icode_base.nit:69 */
   ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -314,7 +314,7 @@ void icode___icode_base___IRoutine___init(val_t p0, val_t p1, val_t p2, int* ini
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 73;
+  fra.me.line = 72;
   fra.me.meth = LOCATE_icode___icode_base___IRoutine___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -324,10 +324,10 @@ void icode___icode_base___IRoutine___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;
-  /* ./icode//icode_base.nit:75 */
+  /* ./icode//icode_base.nit:74 */
   fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_icode___icode_base___IRoutine____params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:76 */
+  /* ./icode//icode_base.nit:75 */
   ATTR_icode___icode_base___IRoutine____result(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -340,7 +340,7 @@ void icode___icode_base___IClosureDef___init(val_t p0, val_t p1, val_t p2, int*
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 83;
+  fra.me.line = 82;
   fra.me.meth = LOCATE_icode___icode_base___IClosureDef___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -350,7 +350,7 @@ void icode___icode_base___IClosureDef___init(val_t p0, val_t p1, val_t p2, int*
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:85 */
+  /* ./icode//icode_base.nit:84 */
   CALL_icode___icode_base___IRoutine___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -361,12 +361,12 @@ val_t icode___icode_base___ICode___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 93;
+  fra.me.line = 92;
   fra.me.meth = LOCATE_icode___icode_base___ICode___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:93 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 93);
+  /* ./icode//icode_base.nit:92 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 92);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -375,13 +375,13 @@ val_t icode___icode_base___ICode___result(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 96;
+  fra.me.line = 95;
   fra.me.meth = LOCATE_icode___icode_base___ICode___result;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICode____result(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -391,7 +391,7 @@ void icode___icode_base___ICode___result__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_icode___icode_base;
-  fra.me.line = 96;
+  fra.me.line = 95;
   fra.me.meth = LOCATE_icode___icode_base___ICode___result__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -399,7 +399,7 @@ void icode___icode_base___ICode___result__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -409,13 +409,13 @@ val_t icode___icode_base___ICode___location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 99;
+  fra.me.line = 98;
   fra.me.meth = LOCATE_icode___icode_base___ICode___location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICode____location(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -425,7 +425,7 @@ void icode___icode_base___ICode___location__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_icode___icode_base;
-  fra.me.line = 99;
+  fra.me.line = 98;
   fra.me.meth = LOCATE_icode___icode_base___ICode___location__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -433,7 +433,7 @@ void icode___icode_base___ICode___location__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -444,13 +444,13 @@ val_t icode___icode_base___ICode___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 102;
+  fra.me.line = 101;
   fra.me.meth = LOCATE_icode___icode_base___ICode___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:103 */
+  /* ./icode//icode_base.nit:102 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -478,13 +478,13 @@ val_t icode___icode_base___ICode0___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 109;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_icode___icode_base___ICode0___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:109 */
+  /* ./icode//icode_base.nit:108 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -497,13 +497,13 @@ val_t icode___icode_base___ICode1___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 115;
+  fra.me.line = 114;
   fra.me.meth = LOCATE_icode___icode_base___ICode1___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:115 */
+  /* ./icode//icode_base.nit:114 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -516,17 +516,17 @@ val_t icode___icode_base___ICode1___expr(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 117;
+  fra.me.line = 116;
   fra.me.meth = LOCATE_icode___icode_base___ICode1___expr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:117 */
+  /* ./icode//icode_base.nit:116 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_icode___icode_base, 117);
+    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_icode___icode_base, 116);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -539,7 +539,7 @@ void icode___icode_base___ICode1___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 120;
+  fra.me.line = 119;
   fra.me.meth = LOCATE_icode___icode_base___ICode1___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -548,7 +548,7 @@ void icode___icode_base___ICode1___init(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;
-  /* ./icode//icode_base.nit:120 */
+  /* ./icode//icode_base.nit:119 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   ATTR_icode___icode_base___ICode1____expr(fra.me.REG[2]) = fra.me.REG[1];
@@ -562,13 +562,13 @@ val_t icode___icode_base___ICode2___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 126;
+  fra.me.line = 125;
   fra.me.meth = LOCATE_icode___icode_base___ICode2___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:126 */
+  /* ./icode//icode_base.nit:125 */
   REGB0 = TAG_Int(2);
   goto label1;
   label1: while(0);
@@ -581,17 +581,17 @@ val_t icode___icode_base___ICode2___expr1(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 128;
+  fra.me.line = 127;
   fra.me.meth = LOCATE_icode___icode_base___ICode2___expr1;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:128 */
+  /* ./icode//icode_base.nit:127 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_icode___icode_base, 128);
+    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_icode___icode_base, 127);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -603,17 +603,17 @@ val_t icode___icode_base___ICode2___expr2(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 131;
+  fra.me.line = 130;
   fra.me.meth = LOCATE_icode___icode_base___ICode2___expr2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:131 */
+  /* ./icode//icode_base.nit:130 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_icode___icode_base, 131);
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_icode___icode_base, 130);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -626,7 +626,7 @@ void icode___icode_base___ICode2___init(val_t p0, val_t p1, val_t p2, int* init_
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 134;
+  fra.me.line = 133;
   fra.me.meth = LOCATE_icode___icode_base___ICode2___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -637,12 +637,12 @@ void icode___icode_base___ICode2___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:134 */
+  /* ./icode//icode_base.nit:133 */
   fra.me.REG[3] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./icode//icode_base.nit:136 */
+  /* ./icode//icode_base.nit:135 */
   ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[3]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:137 */
+  /* ./icode//icode_base.nit:136 */
   ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos7] = 1;
@@ -654,17 +654,17 @@ val_t icode___icode_base___ICodeN___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 144;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:144 */
+  /* ./icode//icode_base.nit:143 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_icode___icode_base, 144);
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_icode___icode_base, 143);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
@@ -679,17 +679,17 @@ val_t icode___icode_base___ICodeN___exprs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 146;
+  fra.me.line = 145;
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___exprs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:146 */
+  /* ./icode//icode_base.nit:145 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_icode___icode_base, 146);
+    nit_abort("Uninitialized attribute %s", "_exprs", LOCATE_icode___icode_base, 145);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -700,13 +700,13 @@ val_t icode___icode_base___ICodeN___closure_defs(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 149;
+  fra.me.line = 148;
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:149 */
+  /* ./icode//icode_base.nit:148 */
   fra.me.REG[0] = ATTR_icode___icode_base___ICodeN____closure_defs(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -716,7 +716,7 @@ void icode___icode_base___ICodeN___closure_defs__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_icode___icode_base;
-  fra.me.line = 149;
+  fra.me.line = 148;
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___closure_defs__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -724,7 +724,7 @@ void icode___icode_base___ICodeN___closure_defs__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:149 */
+  /* ./icode//icode_base.nit:148 */
   ATTR_icode___icode_base___ICodeN____closure_defs(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -738,7 +738,7 @@ void icode___icode_base___ICodeN___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 152;
+  fra.me.line = 151;
   fra.me.meth = LOCATE_icode___icode_base___ICodeN___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -747,10 +747,10 @@ void icode___icode_base___ICodeN___init(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;
-  /* ./icode//icode_base.nit:152 */
+  /* ./icode//icode_base.nit:151 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_icode___icode_base___ICode___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./icode//icode_base.nit:154 */
+  /* ./icode//icode_base.nit:153 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -764,11 +764,11 @@ void icode___icode_base___ICodeN___init(val_t p0, val_t p1, int* init_table){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_base.nit:155 */
+    /* ./icode//icode_base.nit:154 */
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
     ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[2]) = fra.me.REG[0];
   } else {
-    /* ./icode//icode_base.nit:157 */
+    /* ./icode//icode_base.nit:156 */
     ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[2]) = fra.me.REG[1];
   }
   stack_frame_head = fra.me.prev;
@@ -781,17 +781,17 @@ val_t icode___icode_base___ISeq___icodes(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 167;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_icode___icode_base___ISeq___icodes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:167 */
+  /* ./icode//icode_base.nit:166 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_icode___icode_base, 167);
+    nit_abort("Uninitialized attribute %s", "_icodes", LOCATE_icode___icode_base, 166);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -802,13 +802,13 @@ val_t icode___icode_base___ISeq___iescape_mark(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 170;
+  fra.me.line = 169;
   fra.me.meth = LOCATE_icode___icode_base___ISeq___iescape_mark;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:170 */
+  /* ./icode//icode_base.nit:169 */
   fra.me.REG[0] = ATTR_icode___icode_base___ISeq____iescape_mark(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -818,7 +818,7 @@ void icode___icode_base___ISeq___iescape_mark__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_icode___icode_base;
-  fra.me.line = 170;
+  fra.me.line = 169;
   fra.me.meth = LOCATE_icode___icode_base___ISeq___iescape_mark__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -826,7 +826,7 @@ void icode___icode_base___ISeq___iescape_mark__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:170 */
+  /* ./icode//icode_base.nit:169 */
   ATTR_icode___icode_base___ISeq____iescape_mark(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -838,7 +838,7 @@ void icode___icode_base___ISeq___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_icode___icode_base;
-  fra.me.line = 173;
+  fra.me.line = 172;
   fra.me.meth = LOCATE_icode___icode_base___ISeq___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -855,13 +855,13 @@ void icode___icode_base___ILoop___init(val_t p0, int* init_table){
   if (init_table[itpos10]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 180;
+  fra.me.line = 179;
   fra.me.meth = LOCATE_icode___icode_base___ILoop___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:180 */
+  /* ./icode//icode_base.nit:179 */
   CALL_icode___icode_base___ISeq___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos10] = 1;
@@ -873,17 +873,17 @@ val_t icode___icode_base___IIf___then_seq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 187;
+  fra.me.line = 186;
   fra.me.meth = LOCATE_icode___icode_base___IIf___then_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:187 */
+  /* ./icode//icode_base.nit:186 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_then_seq", LOCATE_icode___icode_base, 187);
+    nit_abort("Uninitialized attribute %s", "_then_seq", LOCATE_icode___icode_base, 186);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -895,17 +895,17 @@ val_t icode___icode_base___IIf___else_seq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 189;
+  fra.me.line = 188;
   fra.me.meth = LOCATE_icode___icode_base___IIf___else_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:189 */
+  /* ./icode//icode_base.nit:188 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_else_seq", LOCATE_icode___icode_base, 189);
+    nit_abort("Uninitialized attribute %s", "_else_seq", LOCATE_icode___icode_base, 188);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -918,7 +918,7 @@ void icode___icode_base___IIf___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos11]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 191;
+  fra.me.line = 190;
   fra.me.meth = LOCATE_icode___icode_base___IIf___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -926,7 +926,7 @@ void icode___icode_base___IIf___init(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;
-  /* ./icode//icode_base.nit:191 */
+  /* ./icode//icode_base.nit:190 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos11] = 1;
@@ -938,17 +938,17 @@ val_t icode___icode_base___IEscape___iescape_mark(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 197;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_icode___icode_base___IEscape___iescape_mark;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:197 */
+  /* ./icode//icode_base.nit:196 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_iescape_mark", LOCATE_icode___icode_base, 197);
+    nit_abort("Uninitialized attribute %s", "_iescape_mark", LOCATE_icode___icode_base, 196);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -961,7 +961,7 @@ void icode___icode_base___IEscape___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 200;
+  fra.me.line = 199;
   fra.me.meth = LOCATE_icode___icode_base___IEscape___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -969,7 +969,7 @@ void icode___icode_base___IEscape___init(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;
-  /* ./icode//icode_base.nit:200 */
+  /* ./icode//icode_base.nit:199 */
   ATTR_icode___icode_base___IEscape____iescape_mark(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos12] = 1;
@@ -981,17 +981,17 @@ val_t icode___icode_base___IAbort___texts(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 206;
+  fra.me.line = 205;
   fra.me.meth = LOCATE_icode___icode_base___IAbort___texts;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:206 */
+  /* ./icode//icode_base.nit:205 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbort____texts(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_texts", LOCATE_icode___icode_base, 206);
+    nit_abort("Uninitialized attribute %s", "_texts", LOCATE_icode___icode_base, 205);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAbort____texts(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1003,17 +1003,17 @@ val_t icode___icode_base___IAbort___module_location(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 209;
+  fra.me.line = 208;
   fra.me.meth = LOCATE_icode___icode_base___IAbort___module_location;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:209 */
+  /* ./icode//icode_base.nit:208 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbort____module_location(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_module_location", LOCATE_icode___icode_base, 209);
+    nit_abort("Uninitialized attribute %s", "_module_location", LOCATE_icode___icode_base, 208);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAbort____module_location(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1026,7 +1026,7 @@ void icode___icode_base___IAbort___init(val_t p0, val_t p1, val_t p2, int* init_
   if (init_table[itpos13]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 211;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_icode___icode_base___IAbort___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1036,9 +1036,9 @@ void icode___icode_base___IAbort___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:213 */
+  /* ./icode//icode_base.nit:212 */
   ATTR_icode___icode_base___IAbort____texts(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:214 */
+  /* ./icode//icode_base.nit:213 */
   ATTR_icode___icode_base___IAbort____module_location(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos13] = 1;
@@ -1050,22 +1050,62 @@ val_t icode___icode_base___IAbsCall___property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 223;
+  fra.me.line = 222;
   fra.me.meth = LOCATE_icode___icode_base___IAbsCall___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:223 */
+  /* ./icode//icode_base.nit:222 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 223);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 222);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAbsCall____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+val_t icode___icode_base___IAbsCall___is_explicit_from_extern(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_icode___icode_base;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./icode//icode_base.nit:225 */
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_icode___icode_base, 225);
+  }
+  REGB0 = ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void icode___icode_base___IAbsCall___is_explicit_from_extern__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me;} fra;
+  val_t REGB0;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_icode___icode_base;
+  fra.me.line = 225;
+  fra.me.meth = LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./icode//icode_base.nit:225 */
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+  return;
+}
 void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos14 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___IAbsCall].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1073,7 +1113,7 @@ void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* ini
   if (init_table[itpos14]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 226;
+  fra.me.line = 228;
   fra.me.meth = LOCATE_icode___icode_base___IAbsCall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1084,11 +1124,11 @@ void icode___icode_base___IAbsCall___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;
-  /* ./icode//icode_base.nit:226 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:228 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:230 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:229 */
+  /* ./icode//icode_base.nit:231 */
   ATTR_icode___icode_base___IAbsCall____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos14] = 1;
@@ -1101,7 +1141,7 @@ void icode___icode_base___ICall___init(val_t p0, val_t p1, val_t p2, int* init_t
   if (init_table[itpos15]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 237;
+  fra.me.line = 239;
   fra.me.meth = LOCATE_icode___icode_base___ICall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1111,7 +1151,7 @@ void icode___icode_base___ICall___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:237 */
+  /* ./icode//icode_base.nit:239 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos15] = 1;
@@ -1124,7 +1164,7 @@ void icode___icode_base___ISuper___init(val_t p0, val_t p1, val_t p2, int* init_
   if (init_table[itpos16]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 244;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_icode___icode_base___ISuper___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1134,7 +1174,7 @@ void icode___icode_base___ISuper___init(val_t p0, val_t p1, val_t p2, int* init_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:244 */
+  /* ./icode//icode_base.nit:246 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos16] = 1;
@@ -1146,17 +1186,17 @@ val_t icode___icode_base___INew___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 256;
+  fra.me.line = 258;
   fra.me.meth = LOCATE_icode___icode_base___INew___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:256 */
+  /* ./icode//icode_base.nit:258 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INew____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 256);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 258);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___INew____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1169,7 +1209,7 @@ void icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2, val_t p3, in
   if (init_table[itpos17]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 258;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_icode___icode_base___INew___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1182,11 +1222,11 @@ void icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2, val_t p3, in
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_base.nit:258 */
-  fra.me.REG[4] = fra.me.REG[0];
   /* ./icode//icode_base.nit:260 */
+  fra.me.REG[4] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:262 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3], init_table);
-  /* ./icode//icode_base.nit:261 */
+  /* ./icode//icode_base.nit:263 */
   ATTR_icode___icode_base___INew____stype(fra.me.REG[4]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos17] = 1;
@@ -1198,17 +1238,17 @@ val_t icode___icode_base___IAllocateInstance___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 270;
+  fra.me.line = 272;
   fra.me.meth = LOCATE_icode___icode_base___IAllocateInstance___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:270 */
+  /* ./icode//icode_base.nit:272 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 270);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 272);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1221,7 +1261,7 @@ void icode___icode_base___IAllocateInstance___init(val_t p0, val_t p1, int* init
   if (init_table[itpos18]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 272;
+  fra.me.line = 274;
   fra.me.meth = LOCATE_icode___icode_base___IAllocateInstance___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1229,7 +1269,7 @@ void icode___icode_base___IAllocateInstance___init(val_t p0, val_t p1, int* init
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:274 */
+  /* ./icode//icode_base.nit:276 */
   ATTR_icode___icode_base___IAllocateInstance____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos18] = 1;
@@ -1242,7 +1282,7 @@ void icode___icode_base___IStaticCall___init(val_t p0, val_t p1, val_t p2, int*
   if (init_table[itpos19]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 281;
+  fra.me.line = 283;
   fra.me.meth = LOCATE_icode___icode_base___IStaticCall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1252,7 +1292,7 @@ void icode___icode_base___IStaticCall___init(val_t p0, val_t p1, val_t p2, int*
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:281 */
+  /* ./icode//icode_base.nit:283 */
   CALL_icode___icode_base___IAbsCall___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos19] = 1;
@@ -1264,17 +1304,17 @@ val_t icode___icode_base___ICheckInstance___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 287;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_icode___icode_base___ICheckInstance___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:287 */
+  /* ./icode//icode_base.nit:289 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 287);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 289);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1287,7 +1327,7 @@ void icode___icode_base___ICheckInstance___init(val_t p0, val_t p1, val_t p2, in
   if (init_table[itpos20]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 289;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_icode___icode_base___ICheckInstance___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1298,11 +1338,11 @@ void icode___icode_base___ICheckInstance___init(val_t p0, val_t p1, val_t p2, in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:289 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:291 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:293 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:292 */
+  /* ./icode//icode_base.nit:294 */
   ATTR_icode___icode_base___ICheckInstance____stype(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos20] = 1;
@@ -1314,17 +1354,17 @@ val_t icode___icode_base___IInitAttributes___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 299;
+  fra.me.line = 301;
   fra.me.meth = LOCATE_icode___icode_base___IInitAttributes___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:299 */
+  /* ./icode//icode_base.nit:301 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 299);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 301);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1337,7 +1377,7 @@ void icode___icode_base___IInitAttributes___init(val_t p0, val_t p1, val_t p2, i
   if (init_table[itpos21]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 301;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_icode___icode_base___IInitAttributes___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1348,11 +1388,11 @@ void icode___icode_base___IInitAttributes___init(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;
-  /* ./icode//icode_base.nit:301 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:303 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:305 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:304 */
+  /* ./icode//icode_base.nit:306 */
   ATTR_icode___icode_base___IInitAttributes____stype(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos21] = 1;
@@ -1364,17 +1404,17 @@ val_t icode___icode_base___IClosCall___closure_decl(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 312;
+  fra.me.line = 314;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___closure_decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:312 */
+  /* ./icode//icode_base.nit:314 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 312);
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 314);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1385,13 +1425,13 @@ val_t icode___icode_base___IClosCall___break_seq(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 315;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___break_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:315 */
+  /* ./icode//icode_base.nit:317 */
   fra.me.REG[0] = ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1401,7 +1441,7 @@ void icode___icode_base___IClosCall___break_seq__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_icode___icode_base;
-  fra.me.line = 315;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___break_seq__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1409,7 +1449,7 @@ void icode___icode_base___IClosCall___break_seq__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:315 */
+  /* ./icode//icode_base.nit:317 */
   ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1421,7 +1461,7 @@ void icode___icode_base___IClosCall___init(val_t p0, val_t p1, val_t p2, int* in
   if (init_table[itpos22]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 318;
+  fra.me.line = 320;
   fra.me.meth = LOCATE_icode___icode_base___IClosCall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1432,11 +1472,11 @@ void icode___icode_base___IClosCall___init(val_t p0, val_t p1, val_t p2, int* in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:318 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:320 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:322 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:321 */
+  /* ./icode//icode_base.nit:323 */
   ATTR_icode___icode_base___IClosCall____closure_decl(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos22] = 1;
@@ -1448,17 +1488,17 @@ val_t icode___icode_base___INative___method(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 330;
+  fra.me.line = 332;
   fra.me.meth = LOCATE_icode___icode_base___INative___method;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:330 */
+  /* ./icode//icode_base.nit:332 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____method(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_method", LOCATE_icode___icode_base, 330);
+    nit_abort("Uninitialized attribute %s", "_method", LOCATE_icode___icode_base, 332);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___INative____method(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1474,7 +1514,7 @@ void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init
   if (init_table[itpos23]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 333;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_icode___icode_base___INative___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1486,39 +1526,39 @@ void icode___icode_base___INative___init(val_t p0, val_t p1, val_t p2, int* init
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:333 */
+  /* ./icode//icode_base.nit:335 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:336 */
+  /* ./icode//icode_base.nit:338 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 336);
+    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 338);
   }
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 336);
+    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_base, 338);
   }
   REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./icode//icode_base.nit:336 */
+  /* ./icode//icode_base.nit:338 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./icode//icode_base.nit:336 */
+    /* ./icode//icode_base.nit:338 */
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_base, 336);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_base, 338);
   }
-  /* ./icode//icode_base.nit:338 */
+  /* ./icode//icode_base.nit:340 */
   CALL_icode___icode_base___ICodeN___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:339 */
+  /* ./icode//icode_base.nit:341 */
   ATTR_icode___icode_base___INative____method(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos23] = 1;
@@ -1530,17 +1570,17 @@ val_t icode___icode_base___INative___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 342;
+  fra.me.line = 344;
   fra.me.meth = LOCATE_icode___icode_base___INative___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:342 */
+  /* ./icode//icode_base.nit:344 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_icode___icode_base, 342);
+    nit_abort("Uninitialized attribute %s", "_is_pure", LOCATE_icode___icode_base, 344);
   }
   REGB0 = ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1552,14 +1592,14 @@ void icode___icode_base___INative___is_pure__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_icode___icode_base;
-  fra.me.line = 342;
+  fra.me.line = 344;
   fra.me.meth = LOCATE_icode___icode_base___INative___is_pure__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./icode//icode_base.nit:342 */
+  /* ./icode//icode_base.nit:344 */
   ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -1570,17 +1610,17 @@ val_t icode___icode_base___IIntValue___value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 348;
+  fra.me.line = 350;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:348 */
+  /* ./icode//icode_base.nit:350 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 348);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 350);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1593,7 +1633,7 @@ void icode___icode_base___IIntValue___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos24]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 351;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1601,7 +1641,7 @@ void icode___icode_base___IIntValue___init(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;
-  /* ./icode//icode_base.nit:351 */
+  /* ./icode//icode_base.nit:353 */
   ATTR_icode___icode_base___IIntValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos24] = 1;
@@ -1613,13 +1653,13 @@ val_t icode___icode_base___IIntValue___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 353;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_icode___icode_base___IIntValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:353 */
+  /* ./icode//icode_base.nit:355 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1632,17 +1672,17 @@ val_t icode___icode_base___IBoolValue___value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 359;
+  fra.me.line = 361;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:359 */
+  /* ./icode//icode_base.nit:361 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 359);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 361);
   }
   REGB0 = ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1656,14 +1696,14 @@ void icode___icode_base___IBoolValue___init(val_t p0, val_t p1, int* init_table)
   if (init_table[itpos25]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 362;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./icode//icode_base.nit:362 */
+  /* ./icode//icode_base.nit:364 */
   ATTR_icode___icode_base___IBoolValue____value(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos25] = 1;
@@ -1675,13 +1715,13 @@ val_t icode___icode_base___IBoolValue___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 364;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_icode___icode_base___IBoolValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:364 */
+  /* ./icode//icode_base.nit:366 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1694,17 +1734,17 @@ val_t icode___icode_base___IStringValue___value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 370;
+  fra.me.line = 372;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:370 */
+  /* ./icode//icode_base.nit:372 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 370);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 372);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1717,7 +1757,7 @@ void icode___icode_base___IStringValue___init(val_t p0, val_t p1, int* init_tabl
   if (init_table[itpos26]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 373;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1725,7 +1765,7 @@ void icode___icode_base___IStringValue___init(val_t p0, val_t p1, int* init_tabl
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:373 */
+  /* ./icode//icode_base.nit:375 */
   ATTR_icode___icode_base___IStringValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos26] = 1;
@@ -1737,13 +1777,13 @@ val_t icode___icode_base___IStringValue___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 375;
+  fra.me.line = 377;
   fra.me.meth = LOCATE_icode___icode_base___IStringValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:375 */
+  /* ./icode//icode_base.nit:377 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1756,17 +1796,17 @@ val_t icode___icode_base___IFloatValue___value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 381;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:381 */
+  /* ./icode//icode_base.nit:383 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 381);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 383);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1779,7 +1819,7 @@ void icode___icode_base___IFloatValue___init(val_t p0, val_t p1, int* init_table
   if (init_table[itpos27]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 384;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1787,7 +1827,7 @@ void icode___icode_base___IFloatValue___init(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;
-  /* ./icode//icode_base.nit:384 */
+  /* ./icode//icode_base.nit:386 */
   ATTR_icode___icode_base___IFloatValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos27] = 1;
@@ -1799,13 +1839,13 @@ val_t icode___icode_base___IFloatValue___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 386;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_icode___icode_base___IFloatValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:386 */
+  /* ./icode//icode_base.nit:388 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1818,17 +1858,17 @@ val_t icode___icode_base___ICharValue___value(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 392;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:392 */
+  /* ./icode//icode_base.nit:394 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 392);
+    nit_abort("Uninitialized attribute %s", "_value", LOCATE_icode___icode_base, 394);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1841,7 +1881,7 @@ void icode___icode_base___ICharValue___init(val_t p0, val_t p1, int* init_table)
   if (init_table[itpos28]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 395;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1849,7 +1889,7 @@ void icode___icode_base___ICharValue___init(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;
-  /* ./icode//icode_base.nit:395 */
+  /* ./icode//icode_base.nit:397 */
   ATTR_icode___icode_base___ICharValue____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos28] = 1;
@@ -1861,13 +1901,13 @@ val_t icode___icode_base___ICharValue___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 397;
+  fra.me.line = 399;
   fra.me.meth = LOCATE_icode___icode_base___ICharValue___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:397 */
+  /* ./icode//icode_base.nit:399 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1881,7 +1921,7 @@ void icode___icode_base___IMove___init(val_t p0, val_t p1, val_t p2, int* init_t
   if (init_table[itpos29]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 405;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_icode___icode_base___IMove___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1892,11 +1932,11 @@ void icode___icode_base___IMove___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:405 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:407 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:409 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:408 */
+  /* ./icode//icode_base.nit:410 */
   ATTR_icode___icode_base___ICode____result(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos29] = 1;
@@ -1908,13 +1948,13 @@ val_t icode___icode_base___IMove___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 411;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_icode___icode_base___IMove___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:411 */
+  /* ./icode//icode_base.nit:413 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1927,17 +1967,17 @@ val_t icode___icode_base___IAttrRead___property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 418;
+  fra.me.line = 420;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:418 */
+  /* ./icode//icode_base.nit:420 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 418);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 420);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1950,7 +1990,7 @@ void icode___icode_base___IAttrRead___init(val_t p0, val_t p1, val_t p2, int* in
   if (init_table[itpos30]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 421;
+  fra.me.line = 423;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1961,11 +2001,11 @@ void icode___icode_base___IAttrRead___init(val_t p0, val_t p1, val_t p2, int* in
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:421 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:423 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:425 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:424 */
+  /* ./icode//icode_base.nit:426 */
   ATTR_icode___icode_base___IAttrRead____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos30] = 1;
@@ -1977,13 +2017,13 @@ val_t icode___icode_base___IAttrRead___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 427;
+  fra.me.line = 429;
   fra.me.meth = LOCATE_icode___icode_base___IAttrRead___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:427 */
+  /* ./icode//icode_base.nit:429 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -1996,17 +2036,17 @@ val_t icode___icode_base___IAttrWrite___property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 434;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_icode___icode_base___IAttrWrite___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:434 */
+  /* ./icode//icode_base.nit:436 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 434);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 436);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2019,7 +2059,7 @@ void icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2, val_t
   if (init_table[itpos31]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 437;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_icode___icode_base___IAttrWrite___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2032,11 +2072,11 @@ void icode___icode_base___IAttrWrite___init(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_base.nit:437 */
-  fra.me.REG[4] = fra.me.REG[0];
   /* ./icode//icode_base.nit:439 */
+  fra.me.REG[4] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:441 */
   CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3], init_table);
-  /* ./icode//icode_base.nit:440 */
+  /* ./icode//icode_base.nit:442 */
   ATTR_icode___icode_base___IAttrWrite____property(fra.me.REG[4]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos31] = 1;
@@ -2048,17 +2088,17 @@ val_t icode___icode_base___IAttrIsset___property(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 449;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:449 */
+  /* ./icode//icode_base.nit:451 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 449);
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_icode___icode_base, 451);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2071,7 +2111,7 @@ void icode___icode_base___IAttrIsset___init(val_t p0, val_t p1, val_t p2, int* i
   if (init_table[itpos32]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 452;
+  fra.me.line = 454;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2082,11 +2122,11 @@ void icode___icode_base___IAttrIsset___init(val_t p0, val_t p1, val_t p2, int* i
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:452 */
-  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_base.nit:454 */
+  fra.me.REG[3] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:456 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], init_table);
-  /* ./icode//icode_base.nit:455 */
+  /* ./icode//icode_base.nit:457 */
   ATTR_icode___icode_base___IAttrIsset____property(fra.me.REG[3]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos32] = 1;
@@ -2098,13 +2138,13 @@ val_t icode___icode_base___IAttrIsset___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 458;
+  fra.me.line = 460;
   fra.me.meth = LOCATE_icode___icode_base___IAttrIsset___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:458 */
+  /* ./icode//icode_base.nit:460 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2117,46 +2157,48 @@ val_t icode___icode_base___ITypeCheck___stype(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 465;
+  fra.me.line = 468;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:465 */
+  /* ./icode//icode_base.nit:468 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 465);
+    nit_abort("Uninitialized attribute %s", "_stype", LOCATE_icode___icode_base, 468);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, int* init_table){
+void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos33 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_icode___icode_base___ITypeCheck].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t tmp;
   if (init_table[itpos33]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 468;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:468 */
-  fra.me.REG[3] = fra.me.REG[0];
-  /* ./icode//icode_base.nit:470 */
-  CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
+  fra.me.REG[3] = p3;
   /* ./icode//icode_base.nit:471 */
-  ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[3]) = fra.me.REG[2];
+  fra.me.REG[4] = fra.me.REG[0];
+  /* ./icode//icode_base.nit:473 */
+  CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  /* ./icode//icode_base.nit:474 */
+  ATTR_icode___icode_base___ITypeCheck____stype(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos33] = 1;
   return;
@@ -2167,13 +2209,13 @@ val_t icode___icode_base___ITypeCheck___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 474;
+  fra.me.line = 477;
   fra.me.meth = LOCATE_icode___icode_base___ITypeCheck___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:474 */
+  /* ./icode//icode_base.nit:477 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2187,7 +2229,7 @@ void icode___icode_base___IIs___init(val_t p0, val_t p1, val_t p2, int* init_tab
   if (init_table[itpos34]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 481;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_icode___icode_base___IIs___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2197,7 +2239,7 @@ void icode___icode_base___IIs___init(val_t p0, val_t p1, val_t p2, int* init_tab
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:483 */
+  /* ./icode//icode_base.nit:486 */
   CALL_icode___icode_base___ICode2___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos34] = 1;
@@ -2209,13 +2251,13 @@ val_t icode___icode_base___IIs___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 486;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_icode___icode_base___IIs___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:486 */
+  /* ./icode//icode_base.nit:489 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2229,7 +2271,7 @@ void icode___icode_base___INot___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos35]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 493;
+  fra.me.line = 496;
   fra.me.meth = LOCATE_icode___icode_base___INot___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2237,7 +2279,7 @@ void icode___icode_base___INot___init(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;
-  /* ./icode//icode_base.nit:495 */
+  /* ./icode//icode_base.nit:498 */
   CALL_icode___icode_base___ICode1___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos35] = 1;
@@ -2249,13 +2291,13 @@ val_t icode___icode_base___INot___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 498;
+  fra.me.line = 501;
   fra.me.meth = LOCATE_icode___icode_base___INot___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:498 */
+  /* ./icode//icode_base.nit:501 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2268,17 +2310,17 @@ val_t icode___icode_base___IOnce___body(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 505;
+  fra.me.line = 508;
   fra.me.meth = LOCATE_icode___icode_base___IOnce___body;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:505 */
+  /* ./icode//icode_base.nit:508 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IOnce____body(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 505);
+    nit_abort("Uninitialized attribute %s", "_body", LOCATE_icode___icode_base, 508);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IOnce____body(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2291,7 +2333,7 @@ void icode___icode_base___IOnce___init(val_t p0, int* init_table){
   if (init_table[itpos36]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 506;
+  fra.me.line = 509;
   fra.me.meth = LOCATE_icode___icode_base___IOnce___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2307,17 +2349,17 @@ val_t icode___icode_base___IHasClos___closure_decl(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 512;
+  fra.me.line = 515;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___closure_decl;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:512 */
+  /* ./icode//icode_base.nit:515 */
   REGB0 = TAG_Bool(ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 512);
+    nit_abort("Uninitialized attribute %s", "_closure_decl", LOCATE_icode___icode_base, 515);
   }
   fra.me.REG[0] = ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2330,7 +2372,7 @@ void icode___icode_base___IHasClos___init(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos37]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 515;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2338,7 +2380,7 @@ void icode___icode_base___IHasClos___init(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;
-  /* ./icode//icode_base.nit:517 */
+  /* ./icode//icode_base.nit:520 */
   ATTR_icode___icode_base___IHasClos____closure_decl(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos37] = 1;
@@ -2350,13 +2392,13 @@ val_t icode___icode_base___IHasClos___is_pure(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 520;
+  fra.me.line = 523;
   fra.me.meth = LOCATE_icode___icode_base___IHasClos___is_pure;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:520 */
+  /* ./icode//icode_base.nit:523 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -2368,12 +2410,12 @@ val_t icode___icode_base___MMAttribute___iroutine(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 526;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_icode___icode_base___MMAttribute___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:526 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 526);
+  /* ./icode//icode_base.nit:529 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 529);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2382,12 +2424,12 @@ val_t icode___icode_base___MMMethod___iroutine(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_base;
-  fra.me.line = 532;
+  fra.me.line = 535;
   fra.me.meth = LOCATE_icode___icode_base___MMMethod___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_base.nit:532 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 532);
+  /* ./icode//icode_base.nit:535 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_base, 535);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
index 0b770a5..d3b90f3 100644 (file)
@@ -1,7 +1,7 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/icode/icode_base. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./icode/icode_base. */
 #ifndef icode___icode_base_sep
 #define icode___icode_base_sep
-#include "mmloader._sep.h"
+#include "metamodel._sep.h"
 #include <nit_common.h>
 
 extern const classtable_elt_t VFT_icode___icode_base___IRegister[];
@@ -202,9 +202,12 @@ extern const int SFT_icode___icode_base[];
 #define ID_icode___icode_base___IAbsCall (SFT_icode___icode_base[56])
 #define COLOR_icode___icode_base___IAbsCall (SFT_icode___icode_base[57])
 #define ATTR_icode___icode_base___IAbsCall____property(recv) ATTR(recv, (SFT_icode___icode_base[58] + 0))
+#define ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(recv) ATTR(recv, (SFT_icode___icode_base[58] + 1))
 #define INIT_TABLE_POS_icode___icode_base___IAbsCall (SFT_icode___icode_base[59] + 0)
 #define CALL_icode___icode_base___IAbsCall___property(recv) ((icode___icode_base___IAbsCall___property_t)CALL((recv), (SFT_icode___icode_base[59] + 1)))
-#define CALL_icode___icode_base___IAbsCall___init(recv) ((icode___icode_base___IAbsCall___init_t)CALL((recv), (SFT_icode___icode_base[59] + 2)))
+#define CALL_icode___icode_base___IAbsCall___is_explicit_from_extern(recv) ((icode___icode_base___IAbsCall___is_explicit_from_extern_t)CALL((recv), (SFT_icode___icode_base[59] + 2)))
+#define CALL_icode___icode_base___IAbsCall___is_explicit_from_extern__eq(recv) ((icode___icode_base___IAbsCall___is_explicit_from_extern__eq_t)CALL((recv), (SFT_icode___icode_base[59] + 3)))
+#define CALL_icode___icode_base___IAbsCall___init(recv) ((icode___icode_base___IAbsCall___init_t)CALL((recv), (SFT_icode___icode_base[59] + 4)))
 #define ID_icode___icode_base___ICall (SFT_icode___icode_base[60])
 #define COLOR_icode___icode_base___ICall (SFT_icode___icode_base[61])
 #define INIT_TABLE_POS_icode___icode_base___ICall (SFT_icode___icode_base[62] + 0)
@@ -509,6 +512,12 @@ val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1);
 static const char * const LOCATE_icode___icode_base___IAbsCall___property = "icode_base::IAbsCall::property";
 val_t icode___icode_base___IAbsCall___property(val_t p0);
 typedef val_t (*icode___icode_base___IAbsCall___property_t)(val_t p0);
+static const char * const LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern = "icode_base::IAbsCall::is_explicit_from_extern";
+val_t icode___icode_base___IAbsCall___is_explicit_from_extern(val_t p0);
+typedef val_t (*icode___icode_base___IAbsCall___is_explicit_from_extern_t)(val_t p0);
+static const char * const LOCATE_icode___icode_base___IAbsCall___is_explicit_from_extern__eq = "icode_base::IAbsCall::is_explicit_from_extern=";
+void icode___icode_base___IAbsCall___is_explicit_from_extern__eq(val_t p0, val_t p1);
+typedef void (*icode___icode_base___IAbsCall___is_explicit_from_extern__eq_t)(val_t p0, val_t p1);
 static const char * const LOCATE_icode___icode_base___IAbsCall___init = "icode_base::IAbsCall::init";
 void icode___icode_base___IAbsCall___init(val_t p0, val_t p1, val_t p2, int* init_table);
 typedef void (*icode___icode_base___IAbsCall___init_t)(val_t p0, val_t p1, val_t p2, int* init_table);
@@ -667,9 +676,9 @@ static const char * const LOCATE_icode___icode_base___ITypeCheck___stype = "icod
 val_t icode___icode_base___ITypeCheck___stype(val_t p0);
 typedef val_t (*icode___icode_base___ITypeCheck___stype_t)(val_t p0);
 static const char * const LOCATE_icode___icode_base___ITypeCheck___init = "icode_base::ITypeCheck::init";
-void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, int* init_table);
-typedef void (*icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1, val_t p2, int* init_table);
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1);
+void icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
+typedef void (*icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_icode___icode_base___ITypeCheck___is_pure = "icode_base::ITypeCheck::(icode_base::ICode::is_pure)";
 val_t icode___icode_base___ITypeCheck___is_pure(val_t p0);
 typedef val_t (*icode___icode_base___ITypeCheck___is_pure_t)(val_t p0);
index 5bb85c9..a7331ad 100644 (file)
@@ -169,7 +169,10 @@ void icode___icode_builder___ICodeBuilder___add_type_cast(val_t p0, val_t p1, va
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./icode//icode_builder.nit:64 */
-  fra.me.REG[2] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[2] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
@@ -270,7 +273,7 @@ void icode___icode_builder___ICodeBuilder___add_attr_check(val_t p0, val_t p1, v
   return;
 }
 val_t icode___icode_builder___ICodeBuilder___add_attr_read(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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;
@@ -278,15 +281,18 @@ val_t icode___icode_builder___ICodeBuilder___add_attr_read(val_t p0, val_t p1, v
   fra.me.line = 87;
   fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_attr_read;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./icode//icode_builder.nit:87 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./icode//icode_builder.nit:90 */
-  CALL_icode___icode_builder___ICodeBuilder___add_attr_check(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  CALL_icode___icode_builder___ICodeBuilder___add_attr_check(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   /* ./icode//icode_builder.nit:91 */
   fra.me.REG[2] = NEW_IAttrRead_icode___icode_base___IAttrRead___init(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
@@ -300,7 +306,7 @@ val_t icode___icode_builder___ICodeBuilder___add_attr_read(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 91);
   }
-  fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
+  fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[1]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -322,20 +328,21 @@ void icode___icode_builder___ICodeBuilder___add_abort(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./icode//icode_builder.nit:94 */
+  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[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 94);
   }
   /* ./icode//icode_builder.nit:97 */
-  fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = NEW_IAbort_icode___icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[2]);
-  CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = NEW_IAbort_icode___icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[0]);
+  CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
 void icode___icode_builder___ICodeBuilder___add_return_value(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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;
@@ -343,21 +350,24 @@ void icode___icode_builder___ICodeBuilder___add_return_value(val_t p0, val_t p1)
   fra.me.line = 100;
   fra.me.meth = LOCATE_icode___icode_builder___ICodeBuilder___add_return_value;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./icode//icode_builder.nit:100 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./icode//icode_builder.nit:104 */
-  fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 104);
   }
-  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[1]);
+  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -392,216 +402,248 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./icode//icode_builder.nit:107 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./icode//icode_builder.nit:110 */
   if (!once_value_1) {
     if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString("==");
+      fra.me.REG[5] = BOX_NativeString("==");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-    once_value_1 = fra.me.REG[4];
+    } else fra.me.REG[5] = once_value_2;
+    fra.me.REG[5] = fra.me.REG[5];
+    fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
+    once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
-  } else fra.me.REG[4] = once_value_1;
-  fra.me.REG[4] = fra.me.REG[4];
+  } else fra.me.REG[5] = once_value_1;
+  fra.me.REG[5] = fra.me.REG[5];
   /* ./icode//icode_builder.nit:113 */
   if (!once_value_3) {
     if (!once_value_4) {
-      fra.me.REG[5] = BOX_NativeString("!=");
+      fra.me.REG[6] = BOX_NativeString("!=");
       REGB0 = TAG_Int(2);
-      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
-      once_value_4 = fra.me.REG[5];
+      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
+      once_value_4 = fra.me.REG[6];
       register_static_object(&once_value_4);
-    } else fra.me.REG[5] = once_value_4;
-    fra.me.REG[5] = fra.me.REG[5];
-    fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
-    once_value_3 = fra.me.REG[5];
+    } else fra.me.REG[6] = once_value_4;
+    fra.me.REG[6] = fra.me.REG[6];
+    fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+    once_value_3 = fra.me.REG[6];
     register_static_object(&once_value_3);
-  } else fra.me.REG[5] = once_value_3;
-  fra.me.REG[5] = fra.me.REG[5];
+  } else fra.me.REG[6] = once_value_3;
+  fra.me.REG[6] = fra.me.REG[6];
   /* ./icode//icode_builder.nit:114 */
-  fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[6],fra.me.REG[5]));
+  fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[7],fra.me.REG[6]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./icode//icode_builder.nit:115 */
-    fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 115);
     }
-    fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[5])(fra.me.REG[5]);
-    fra.me.REG[5] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[5])(fra.me.REG[5]);
-    fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+    fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___select_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
     /* ./icode//icode_builder.nit:116 */
-    fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], fra.me.REG[3]);
-    REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[2], fra.me.REG[3]);
+    REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_icode___icode_builder, 116);
     }
     /* ./icode//icode_builder.nit:117 */
-    fra.me.REG[5] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[5]);
-    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[6] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[6])(fra.me.REG[6]);
-    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[6]);
+    fra.me.REG[6] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[6]);
+    fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[0] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[0]);
     goto label5;
   }
   /* ./icode//icode_builder.nit:122 */
-  fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[1], fra.me.REG[2]);
   /* ./icode//icode_builder.nit:123 */
-  CALL_icode___icode_base___ICodeN___closure_defs__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  CALL_icode___icode_base___ICodeN___closure_defs__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
   /* ./icode//icode_builder.nit:124 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[5]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./icode//icode_builder.nit:126 */
-    fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[4] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+    fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[5] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[5])(fra.me.REG[5]);
+    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:243 */
+    /* ./../lib/standard//collection//array.nit:278 */
     fra.me.REG[3] = fra.me.REG[2];
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label6;
     label6: while(0);
     /* ./icode//icode_builder.nit:128 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//collection//array.nit:243 */
+    /* ./../lib/standard//collection//array.nit:278 */
     fra.me.REG[7] = fra.me.REG[2];
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label7;
     label7: while(0);
     /* ./icode//icode_builder.nit:128 */
     fra.me.REG[7] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[3], fra.me.REG[7]);
-    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[3] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7], fra.me.REG[3]);
+    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7], fra.me.REG[3]);
     /* ./icode//icode_builder.nit:129 */
     fra.me.REG[7] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
     /* ./icode//icode_builder.nit:130 */
-    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
+    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     /* ./icode//icode_builder.nit:131 */
-    fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[4])(fra.me.REG[4]);
     /* ./icode//icode_builder.nit:132 */
     fra.me.REG[9] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9]);
+    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
     /* ./icode//icode_builder.nit:133 */
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
     /* ./icode//icode_builder.nit:135 */
     fra.me.REG[9] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9]);
+    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:243 */
+    /* ./../lib/standard//collection//array.nit:278 */
     fra.me.REG[9] = fra.me.REG[2];
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label8;
     label8: while(0);
     /* ./icode//icode_builder.nit:137 */
@@ -613,88 +655,98 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[9])(fra.me.REG[9]);
     if (UNTAG_Bool(REGB0)) {
       /* ./icode//icode_builder.nit:138 */
-      fra.me.REG[9] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[0])(fra.me.REG[0]);
+      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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[10] = fra.me.REG[2];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[10]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[10] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label9;
       label9: while(0);
       /* ./icode//icode_builder.nit:139 */
       fra.me.REG[9] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[10], fra.me.REG[9]);
-      fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
       fra.me.REG[10] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[10])(fra.me.REG[10]);
-      fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[9], fra.me.REG[10]);
+      fra.me.REG[10] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9], fra.me.REG[10]);
       fra.me.REG[3] = fra.me.REG[10];
       /* ./icode//icode_builder.nit:140 */
       fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
       fra.me.REG[7] = fra.me.REG[3];
       /* ./icode//icode_builder.nit:141 */
-      CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
+      CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
       /* ./icode//icode_builder.nit:142 */
       fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[7])(fra.me.REG[7]);
-      CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+      CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       /* ./icode//icode_builder.nit:143 */
-      fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[4])(fra.me.REG[4]);
+      CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[3]);
       /* ./icode//icode_builder.nit:144 */
       fra.me.REG[7] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[7])(fra.me.REG[7]);
-      CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
+      CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     }
     /* ./icode//icode_builder.nit:147 */
-    fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[7] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[7])(fra.me.REG[7]);
-    fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[7]);
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[7]);
+    fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[7]);
+    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5], fra.me.REG[7]);
     /* ./icode//icode_builder.nit:148 */
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
+    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
     /* ./icode//icode_builder.nit:149 */
-    fra.me.REG[6] = fra.me.REG[4];
+    fra.me.REG[0] = fra.me.REG[5];
     goto label5;
   }
   /* ./icode//icode_builder.nit:152 */
-  fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 152);
   }
-  fra.me.REG[4] = CALL_icode___icode_base___IRegister___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]);
+  fra.me.REG[5] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[5])(fra.me.REG[5]);
+  REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[5])(fra.me.REG[5]);
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+    CALL_icode___icode_builder___ICodeBuilder___add_null_reciever_check(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   }
   /* ./icode//icode_builder.nit:153 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[1])(fra.me.REG[1]);
@@ -719,19 +771,19 @@ val_t icode___icode_builder___ICodeBuilder___add_call(val_t p0, val_t p1, val_t
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./icode//icode_builder.nit:155 */
-    fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[1]);
-    fra.me.REG[6] = fra.me.REG[1];
+    fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6], fra.me.REG[1]);
+    fra.me.REG[0] = fra.me.REG[1];
     goto label5;
   } else {
     /* ./icode//icode_builder.nit:157 */
-    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
+    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
     /* ./icode//icode_builder.nit:158 */
-    fra.me.REG[6] = NIT_NULL;
+    fra.me.REG[0] = NIT_NULL;
     goto label5;
   }
   label5: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[6];
+  return fra.me.REG[0];
 }
 void icode___icode_builder___ICodeBuilder___add_escape(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1030,22 +1082,26 @@ void icode___icode_builder___ICodeBuilder___current_location__eq(val_t p0, val_t
   return;
 }
 val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} 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_icode___icode_builder;
   fra.me.line = 225;
   fra.me.meth = LOCATE_icode___icode_builder___MMSignature___generate_empty_iroutine;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./icode//icode_builder.nit:228 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
@@ -1056,11 +1112,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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./icode//icode_builder.nit:230 */
       REGB2 = REGB0;
@@ -1068,14 +1129,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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label1;
     }
   }
@@ -1106,73 +1167,168 @@ val_t icode___icode_builder___MMSignature___generate_empty_iroutine(val_t p0){
   /* ./icode//icode_builder.nit:238 */
   fra.me.REG[2] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[1], fra.me.REG[2]);
   /* ./icode//icode_builder.nit:239 */
-  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   /* ./icode//icode_builder.nit:240 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(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)) {
     /* ./icode//icode_builder.nit:241 */
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-    fra.me.REG[1] = fra.me.REG[3];
+    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+    fra.me.REG[3] = fra.me.REG[4];
     /* ./icode//icode_builder.nit:242 */
-    fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    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:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:273 */
+        REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* ./icode//icode_builder.nit:243 */
-        fra.me.REG[4] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[4]);
-        REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+        fra.me.REG[6] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[6]);
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 243);
         }
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:239 */
+        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 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
     label2: while(0);
     /* ./icode//icode_builder.nit:245 */
-    CALL_icode___icode_base___IRoutine___closure_decls__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    CALL_icode___icode_base___IRoutine___closure_decls__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./icode//icode_builder.nit:247 */
-  goto label3;
-  label3: while(0);
+  /* ./icode//icode_builder.nit:248 */
+  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[3], fra.me.REG[2]);
+  /* ./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:352 */
+  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:232 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//kernel.nit:352 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./icode//icode_builder.nit:249 */
+      REGB2 = REGB0;
+      /* ./icode//icode_builder.nit:250 */
+      fra.me.REG[5] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
+      /* ./icode//icode_builder.nit:251 */
+      REGB3 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___virtualtype___MMVirtualType, ID_metamodel___virtualtype___MMVirtualType)) /*cast MMVirtualType*/;
+      if (UNTAG_Bool(REGB3)) {
+        /* ./icode//icode_builder.nit:252 */
+        REGB3 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:235 */
+        REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
+        /* ./../lib/standard//collection//array.nit:278 */
+        fra.me.REG[4] = fra.me.REG[1];
+        /* ./../lib/standard//collection//array.nit:280 */
+        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:233 */
+        REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
+        /* ./../lib/standard//collection//array.nit:280 */
+        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);
+          }
+          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*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:232 */
+          REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
+        } else {
+          /* ./../lib/standard//collection//array.nit:280 */
+          REGB4 = TAG_Bool(false);
+          REGB2 = REGB4;
+        }
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
+        }
+        /* ./../lib/standard//collection//array.nit:281 */
+        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
+        REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+        }
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
+        /* ./../lib/standard//collection//array.nit:281 */
+        goto label3;
+        label3: while(0);
+        /* ./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:354 */
+      REGB3 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
+      /* ./../lib/standard//kernel.nit:354 */
+      REGB0 = REGB3;
+    } else {
+      /* ./../lib/standard//kernel.nit:352 */
+      goto label4;
+    }
+  }
+  label4: while(0);
+  /* ./icode//icode_builder.nit:255 */
+  goto label5;
+  label5: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
@@ -1184,7 +1340,7 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_builder;
-  fra.me.line = 250;
+  fra.me.line = 258;
   fra.me.meth = LOCATE_icode___icode_builder___MMSignature___generate_empty_iclosuredef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1195,40 +1351,45 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_builder.nit:253 */
+  /* ./icode//icode_builder.nit:261 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./icode//icode_builder.nit:254 */
+  /* ./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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./icode//icode_builder.nit:254 */
+      /* ./icode//icode_builder.nit:262 */
       REGB2 = REGB0;
-      /* ./icode//icode_builder.nit:255 */
+      /* ./icode//icode_builder.nit:263 */
       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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./icode//icode_builder.nit:257 */
+  /* ./icode//icode_builder.nit:265 */
   fra.me.REG[3] = NIT_NULL;
-  /* ./icode//icode_builder.nit:258 */
+  /* ./icode//icode_builder.nit:266 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./icode//icode_builder.nit:259 */
+  /* ./icode//icode_builder.nit:267 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1243,78 +1404,83 @@ val_t icode___icode_builder___MMSignature___generate_empty_iclosuredef(val_t p0,
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_builder.nit:260 */
+    /* ./icode//icode_builder.nit:268 */
     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[3] = fra.me.REG[4];
   }
-  /* ./icode//icode_builder.nit:262 */
+  /* ./icode//icode_builder.nit:270 */
   fra.me.REG[3] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[3]);
-  /* ./icode//icode_builder.nit:263 */
+  /* ./icode//icode_builder.nit:271 */
   fra.me.REG[2] = NIT_NULL;
-  /* ./icode//icode_builder.nit:264 */
+  /* ./icode//icode_builder.nit:272 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(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)) {
-    /* ./icode//icode_builder.nit:265 */
+    /* ./icode//icode_builder.nit:273 */
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[2] = fra.me.REG[4];
-    /* ./icode//icode_builder.nit:266 */
+    /* ./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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../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, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-        /* ./icode//icode_builder.nit:267 */
+        /* ./icode//icode_builder.nit:275 */
         fra.me.REG[1] = NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(fra.me.REG[1]);
         REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_builder, 267);
+          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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
     label2: while(0);
-    /* ./icode//icode_builder.nit:269 */
+    /* ./icode//icode_builder.nit:277 */
     CALL_icode___icode_base___IRoutine___closure_decls__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   }
-  /* ./icode//icode_builder.nit:271 */
+  /* ./icode//icode_builder.nit:280 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
index a44a815..d820cde 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/icode/icode_builder. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./icode/icode_builder. */
 #ifndef icode___icode_builder_sep
 #define icode___icode_builder_sep
 #include "icode___icode_base._sep.h"
index 5a1af50..8e86916 100644 (file)
@@ -5,7 +5,7 @@ void icode___icode_tools___ICodeVisitor___visit_iregister_read(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 22;
+  fra.me.line = 23;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___visit_iregister_read;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -23,7 +23,7 @@ void icode___icode_tools___ICodeVisitor___visit_iregister_write(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 25;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___visit_iregister_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -41,13 +41,13 @@ val_t icode___icode_tools___ICodeVisitor___current_icode(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 28;
+  fra.me.line = 29;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___current_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[0] = ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -59,7 +59,7 @@ void icode___icode_tools___ICodeVisitor___visit_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_icode___icode_tools;
-  fra.me.line = 32;
+  fra.me.line = 33;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___visit_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -70,7 +70,7 @@ void icode___icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:36 */
+  /* ./icode//icode_tools.nit:37 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -86,132 +86,132 @@ void icode___icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./icode//icode_tools.nit:37 */
+  /* ./icode//icode_tools.nit:38 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ISeq, ID_icode___icode_base___ISeq)) /*cast ISeq*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:38 */
-    fra.me.REG[2] = ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
     /* ./icode//icode_tools.nit:39 */
+    fra.me.REG[2] = ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]);
+    /* ./icode//icode_tools.nit:40 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 39);
+      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 40);
     }
     fra.me.REG[3] = CALL_icode___icode_base___ISeq___icodes(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./icode//icode_tools.nit:40 */
+    /* ./icode//icode_tools.nit:41 */
     while(1) {
       REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[3])(fra.me.REG[3]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./icode//icode_tools.nit:41 */
-        ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[3];
         /* ./icode//icode_tools.nit:42 */
-        fra.me.REG[4] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
+        ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[3];
         /* ./icode//icode_tools.nit:43 */
-        CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+        fra.me.REG[4] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[3])(fra.me.REG[3]);
         /* ./icode//icode_tools.nit:44 */
+        CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+        /* ./icode//icode_tools.nit:45 */
         CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[3])(fra.me.REG[3]);
       } else {
-        /* ./icode//icode_tools.nit:40 */
+        /* ./icode//icode_tools.nit:41 */
         goto label2;
       }
     }
     label2: while(0);
-    /* ./icode//icode_tools.nit:46 */
+    /* ./icode//icode_tools.nit:47 */
     ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[2];
   } else {
-    /* ./icode//icode_tools.nit:47 */
+    /* ./icode//icode_tools.nit:48 */
     REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IIf, ID_icode___icode_base___IIf)) /*cast IIf*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:48 */
+      /* ./icode//icode_tools.nit:49 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 48);
+        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 49);
       }
       fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
       CALL_icode___icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-      /* ./icode//icode_tools.nit:49 */
+      /* ./icode//icode_tools.nit:50 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 49);
+        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 50);
       }
       fra.me.REG[2] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[1])(fra.me.REG[1]);
       CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-      /* ./icode//icode_tools.nit:50 */
+      /* ./icode//icode_tools.nit:51 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 50);
+        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 51);
       }
       fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[1])(fra.me.REG[1]);
       CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     } else {
-      /* ./icode//icode_tools.nit:51 */
+      /* ./icode//icode_tools.nit:52 */
       REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IOnce, ID_icode___icode_base___IOnce)) /*cast IOnce*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./icode//icode_tools.nit:52 */
+        /* ./icode//icode_tools.nit:53 */
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 52);
+          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 53);
         }
         fra.me.REG[2] = CALL_icode___icode_base___IOnce___body(fra.me.REG[1])(fra.me.REG[1]);
         CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
       } else {
-        /* ./icode//icode_tools.nit:53 */
+        /* ./icode//icode_tools.nit:54 */
         REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICode1, ID_icode___icode_base___ICode1)) /*cast ICode1*/;
         if (UNTAG_Bool(REGB0)) {
-          /* ./icode//icode_tools.nit:54 */
+          /* ./icode//icode_tools.nit:55 */
           REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 54);
+            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 55);
           }
           fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[1])(fra.me.REG[1]);
           CALL_icode___icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
         } else {
-          /* ./icode//icode_tools.nit:55 */
+          /* ./icode//icode_tools.nit:56 */
           REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICode2, ID_icode___icode_base___ICode2)) /*cast ICode2*/;
           if (UNTAG_Bool(REGB0)) {
-            /* ./icode//icode_tools.nit:56 */
+            /* ./icode//icode_tools.nit:57 */
             REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 56);
+              nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 57);
             }
             fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[1])(fra.me.REG[1]);
             CALL_icode___icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-            /* ./icode//icode_tools.nit:57 */
+            /* ./icode//icode_tools.nit:58 */
             REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 57);
+              nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 58);
             }
             fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[1])(fra.me.REG[1]);
             CALL_icode___icode_tools___ICodeVisitor___visit_iregister_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
           } else {
-            /* ./icode//icode_tools.nit:58 */
+            /* ./icode//icode_tools.nit:59 */
             REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
             if (UNTAG_Bool(REGB0)) {
-              /* ./icode//icode_tools.nit:59 */
+              /* ./icode//icode_tools.nit:60 */
               REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
               if (UNTAG_Bool(REGB0)) {
-               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 59);
+               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 60);
               }
               fra.me.REG[2] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[1])(fra.me.REG[1]);
               CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeVisitor___visit_icode_3));
-              /* ./icode//icode_tools.nit:62 */
+              /* ./icode//icode_tools.nit:63 */
               REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
               if (UNTAG_Bool(REGB0)) {
-               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 62);
+               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 63);
               }
               fra.me.REG[2] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[1])(fra.me.REG[1]);
-              /* ./icode//icode_tools.nit:63 */
+              /* ./icode//icode_tools.nit:64 */
               REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IClosCall, ID_icode___icode_base___IClosCall)) /*cast IClosCall*/;
               if (UNTAG_Bool(REGB0)) {
-               /* ./icode//icode_tools.nit:64 */
+               /* ./icode//icode_tools.nit:65 */
                REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
                if (UNTAG_Bool(REGB0)) {
-               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 64);
+               nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 65);
                }
                fra.me.REG[3] = CALL_icode___icode_base___IClosCall___break_seq(fra.me.REG[1])(fra.me.REG[1]);
                CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
               }
-              /* ./icode//icode_tools.nit:66 */
+              /* ./icode//icode_tools.nit:67 */
               REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
               if (UNTAG_Bool(REGB0)) {
               } else {
@@ -226,7 +226,7 @@ void icode___icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
               }
               REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
               if (UNTAG_Bool(REGB0)) {
-               /* ./icode//icode_tools.nit:67 */
+               /* ./icode//icode_tools.nit:68 */
                CALL_icode___icode_tools___ICodeVisitor___visit_closure_defs(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
               }
             }
@@ -235,13 +235,13 @@ void icode___icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
       }
     }
   }
-  /* ./icode//icode_tools.nit:70 */
+  /* ./icode//icode_tools.nit:71 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 70);
+    nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 71);
   }
   fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./icode//icode_tools.nit:71 */
+  /* ./icode//icode_tools.nit:72 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -277,7 +277,7 @@ void icode___icode_tools___ICodeVisitor___visit_icode(val_t p0, val_t p1){
                fra.me.closure_funs = CREG;
                fra.me.REG[0] = p0;
                CREG[0] = clos_fun0;
-               /* ./icode//icode_tools.nit:60 */
+               /* ./icode//icode_tools.nit:61 */
                CALL_icode___icode_tools___ICodeVisitor___visit_iregister_read(closctx->REG[0])(closctx->REG[0], closctx->REG[1], fra.me.REG[0]);
                stack_frame_head = fra.me.prev;
                return;
@@ -287,7 +287,7 @@ void icode___icode_tools___ICodeVisitor___visit_closure_defs(val_t p0, val_t p1)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 74;
+  fra.me.line = 75;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___visit_closure_defs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -305,7 +305,7 @@ void icode___icode_tools___ICodeVisitor___visit_closure_defs(val_t p0, val_t p1)
     val_t REGB1;
     fun_t CREG[1];
     val_t tmp;
-    /* ./icode//icode_tools.nit:78 */
+    /* ./icode//icode_tools.nit:79 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_icode___icode_tools;
     fra.me.line = 0;
@@ -317,7 +317,7 @@ void icode___icode_tools___ICodeVisitor___visit_closure_defs(val_t p0, val_t p1)
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./icode//icode_tools.nit:79 */
+    /* ./icode//icode_tools.nit:80 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -332,7 +332,7 @@ void icode___icode_tools___ICodeVisitor___visit_closure_defs(val_t p0, val_t p1)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:80 */
+      /* ./icode//icode_tools.nit:81 */
       CALL_icode___icode_tools___ICodeVisitor___visit_iroutine(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
     }
     stack_frame_head = fra.me.prev;
@@ -343,7 +343,7 @@ void icode___icode_tools___ICodeVisitor___visit_iroutine(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 85;
+  fra.me.line = 86;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeVisitor___visit_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -351,7 +351,7 @@ void icode___icode_tools___ICodeVisitor___visit_iroutine(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:90 */
+  /* ./icode//icode_tools.nit:91 */
   fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
   CALL_icode___icode_tools___ICodeVisitor___visit_icode(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -383,7 +383,7 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(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_icode___icode_tools;
-  fra.me.line = 95;
+  fra.me.line = 96;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeBuilder___inline_routine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -401,7 +401,7 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./icode//icode_tools.nit:99 */
+  /* ./icode//icode_tools.nit:100 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
   if (UNTAG_Bool(REGB0)) {
@@ -412,29 +412,29 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 99);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 100);
   }
-  /* ./icode//icode_tools.nit:100 */
-  fra.me.REG[4] = NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(fra.me.REG[0]);
   /* ./icode//icode_tools.nit:101 */
+  fra.me.REG[4] = NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(fra.me.REG[0]);
+  /* ./icode//icode_tools.nit:102 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./icode//icode_tools.nit:101 */
+    /* ./icode//icode_tools.nit:102 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 101);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 102);
   }
-  /* ./icode//icode_tools.nit:102 */
-  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
   /* ./icode//icode_tools.nit:103 */
+  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./icode//icode_tools.nit:104 */
   REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -451,14 +451,14 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 103);
+      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 104);
     }
     REGB2 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
   } else {
     REGB1 = TAG_Int(0);
     REGB2 = REGB1;
   }
-  /* ./icode//icode_tools.nit:104 */
+  /* ./icode//icode_tools.nit:105 */
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -475,30 +475,35 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 104);
+      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 105);
     }
     REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
   } else {
     REGB0 = TAG_Int(0);
     REGB1 = REGB0;
   }
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
-  /* ./icode//icode_tools.nit:105 */
+  /* ./icode//icode_tools.nit:106 */
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 105);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 106);
   }
-  /* ./icode//icode_tools.nit:108 */
+  /* ./icode//icode_tools.nit:109 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 108);
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 109);
   }
   fra.me.REG[6] = ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[4]);
-  /* ./icode//icode_tools.nit:109 */
-  fra.me.REG[7] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
   /* ./icode//icode_tools.nit:110 */
+  fra.me.REG[7] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./icode//icode_tools.nit:111 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -513,53 +518,58 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:111 */
+    /* ./icode//icode_tools.nit:112 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 111);
+      nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 112);
     }
     fra.me.REG[8] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[7])(fra.me.REG[7]);
     fra.me.REG[8] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
-    /* ./icode//icode_tools.nit:112 */
-    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
     /* ./icode//icode_tools.nit:113 */
+    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7], fra.me.REG[8]);
+    /* ./icode//icode_tools.nit:114 */
     fra.me.REG[7] = fra.me.REG[8];
   }
-  /* ./icode//icode_tools.nit:115 */
+  /* ./icode//icode_tools.nit:116 */
   fra.me.REG[8] = CALL_icode___icode_base___IRoutine___registers(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeBuilder___inline_routine_1));
-  /* ./icode//icode_tools.nit:119 */
+  /* ./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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB4)) {
-      /* ./icode//icode_tools.nit:119 */
+      /* ./icode//icode_tools.nit:120 */
       REGB4 = REGB0;
-      /* ./icode//icode_tools.nit:122 */
+      /* ./icode//icode_tools.nit:123 */
       fra.me.REG[8] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[8] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB4);
-      fra.me.REG[9] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
+      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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB4;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./icode//icode_tools.nit:127 */
+  /* ./icode//icode_tools.nit:128 */
   fra.me.REG[6] = CALL_icode___icode_base___IRoutine___escape_marks(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeBuilder___inline_routine_3));
-  /* ./icode//icode_tools.nit:134 */
+  /* ./icode//icode_tools.nit:135 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -574,81 +584,91 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:135 */
+    /* ./icode//icode_tools.nit:136 */
     REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 135);
+      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 136);
     }
     fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[4]);
-    /* ./icode//icode_tools.nit:136 */
+    /* ./icode//icode_tools.nit:137 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:330 */
+    /* ./../lib/standard//kernel.nit:347 */
     REGB3 = REGB2;
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB4)) {
-        /* ./icode//icode_tools.nit:136 */
-        REGB4 = REGB0;
         /* ./icode//icode_tools.nit:137 */
+        REGB4 = REGB0;
+        /* ./icode//icode_tools.nit:138 */
         REGB5 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 137);
+          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 138);
         }
-        fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB4);
+        fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB4);
         REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
-          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 137);
+          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 138);
         }
-        fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB4);
+        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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB4 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB4;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label4;
       }
     }
     label4: while(0);
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./icode//icode_tools.nit:139 */
-        REGB0 = REGB2;
         /* ./icode//icode_tools.nit:140 */
+        REGB0 = REGB2;
+        /* ./icode//icode_tools.nit:141 */
         REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 140);
+          nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 141);
         }
-        fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB0);
+        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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = REGB0;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label5;
       }
     }
     label5: while(0);
   }
-  /* ./icode//icode_tools.nit:145 */
+  /* ./icode//icode_tools.nit:146 */
   fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
   CALL_icode___icode_tools___ICode___dup_with(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./icode//icode_tools.nit:146 */
+  /* ./icode//icode_tools.nit:147 */
   goto label6;
   label6: while(0);
   stack_frame_head = fra.me.prev;
@@ -671,14 +691,14 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./icode//icode_tools.nit:116 */
+    /* ./icode//icode_tools.nit:117 */
     REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 116);
+      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 117);
     }
-    /* ./icode//icode_tools.nit:117 */
+    /* ./icode//icode_tools.nit:118 */
     fra.me.REG[1] = CALL_icode___icode_base___IRegister___stype(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___new_register(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___Map_____braeq(closctx->REG[6])(closctx->REG[6], fra.me.REG[0], fra.me.REG[1]);
@@ -703,17 +723,17 @@ val_t icode___icode_tools___ICodeBuilder___inline_routine(val_t p0, val_t p1, va
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./icode//icode_tools.nit:128 */
-    fra.me.REG[1] = NEW_IEscapeMark_icode___icode_base___IEscapeMark___init();
     /* ./icode//icode_tools.nit:129 */
+    fra.me.REG[1] = NEW_IEscapeMark_icode___icode_base___IEscapeMark___init();
+    /* ./icode//icode_tools.nit:130 */
     fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___iroutine(closctx->REG[0])(closctx->REG[0]);
     fra.me.REG[2] = CALL_icode___icode_base___IRoutine___escape_marks(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-    /* ./icode//icode_tools.nit:130 */
+    /* ./icode//icode_tools.nit:131 */
     REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____marks(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 130);
+      nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 131);
     }
     fra.me.REG[2] = ATTR_icode___icode_tools___ICodeDupContext____marks(closctx->REG[4]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
@@ -726,7 +746,7 @@ val_t icode___icode_tools___ICodeDupContext___dup_ireg(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 152;
+  fra.me.line = 153;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_ireg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -734,21 +754,21 @@ val_t icode___icode_tools___ICodeDupContext___dup_ireg(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:157 */
+  /* ./icode//icode_tools.nit:158 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 157);
+    nit_abort("Uninitialized attribute %s", "_registers", LOCATE_icode___icode_tools, 158);
   }
   fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0]);
-  /* ./icode//icode_tools.nit:158 */
+  /* ./icode//icode_tools.nit:159 */
   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)) {
-    /* ./icode//icode_tools.nit:159 */
+    /* ./icode//icode_tools.nit:160 */
     fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./icode//icode_tools.nit:161 */
+    /* ./icode//icode_tools.nit:162 */
     fra.me.REG[0] = fra.me.REG[1];
     goto label1;
   }
@@ -762,7 +782,7 @@ val_t icode___icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 165;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_iregs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -771,11 +791,11 @@ val_t icode___icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:168 */
+  /* ./icode//icode_tools.nit:169 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICodeDupContext___dup_iregs_1));
-  /* ./icode//icode_tools.nit:172 */
+  /* ./icode//icode_tools.nit:173 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -785,7 +805,7 @@ val_t icode___icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
     struct {struct stack_frame_t me;} fra;
     fun_t CREG[1];
     val_t tmp;
-    /* ./icode//icode_tools.nit:169 */
+    /* ./icode//icode_tools.nit:170 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_icode___icode_tools;
     fra.me.line = 0;
@@ -797,7 +817,7 @@ val_t icode___icode_tools___ICodeDupContext___dup_iregs(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./icode//icode_tools.nit:170 */
+    /* ./icode//icode_tools.nit:171 */
     fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(closctx->REG[0])(closctx->REG[0], 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;
@@ -809,7 +829,7 @@ val_t icode___icode_tools___ICodeDupContext___dup_mark(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 179;
+  fra.me.line = 180;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___dup_mark;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -817,21 +837,21 @@ val_t icode___icode_tools___ICodeDupContext___dup_mark(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:184 */
+  /* ./icode//icode_tools.nit:185 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 184);
+    nit_abort("Uninitialized attribute %s", "_marks", LOCATE_icode___icode_tools, 185);
   }
   fra.me.REG[0] = ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0]);
-  /* ./icode//icode_tools.nit:185 */
+  /* ./icode//icode_tools.nit:186 */
   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)) {
-    /* ./icode//icode_tools.nit:186 */
+    /* ./icode//icode_tools.nit:187 */
     fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./icode//icode_tools.nit:188 */
+    /* ./icode//icode_tools.nit:189 */
     fra.me.REG[0] = fra.me.REG[1];
     goto label1;
   }
@@ -846,7 +866,7 @@ void icode___icode_tools___ICodeDupContext___init(val_t p0, val_t p1, int* init_
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 202;
+  fra.me.line = 203;
   fra.me.meth = LOCATE_icode___icode_tools___ICodeDupContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -854,7 +874,7 @@ void icode___icode_tools___ICodeDupContext___init(val_t p0, val_t p1, int* init_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:204 */
+  /* ./icode//icode_tools.nit:205 */
   ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -867,7 +887,7 @@ void icode___icode_tools___ICode___dup_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_icode___icode_tools;
-  fra.me.line = 209;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_icode___icode_tools___ICode___dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -878,20 +898,20 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:212 */
-  fra.me.REG[2] = CALL_icode___icode_tools___ICode___inner_dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ./icode//icode_tools.nit:213 */
+  fra.me.REG[2] = CALL_icode___icode_tools___ICode___inner_dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./icode//icode_tools.nit:214 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:214 */
+    /* ./icode//icode_tools.nit:215 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___ICodeN, ID_icode___icode_base___ICodeN)) /*cast ICodeN*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 214);
+      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 215);
     }
-    /* ./icode//icode_tools.nit:215 */
-    fra.me.REG[3] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
     /* ./icode//icode_tools.nit:216 */
+    fra.me.REG[3] = CALL_icode___icode_base___ICodeN___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./icode//icode_tools.nit:217 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -906,26 +926,26 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:218 */
+      /* ./icode//icode_tools.nit:219 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 218);
+        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 219);
       }
       REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-      /* ./icode//icode_tools.nit:219 */
+      /* ./icode//icode_tools.nit:220 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 219);
+        nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 220);
       }
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_icode___icode_tools___ICode___dup_with_1));
-      /* ./icode//icode_tools.nit:230 */
+      /* ./icode//icode_tools.nit:231 */
       CALL_icode___icode_base___ICodeN___closure_defs__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     }
   }
-  /* ./icode//icode_tools.nit:233 */
-  fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
   /* ./icode//icode_tools.nit:234 */
+  fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./icode//icode_tools.nit:235 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -943,14 +963,14 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
     fra.me.REG[4] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
     CALL_icode___icode_base___ICode___result__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* ./icode//icode_tools.nit:235 */
+  /* ./icode//icode_tools.nit:236 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode___location(fra.me.REG[0])(fra.me.REG[0]);
   CALL_icode___icode_base___ICode___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./icode//icode_tools.nit:236 */
+  /* ./icode//icode_tools.nit:237 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 236);
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 237);
   }
   fra.me.REG[1] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
@@ -978,7 +998,7 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
         fra.me.closure_funs = CREG;
         fra.me.REG[0] = p0;
         CREG[0] = clos_fun0;
-        /* ./icode//icode_tools.nit:220 */
+        /* ./icode//icode_tools.nit:221 */
         REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
@@ -992,16 +1012,16 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
           }
         }
         if (UNTAG_Bool(REGB0)) {
-          /* ./icode//icode_tools.nit:221 */
+          /* ./icode//icode_tools.nit:222 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], NIT_NULL);
         } else {
-          /* ./icode//icode_tools.nit:223 */
+          /* ./icode//icode_tools.nit:224 */
           REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 223);
+            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 224);
           }
           fra.me.REG[1] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[0])(fra.me.REG[0]);
-          /* ./icode//icode_tools.nit:224 */
+          /* ./icode//icode_tools.nit:225 */
           REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
@@ -1019,20 +1039,20 @@ void icode___icode_tools___ICode___dup_with(val_t p0, val_t p1){
             fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
             fra.me.REG[1] = fra.me.REG[2];
           }
-          /* ./icode//icode_tools.nit:225 */
+          /* ./icode//icode_tools.nit:226 */
           REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 225);
+            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 226);
           }
           fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
           fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
           fra.me.REG[1] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[1]);
-          /* ./icode//icode_tools.nit:226 */
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[1]);
           /* ./icode//icode_tools.nit:227 */
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[1]);
+          /* ./icode//icode_tools.nit:228 */
           REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 227);
+            nit_abort("Reciever is null", NULL, LOCATE_icode___icode_tools, 228);
           }
           fra.me.REG[0] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[0])(fra.me.REG[0]);
           fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[1])(fra.me.REG[1]);
@@ -1046,12 +1066,12 @@ val_t icode___icode_tools___ICode___inner_dup_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_icode___icode_tools;
-  fra.me.line = 239;
+  fra.me.line = 240;
   fra.me.meth = LOCATE_icode___icode_tools___ICode___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./icode//icode_tools.nit:239 */
-  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_tools, 239);
+  /* ./icode//icode_tools.nit:240 */
+  nit_abort("Deferred method called", NULL, LOCATE_icode___icode_tools, 240);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1060,7 +1080,7 @@ val_t icode___icode_tools___ISeq___inner_dup_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_icode___icode_tools;
-  fra.me.line = 244;
+  fra.me.line = 245;
   fra.me.meth = LOCATE_icode___icode_tools___ISeq___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1069,11 +1089,11 @@ val_t icode___icode_tools___ISeq___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:246 */
-  fra.me.REG[2] = NEW_ISeq_icode___icode_base___ISeq___init();
   /* ./icode//icode_tools.nit:247 */
-  CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[2] = NEW_ISeq_icode___icode_base___ISeq___init();
   /* ./icode//icode_tools.nit:248 */
+  CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  /* ./icode//icode_tools.nit:249 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1086,7 +1106,7 @@ void icode___icode_tools___ISeq___dup_seq_to(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_icode___icode_tools;
-  fra.me.line = 251;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_icode___icode_tools___ISeq___dup_seq_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1098,34 +1118,34 @@ void icode___icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_tools.nit:255 */
+  /* ./icode//icode_tools.nit:256 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 255);
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 256);
   }
   fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./icode//icode_tools.nit:256 */
+  /* ./icode//icode_tools.nit:257 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 256);
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 257);
   }
   fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./icode//icode_tools.nit:257 */
+  /* ./icode//icode_tools.nit:258 */
   fra.me.REG[4] = CALL_icode___icode_base___ISeq___icodes(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_icode___icode_tools___ISeq___dup_seq_to_1));
-  /* ./icode//icode_tools.nit:260 */
+  /* ./icode//icode_tools.nit:261 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 260);
+    nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 261);
   }
   fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./icode//icode_tools.nit:261 */
+  /* ./icode//icode_tools.nit:262 */
   fra.me.REG[3] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1141,11 +1161,11 @@ void icode___icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 261);
+    nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 262);
   }
-  /* ./icode//icode_tools.nit:262 */
-  fra.me.REG[0] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
   /* ./icode//icode_tools.nit:263 */
+  fra.me.REG[0] = CALL_icode___icode_base___ISeq___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./icode//icode_tools.nit:264 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1160,7 +1180,7 @@ void icode___icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:264 */
+    /* ./icode//icode_tools.nit:265 */
     fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     CALL_icode___icode_base___ISeq___iescape_mark__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   }
@@ -1182,7 +1202,7 @@ void icode___icode_tools___ISeq___dup_seq_to(val_t p0, val_t p1, val_t p2){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./icode//icode_tools.nit:258 */
+    /* ./icode//icode_tools.nit:259 */
     CALL_icode___icode_tools___ICode___dup_with(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
@@ -1192,7 +1212,7 @@ val_t icode___icode_tools___ILoop___inner_dup_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_icode___icode_tools;
-  fra.me.line = 270;
+  fra.me.line = 271;
   fra.me.meth = LOCATE_icode___icode_tools___ILoop___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1201,11 +1221,11 @@ val_t icode___icode_tools___ILoop___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:272 */
-  fra.me.REG[2] = NEW_ILoop_icode___icode_base___ILoop___init();
   /* ./icode//icode_tools.nit:273 */
-  CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[2] = NEW_ILoop_icode___icode_base___ILoop___init();
   /* ./icode//icode_tools.nit:274 */
+  CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+  /* ./icode//icode_tools.nit:275 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1216,7 +1236,7 @@ val_t icode___icode_tools___IIf___inner_dup_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_icode___icode_tools;
-  fra.me.line = 279;
+  fra.me.line = 280;
   fra.me.meth = LOCATE_icode___icode_tools___IIf___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1227,19 +1247,19 @@ val_t icode___icode_tools___IIf___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:281 */
+  /* ./icode//icode_tools.nit:282 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
-  /* ./icode//icode_tools.nit:282 */
+  /* ./icode//icode_tools.nit:283 */
   fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[2])(fra.me.REG[2]);
   CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[4]);
-  /* ./icode//icode_tools.nit:283 */
+  /* ./icode//icode_tools.nit:284 */
   fra.me.REG[0] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[2])(fra.me.REG[2]);
   CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
-  /* ./icode//icode_tools.nit:284 */
+  /* ./icode//icode_tools.nit:285 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1250,7 +1270,7 @@ val_t icode___icode_tools___IEscape___inner_dup_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_icode___icode_tools;
-  fra.me.line = 289;
+  fra.me.line = 290;
   fra.me.meth = LOCATE_icode___icode_tools___IEscape___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1258,10 +1278,10 @@ val_t icode___icode_tools___IEscape___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:292 */
+  /* ./icode//icode_tools.nit:293 */
   fra.me.REG[0] = CALL_icode___icode_base___IEscape___iescape_mark(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_mark(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./icode//icode_tools.nit:294 */
+  /* ./icode//icode_tools.nit:295 */
   fra.me.REG[0] = NEW_IEscape_icode___icode_base___IEscape___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -1273,7 +1293,7 @@ val_t icode___icode_tools___IAbort___inner_dup_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_icode___icode_tools;
-  fra.me.line = 299;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_icode___icode_tools___IAbort___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1281,7 +1301,7 @@ val_t icode___icode_tools___IAbort___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:301 */
+  /* ./icode//icode_tools.nit:302 */
   fra.me.REG[1] = CALL_icode___icode_base___IAbort___texts(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___IAbort___module_location(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IAbort_icode___icode_base___IAbort___init(fra.me.REG[1], fra.me.REG[0]);
@@ -1295,7 +1315,7 @@ val_t icode___icode_tools___ICall___inner_dup_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_icode___icode_tools;
-  fra.me.line = 306;
+  fra.me.line = 307;
   fra.me.meth = LOCATE_icode___icode_tools___ICall___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1304,7 +1324,7 @@ val_t icode___icode_tools___ICall___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:308 */
+  /* ./icode//icode_tools.nit:309 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1319,7 +1339,7 @@ val_t icode___icode_tools___ISuper___inner_dup_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_icode___icode_tools;
-  fra.me.line = 313;
+  fra.me.line = 314;
   fra.me.meth = LOCATE_icode___icode_tools___ISuper___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1328,7 +1348,7 @@ val_t icode___icode_tools___ISuper___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:315 */
+  /* ./icode//icode_tools.nit:316 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1343,7 +1363,7 @@ val_t icode___icode_tools___INew___inner_dup_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_icode___icode_tools;
-  fra.me.line = 320;
+  fra.me.line = 321;
   fra.me.meth = LOCATE_icode___icode_tools___INew___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1353,7 +1373,7 @@ val_t icode___icode_tools___INew___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:322 */
+  /* ./icode//icode_tools.nit:323 */
   fra.me.REG[2] = CALL_icode___icode_base___INew___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
@@ -1369,7 +1389,7 @@ val_t icode___icode_tools___IAllocateInstance___inner_dup_with(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 327;
+  fra.me.line = 328;
   fra.me.meth = LOCATE_icode___icode_tools___IAllocateInstance___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1377,7 +1397,7 @@ val_t icode___icode_tools___IAllocateInstance___inner_dup_with(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:329 */
+  /* ./icode//icode_tools.nit:330 */
   fra.me.REG[0] = CALL_icode___icode_base___IAllocateInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra.me.REG[0]);
   goto label1;
@@ -1390,7 +1410,7 @@ val_t icode___icode_tools___IStaticCall___inner_dup_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_icode___icode_tools;
-  fra.me.line = 334;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_icode___icode_tools___IStaticCall___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1399,7 +1419,7 @@ val_t icode___icode_tools___IStaticCall___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:336 */
+  /* ./icode//icode_tools.nit:337 */
   fra.me.REG[2] = CALL_icode___icode_base___IAbsCall___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1414,7 +1434,7 @@ val_t icode___icode_tools___ICheckInstance___inner_dup_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_icode___icode_tools;
-  fra.me.line = 341;
+  fra.me.line = 342;
   fra.me.meth = LOCATE_icode___icode_tools___ICheckInstance___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1423,7 +1443,7 @@ val_t icode___icode_tools___ICheckInstance___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:343 */
+  /* ./icode//icode_tools.nit:344 */
   fra.me.REG[2] = CALL_icode___icode_base___ICheckInstance___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1438,7 +1458,7 @@ val_t icode___icode_tools___IInitAttributes___inner_dup_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_icode___icode_tools;
-  fra.me.line = 348;
+  fra.me.line = 349;
   fra.me.meth = LOCATE_icode___icode_tools___IInitAttributes___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1447,7 +1467,7 @@ val_t icode___icode_tools___IInitAttributes___inner_dup_with(val_t p0, val_t p1)
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:350 */
+  /* ./icode//icode_tools.nit:351 */
   fra.me.REG[2] = CALL_icode___icode_base___IInitAttributes___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1464,7 +1484,7 @@ void icode___icode_tools___IClosCall___dup_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_icode___icode_tools;
-  fra.me.line = 355;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_icode___icode_tools___IClosCall___dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1477,29 +1497,29 @@ void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:355 */
+  /* ./icode//icode_tools.nit:356 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:357 */
+  /* ./icode//icode_tools.nit:358 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 357);
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 358);
   }
   fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3]);
   fra.me.REG[5] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:359 */
+    /* ./icode//icode_tools.nit:360 */
     REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 359);
+      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 360);
     }
     fra.me.REG[5] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[3]);
     fra.me.REG[4] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    /* ./icode//icode_tools.nit:360 */
+    /* ./icode//icode_tools.nit:361 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -1513,10 +1533,10 @@ void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:362 */
+      /* ./icode//icode_tools.nit:363 */
       goto label1;
     }
-    /* ./icode//icode_tools.nit:365 */
+    /* ./icode//icode_tools.nit:366 */
     fra.me.REG[5] = CALL_icode___icode_base___IClosCall___break_seq(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1532,19 +1552,19 @@ void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 365);
+      nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 366);
     }
-    /* ./icode//icode_tools.nit:367 */
+    /* ./icode//icode_tools.nit:368 */
     REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 367);
+      nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 368);
     }
     fra.me.REG[5] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3]);
     fra.me.REG[6] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
     fra.me.REG[6] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4], fra.me.REG[6], NIT_NULL);
-    /* ./icode//icode_tools.nit:368 */
+    /* ./icode//icode_tools.nit:369 */
     fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1560,7 +1580,7 @@ void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:369 */
+      /* ./icode//icode_tools.nit:370 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -1576,27 +1596,27 @@ void icode___icode_tools___IClosCall___dup_with(val_t p0, val_t p1){
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 369);
+        nit_abort("Assert failed", NULL, LOCATE_icode___icode_tools, 370);
       }
-      /* ./icode//icode_tools.nit:370 */
+      /* ./icode//icode_tools.nit:371 */
       REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 370);
+        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 371);
       }
       fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[3]);
       fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 370);
+        nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 371);
       }
       fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
       fra.me.REG[6] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[6]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
     }
   } else {
-    /* ./icode//icode_tools.nit:374 */
+    /* ./icode//icode_tools.nit:375 */
     CALL_SUPER_icode___icode_tools___IClosCall___dup_with(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
   label1: while(0);
@@ -1608,7 +1628,7 @@ val_t icode___icode_tools___IClosCall___inner_dup_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_icode___icode_tools;
-  fra.me.line = 378;
+  fra.me.line = 379;
   fra.me.meth = LOCATE_icode___icode_tools___IClosCall___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1616,7 +1636,7 @@ val_t icode___icode_tools___IClosCall___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:380 */
+  /* ./icode//icode_tools.nit:381 */
   fra.me.REG[1] = CALL_icode___icode_base___IClosCall___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[1], fra.me.REG[0]);
@@ -1631,7 +1651,7 @@ val_t icode___icode_tools___INative___inner_dup_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_icode___icode_tools;
-  fra.me.line = 385;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_icode___icode_tools___INative___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1641,15 +1661,15 @@ val_t icode___icode_tools___INative___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:387 */
+  /* ./icode//icode_tools.nit:388 */
   fra.me.REG[2] = CALL_icode___icode_base___INative___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___ICodeN___exprs(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_iregs(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[3] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[3]);
-  /* ./icode//icode_tools.nit:388 */
+  /* ./icode//icode_tools.nit:389 */
   REGB0 = CALL_icode___icode_base___ICode___is_pure(fra.me.REG[0])(fra.me.REG[0]);
   CALL_icode___icode_base___INative___is_pure__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
-  /* ./icode//icode_tools.nit:389 */
+  /* ./icode//icode_tools.nit:390 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1660,7 +1680,7 @@ val_t icode___icode_tools___IIntValue___inner_dup_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_icode___icode_tools;
-  fra.me.line = 394;
+  fra.me.line = 395;
   fra.me.meth = LOCATE_icode___icode_tools___IIntValue___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1668,7 +1688,7 @@ val_t icode___icode_tools___IIntValue___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:396 */
+  /* ./icode//icode_tools.nit:397 */
   fra.me.REG[0] = CALL_icode___icode_base___IIntValue___value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[0]);
   goto label1;
@@ -1682,7 +1702,7 @@ val_t icode___icode_tools___IBoolValue___inner_dup_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_icode___icode_tools;
-  fra.me.line = 401;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_icode___icode_tools___IBoolValue___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1690,7 +1710,7 @@ val_t icode___icode_tools___IBoolValue___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:403 */
+  /* ./icode//icode_tools.nit:404 */
   REGB0 = CALL_icode___icode_base___IBoolValue___value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IBoolValue_icode___icode_base___IBoolValue___init(REGB0);
   goto label1;
@@ -1703,7 +1723,7 @@ val_t icode___icode_tools___IStringValue___inner_dup_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_icode___icode_tools;
-  fra.me.line = 408;
+  fra.me.line = 409;
   fra.me.meth = LOCATE_icode___icode_tools___IStringValue___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1711,7 +1731,7 @@ val_t icode___icode_tools___IStringValue___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:410 */
+  /* ./icode//icode_tools.nit:411 */
   fra.me.REG[0] = CALL_icode___icode_base___IStringValue___value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[0]);
   goto label1;
@@ -1724,7 +1744,7 @@ val_t icode___icode_tools___IFloatValue___inner_dup_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_icode___icode_tools;
-  fra.me.line = 415;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_icode___icode_tools___IFloatValue___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1732,7 +1752,7 @@ val_t icode___icode_tools___IFloatValue___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:417 */
+  /* ./icode//icode_tools.nit:418 */
   fra.me.REG[0] = CALL_icode___icode_base___IFloatValue___value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_IFloatValue_icode___icode_base___IFloatValue___init(fra.me.REG[0]);
   goto label1;
@@ -1745,7 +1765,7 @@ val_t icode___icode_tools___ICharValue___inner_dup_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_icode___icode_tools;
-  fra.me.line = 422;
+  fra.me.line = 423;
   fra.me.meth = LOCATE_icode___icode_tools___ICharValue___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1753,7 +1773,7 @@ val_t icode___icode_tools___ICharValue___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:424 */
+  /* ./icode//icode_tools.nit:425 */
   fra.me.REG[0] = CALL_icode___icode_base___ICharValue___value(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_ICharValue_icode___icode_base___ICharValue___init(fra.me.REG[0]);
   goto label1;
@@ -1762,42 +1782,45 @@ val_t icode___icode_tools___ICharValue___inner_dup_with(val_t p0, val_t p1){
   return fra.me.REG[0];
 }
 val_t icode___icode_tools___IMove___inner_dup_with(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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_icode___icode_tools;
-  fra.me.line = 429;
+  fra.me.line = 430;
   fra.me.meth = LOCATE_icode___icode_tools___IMove___inner_dup_with;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:431 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+  /* ./icode//icode_tools.nit:430 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./icode//icode_tools.nit:432 */
+  fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 431);
+    nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 432);
   }
+  fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  fra.me.REG[0] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[3], fra.me.REG[2]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t icode___icode_tools___IAttrRead___inner_dup_with(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_icode___icode_tools;
-  fra.me.line = 436;
+  fra.me.line = 437;
   fra.me.meth = LOCATE_icode___icode_tools___IAttrRead___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1806,7 +1829,7 @@ val_t icode___icode_tools___IAttrRead___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:438 */
+  /* ./icode//icode_tools.nit:439 */
   fra.me.REG[2] = CALL_icode___icode_base___IAttrRead___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1821,7 +1844,7 @@ val_t icode___icode_tools___IAttrWrite___inner_dup_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_icode___icode_tools;
-  fra.me.line = 443;
+  fra.me.line = 444;
   fra.me.meth = LOCATE_icode___icode_tools___IAttrWrite___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1831,7 +1854,7 @@ val_t icode___icode_tools___IAttrWrite___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:445 */
+  /* ./icode//icode_tools.nit:446 */
   fra.me.REG[2] = CALL_icode___icode_base___IAttrWrite___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
@@ -1848,7 +1871,7 @@ val_t icode___icode_tools___IAttrIsset___inner_dup_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_icode___icode_tools;
-  fra.me.line = 450;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_icode___icode_tools___IAttrIsset___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1857,7 +1880,7 @@ val_t icode___icode_tools___IAttrIsset___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:452 */
+  /* ./icode//icode_tools.nit:453 */
   fra.me.REG[2] = CALL_icode___icode_base___IAttrIsset___property(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
@@ -1868,24 +1891,27 @@ val_t icode___icode_tools___IAttrIsset___inner_dup_with(val_t p0, val_t p1){
   return fra.me.REG[0];
 }
 val_t icode___icode_tools___ITypeCheck___inner_dup_with(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 457;
+  fra.me.line = 458;
   fra.me.meth = LOCATE_icode___icode_tools___ITypeCheck___inner_dup_with;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:459 */
-  fra.me.REG[2] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./icode//icode_tools.nit:460 */
+  fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[0] = CALL_icode___icode_base___ITypeCheck___stype(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[0] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1896,7 +1922,7 @@ val_t icode___icode_tools___IIs___inner_dup_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_icode___icode_tools;
-  fra.me.line = 464;
+  fra.me.line = 465;
   fra.me.meth = LOCATE_icode___icode_tools___IIs___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1905,7 +1931,7 @@ val_t icode___icode_tools___IIs___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:466 */
+  /* ./icode//icode_tools.nit:467 */
   fra.me.REG[2] = CALL_icode___icode_base___ICode2___expr1(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   fra.me.REG[0] = CALL_icode___icode_base___ICode2___expr2(fra.me.REG[0])(fra.me.REG[0]);
@@ -1921,7 +1947,7 @@ val_t icode___icode_tools___INot___inner_dup_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_icode___icode_tools;
-  fra.me.line = 471;
+  fra.me.line = 472;
   fra.me.meth = LOCATE_icode___icode_tools___INot___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1929,7 +1955,7 @@ val_t icode___icode_tools___INot___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:473 */
+  /* ./icode//icode_tools.nit:474 */
   fra.me.REG[0] = CALL_icode___icode_base___ICode1___expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   fra.me.REG[0] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[0]);
@@ -1943,7 +1969,7 @@ val_t icode___icode_tools___IOnce___inner_dup_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_icode___icode_tools;
-  fra.me.line = 478;
+  fra.me.line = 479;
   fra.me.meth = LOCATE_icode___icode_tools___IOnce___inner_dup_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1953,106 +1979,109 @@ val_t icode___icode_tools___IOnce___inner_dup_with(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:480 */
-  fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
   /* ./icode//icode_tools.nit:481 */
+  fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
+  /* ./icode//icode_tools.nit:482 */
   fra.me.REG[0] = CALL_icode___icode_base___IOnce___body(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_icode___icode_base___IOnce___body(fra.me.REG[2])(fra.me.REG[2]);
   CALL_icode___icode_tools___ISeq___dup_seq_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
-  /* ./icode//icode_tools.nit:482 */
+  /* ./icode//icode_tools.nit:483 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
 val_t icode___icode_tools___IHasClos___inner_dup_with(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_icode___icode_tools;
-  fra.me.line = 487;
+  fra.me.line = 488;
   fra.me.meth = LOCATE_icode___icode_tools___IHasClos___inner_dup_with;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_tools.nit:489 */
+  /* ./icode//icode_tools.nit:488 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./icode//icode_tools.nit:490 */
   REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 489);
+    nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 490);
   }
-  fra.me.REG[2] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
-  fra.me.REG[3] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./icode//icode_tools.nit:491 */
+    /* ./icode//icode_tools.nit:492 */
     REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 491);
+      nit_abort("Uninitialized attribute %s", "_closures", LOCATE_icode___icode_tools, 492);
     }
-    fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
-    fra.me.REG[2] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    /* ./icode//icode_tools.nit:493 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[1]);
+    fra.me.REG[3] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    /* ./icode//icode_tools.nit:494 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         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[3])(fra.me.REG[3], NIT_NULL);
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./icode//icode_tools.nit:494 */
+      /* ./icode//icode_tools.nit:495 */
       REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 494);
+        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 495);
       }
-      fra.me.REG[2] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
-      fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
+      fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[3])(fra.me.REG[3]);
     } else {
-      /* ./icode//icode_tools.nit:496 */
+      /* ./icode//icode_tools.nit:497 */
       REGB0 = TAG_Bool(ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 496);
+        nit_abort("Uninitialized attribute %s", "_icb", LOCATE_icode___icode_tools, 497);
       }
-      fra.me.REG[3] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
-      fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[2] = fra.me.REG[3];
+      fra.me.REG[4] = ATTR_icode___icode_tools___ICodeDupContext____icb(fra.me.REG[1]);
+      fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[4])(fra.me.REG[4]);
+      fra.me.REG[3] = fra.me.REG[4];
     }
-    /* ./icode//icode_tools.nit:498 */
-    fra.me.REG[3] = CALL_icode___icode_base___ICode___result(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
+    /* ./icode//icode_tools.nit:499 */
+    fra.me.REG[4] = CALL_icode___icode_base___ICode___result(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 498);
+      nit_abort("Cast failed", NULL, LOCATE_icode___icode_tools, 499);
     }
-    fra.me.REG[3] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[3], fra.me.REG[2]);
+    fra.me.REG[4] = CALL_icode___icode_tools___ICodeDupContext___dup_ireg(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+    fra.me.REG[3] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], fra.me.REG[3]);
     goto label1;
   } else {
-    /* ./icode//icode_tools.nit:500 */
-    fra.me.REG[0] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[0] = NEW_IHasClos_icode___icode_base___IHasClos___init(fra.me.REG[0]);
-    fra.me.REG[2] = fra.me.REG[0];
+    /* ./icode//icode_tools.nit:501 */
+    fra.me.REG[2] = CALL_icode___icode_base___IHasClos___closure_decl(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = NEW_IHasClos_icode___icode_base___IHasClos___init(fra.me.REG[2]);
+    fra.me.REG[3] = fra.me.REG[2];
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
index 2568916..2c1ca29 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/icode/icode_tools. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./icode/icode_tools. */
 #ifndef icode___icode_tools_sep
 #define icode___icode_tools_sep
 #include "icode___icode_builder._sep.h"
@@ -204,7 +204,7 @@ val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1);
 static const char * const LOCATE_icode___icode_tools___ITypeCheck___inner_dup_with = "icode_tools::ITypeCheck::(icode_tools::ICode::inner_dup_with)";
 val_t icode___icode_tools___ITypeCheck___inner_dup_with(val_t p0, val_t p1);
 typedef val_t (*icode___icode_tools___ITypeCheck___inner_dup_with_t)(val_t p0, val_t p1);
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_icode___icode_tools___IIs___inner_dup_with = "icode_tools::IIs::(icode_tools::ICode::inner_dup_with)";
 val_t icode___icode_tools___IIs___inner_dup_with(val_t p0, val_t p1);
 typedef val_t (*icode___icode_tools___IIs___inner_dup_with_t)(val_t p0, val_t p1);
index ef8b9de..63a6c97 100644 (file)
@@ -108,7 +108,7 @@ void location___SourceFile___init(val_t p0, val_t p1, val_t p2, int* init_table)
   fra.me.REG[0] = CALL_location___SourceFile___line_starts(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
   REGB1 = TAG_Int(0);
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
+  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
@@ -402,7 +402,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* ./location.nit:66 */
     REGB3 = REGB2;
@@ -423,7 +423,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB3)==(REGB2));
     /* ./location.nit:67 */
     REGB1 = REGB2;
@@ -444,7 +444,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* ./location.nit:68 */
     REGB3 = REGB2;
@@ -465,7 +465,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB3)==(REGB2));
     /* ./location.nit:69 */
     REGB1 = REGB2;
@@ -525,7 +525,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     nit_abort("Reciever is null", NULL, LOCATE_location, 77);
   }
   REGB2 = CALL_location___Location___line_start(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   /* ./location.nit:77 */
   if (UNTAG_Bool(REGB2)) {
@@ -540,7 +545,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     nit_abort("Reciever is null", NULL, LOCATE_location, 78);
   }
   REGB1 = CALL_location___Location___line_end(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//kernel.nit:217 */
+  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:234 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
   /* ./location.nit:78 */
   if (UNTAG_Bool(REGB1)) {
@@ -555,7 +565,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
     nit_abort("Reciever is null", NULL, LOCATE_location, 80);
   }
   REGB2 = CALL_location___Location___line_end(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* ./location.nit:80 */
   if (UNTAG_Bool(REGB2)) {
@@ -573,7 +588,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB2)==(REGB1));
     /* ./location.nit:82 */
     REGB3 = REGB1;
@@ -586,7 +601,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
       nit_abort("Reciever is null", NULL, LOCATE_location, 83);
     }
     REGB1 = CALL_location___Location___column_start(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
     /* ./location.nit:83 */
     if (UNTAG_Bool(REGB1)) {
@@ -601,7 +621,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
       nit_abort("Reciever is null", NULL, LOCATE_location, 84);
     }
     REGB3 = CALL_location___Location___column_end(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:217 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB3, 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 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
     /* ./location.nit:84 */
     if (UNTAG_Bool(REGB3)) {
@@ -620,7 +645,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
     /* ./location.nit:87 */
     REGB2 = REGB1;
@@ -632,7 +657,12 @@ val_t location___Location___located_in(val_t p0, val_t p1){
       nit_abort("Reciever is null", NULL, LOCATE_location, 87);
     }
     REGB1 = CALL_location___Location___column_end(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
   } else {
     /* ./location.nit:87 */
@@ -727,16 +757,21 @@ val_t location___Location___to_s(val_t p0){
       nit_abort("Reciever is null", NULL, LOCATE_location, 96);
     }
     fra.me.REG[2] = CALL_location___SourceFile___filename(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     /* ./location.nit:96 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* ./location.nit:96 */
     if (UNTAG_Bool(REGB1)) {
@@ -758,7 +793,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB0 = TAG_Bool((REGB1)==(REGB0));
     /* ./location.nit:99 */
     REGB2 = REGB0;
@@ -770,7 +805,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB0 = TAG_Bool((REGB2)==(REGB0));
       /* ./location.nit:100 */
       REGB1 = REGB0;
@@ -1062,6 +1097,11 @@ val_t location___Location_____l(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_location, 0);
+  }
   /* ./location.nit:121 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -1093,7 +1133,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* ./location.nit:125 */
     REGB3 = REGB2;
@@ -1102,7 +1142,12 @@ val_t location___Location_____l(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB3)) {
     REGB3 = CALL_location___Location___line_start(fra.me.REG[0])(fra.me.REG[0]);
     REGB2 = CALL_location___Location___line_start(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = TAG_Bool(VAL_ISA(REGB2, 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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
     /* ./location.nit:125 */
     REGB0 = REGB2;
@@ -1114,7 +1159,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB3 = TAG_Bool((REGB2)==(REGB3));
     /* ./location.nit:126 */
     REGB1 = REGB3;
@@ -1123,7 +1168,12 @@ val_t location___Location_____l(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB1)) {
     REGB1 = CALL_location___Location___column_start(fra.me.REG[0])(fra.me.REG[0]);
     REGB3 = CALL_location___Location___column_start(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB2 = TAG_Bool(VAL_ISA(REGB3, 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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
     /* ./location.nit:126 */
     REGB0 = REGB3;
@@ -1135,7 +1185,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
     /* ./location.nit:127 */
     REGB2 = REGB1;
@@ -1144,7 +1194,12 @@ val_t location___Location_____l(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB2)) {
     REGB2 = CALL_location___Location___line_end(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = CALL_location___Location___line_end(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     /* ./location.nit:127 */
     REGB0 = REGB1;
@@ -1153,7 +1208,12 @@ val_t location___Location_____l(val_t p0, val_t p1){
   /* ./location.nit:129 */
   REGB1 = CALL_location___Location___column_end(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = CALL_location___Location___column_end(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
   /* ./location.nit:129 */
   REGB0 = REGB2;
index d13368c..f8cd6c9 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/location. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./location. */
 #ifndef location_sep
 #define location_sep
 #include "standard._sep.h"
index ddfdcad..2b91368 100644 (file)
@@ -134,6 +134,19 @@ return___nitni = kernel_Float_Float_rand_0( recv___nitni );
 return___nit = BOX_Float(return___nitni);
 return return___nit;
 }
+/* out/indirect function for math::Float::hypot_with */
+val_t Float_hypot_with___out( val_t recv, val_t b )
+{
+float recv___nitni;
+float b___nitni;
+float return___nitni;
+val_t return___nit;
+recv___nitni = UNBOX_Float(recv);
+b___nitni = UNBOX_Float(b);
+return___nitni = hypotf( recv___nitni, b___nitni );
+return___nit = BOX_Float(return___nitni);
+return return___nit;
+}
 /* out/indirect function for math::Object::atan2 */
 val_t Object_atan2___out( val_t recv, val_t x, val_t y )
 {
index c9acd68..4f0d19a 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_Object{
 } Object;
 #endif
 
-#include "math_nit.h"
+#include ".././../lib/standard//math_nit.h"
 
 /* out/indirect function for math::Int::rand */
 val_t Int_rand___out( val_t recv );
@@ -48,6 +48,9 @@ val_t Float_exp___out( val_t recv );
 /* out/indirect function for math::Float::rand */
 val_t Float_rand___out( val_t recv );
 
+/* out/indirect function for math::Float::hypot_with */
+val_t Float_hypot_with___out( val_t recv, val_t b );
+
 /* out/indirect function for math::Object::atan2 */
 val_t Object_atan2___out( val_t recv, val_t x, val_t y );
 
index dd5e349..70710a3 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/metamodel. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/metamodel. */
 #ifndef metamodel_sep
 #define metamodel_sep
 #include "metamodel___vararg._sep.h"
index d6ae5f0..ab69f72 100644 (file)
@@ -166,6 +166,7 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
   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_metamodel___abstractmetamodel;
@@ -186,36 +187,41 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
   fra.me.REG[2] = p2;
   /* ./metamodel//abstractmetamodel.nit:56 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
       /* ./metamodel//abstractmetamodel.nit:58 */
       REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMConcreteClass, ID_metamodel___abstractmetamodel___MMConcreteClass)) /*cast MMConcreteClass*/;
@@ -226,36 +232,41 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
         /* ./metamodel//abstractmetamodel.nit:61 */
         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:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
             /* ./metamodel//abstractmetamodel.nit:62 */
             REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
@@ -265,27 +276,27 @@ void metamodel___abstractmetamodel___MMContext___add_local_class(val_t p0, val_t
             /* ./metamodel//abstractmetamodel.nit:63 */
             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:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = REGB2;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label2;
           }
         }
         label2: while(0);
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -873,7 +884,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./metamodel//abstractmetamodel.nit:177 */
     REGB2 = REGB1;
@@ -935,7 +946,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* ./metamodel//abstractmetamodel.nit:182 */
       REGB1 = REGB2;
@@ -1839,7 +1850,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___mmmodule(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___abstractmetamodel___MMLocalClass___global(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -1847,12 +1858,15 @@ val_t metamodel___abstractmetamodel___MMLocalClass___global(val_t p0){
   fra.me.line = 344;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalClass___global;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:344 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//abstractmetamodel.nit:345 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 345);
@@ -1860,10 +1874,10 @@ val_t metamodel___abstractmetamodel___MMLocalClass___global(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalClass___crhe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -1871,12 +1885,15 @@ val_t metamodel___abstractmetamodel___MMLocalClass___crhe(val_t p0){
   fra.me.line = 348;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalClass___crhe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:348 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//abstractmetamodel.nit:349 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 349);
@@ -1884,10 +1901,10 @@ val_t metamodel___abstractmetamodel___MMLocalClass___crhe(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalClass___cshe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -1895,12 +1912,15 @@ val_t metamodel___abstractmetamodel___MMLocalClass___cshe(val_t p0){
   fra.me.line = 352;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalClass___cshe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:352 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//abstractmetamodel.nit:353 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____cshe(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____cshe(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 353);
@@ -1908,10 +1928,10 @@ val_t metamodel___abstractmetamodel___MMLocalClass___cshe(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalClass___che(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -1919,12 +1939,15 @@ val_t metamodel___abstractmetamodel___MMLocalClass___che(val_t p0){
   fra.me.line = 356;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalClass___che;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//abstractmetamodel.nit:356 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//abstractmetamodel.nit:357 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____che(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____che(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 357);
@@ -1932,7 +1955,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___che(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalClass___global_properties(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2158,11 +2181,11 @@ val_t metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_metamodel___abstractmetamodel, 410);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
     /* ./metamodel//abstractmetamodel.nit:410 */
@@ -2170,7 +2193,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./metamodel//abstractmetamodel.nit:410 */
       REGB2 = REGB1;
@@ -2335,6 +2358,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___super_methods_named(val_t p
   struct {struct stack_frame_t me; val_t MORE_REG[5];} 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_metamodel___abstractmetamodel;
@@ -2363,50 +2387,55 @@ val_t metamodel___abstractmetamodel___MMLocalClass___super_methods_named(val_t p
   fra.me.REG[2] = fra.me.REG[0];
   /* ./metamodel//abstractmetamodel.nit:465 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* ./metamodel//abstractmetamodel.nit:467 */
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___method(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       /* ./metamodel//abstractmetamodel.nit:469 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -2714,7 +2743,7 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
       if (UNTAG_Bool(REGB1)) {
         /* ./metamodel//abstractmetamodel.nit:526 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:219 */
+        /* ./../lib/standard//kernel.nit:236 */
         REGB1 = TAG_Int(-UNTAG_Int(REGB1));
         /* ./metamodel//abstractmetamodel.nit:526 */
         REGB0 = REGB1;
@@ -2728,7 +2757,12 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
   /* ./metamodel//abstractmetamodel.nit:529 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* ./metamodel//abstractmetamodel.nit:530 */
   if (UNTAG_Bool(REGB3)) {
@@ -2737,13 +2771,18 @@ val_t metamodel___abstractmetamodel___MMLocalClass___total_order_compare(val_t p
     REGB0 = REGB3;
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB1));
     /* ./metamodel//abstractmetamodel.nit:532 */
     if (UNTAG_Bool(REGB1)) {
       /* ./metamodel//abstractmetamodel.nit:533 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB1 = TAG_Int(-UNTAG_Int(REGB1));
       /* ./metamodel//abstractmetamodel.nit:533 */
       REGB0 = REGB1;
@@ -2899,7 +2938,7 @@ void metamodel___abstractmetamodel___MMGlobalProperty___add_local_property(val_t
   return;
 }
 val_t metamodel___abstractmetamodel___MMGlobalProperty___is_attribute(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2907,19 +2946,20 @@ val_t metamodel___abstractmetamodel___MMGlobalProperty___is_attribute(val_t p0){
   fra.me.line = 571;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMGlobalProperty___is_attribute;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//abstractmetamodel.nit:572 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMAttribute, ID_metamodel___abstractmetamodel___MMAttribute)) /*cast MMAttribute*/;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
 val_t metamodel___abstractmetamodel___MMGlobalProperty___is_method(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2927,12 +2967,13 @@ val_t metamodel___abstractmetamodel___MMGlobalProperty___is_method(val_t p0){
   fra.me.line = 574;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMGlobalProperty___is_method;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//abstractmetamodel.nit:575 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3115,7 +3156,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___local_class(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___abstractmetamodel___MMLocalProperty___global(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -3123,12 +3164,14 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___global(val_t p0){
   fra.me.line = 607;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalProperty___global;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//abstractmetamodel.nit:607 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalProperty____global(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalProperty____global(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 607);
@@ -3136,7 +3179,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___global(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalProperty___is_global_set(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3172,7 +3215,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___is_global_set(val_t p0){
   return REGB0;
 }
 val_t metamodel___abstractmetamodel___MMLocalProperty___prhe(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -3180,12 +3223,14 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___prhe(val_t p0){
   fra.me.line = 613;
   fra.me.meth = LOCATE_metamodel___abstractmetamodel___MMLocalProperty___prhe;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//abstractmetamodel.nit:613 */
-  fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalProperty____prhe(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalProperty____prhe(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___abstractmetamodel, 613);
@@ -3193,7 +3238,7 @@ val_t metamodel___abstractmetamodel___MMLocalProperty___prhe(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___abstractmetamodel___MMLocalProperty___mmmodule(val_t p0){
   struct {struct stack_frame_t me;} fra;
index 0fe5f36..d9c40df 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/abstractmetamodel. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/abstractmetamodel. */
 #ifndef metamodel___abstractmetamodel_sep
 #define metamodel___abstractmetamodel_sep
 #include "metamodel___partial_order._sep.h"
index 49b50e7..2b950f4 100644 (file)
@@ -17,38 +17,48 @@ 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:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./metamodel//genericity.nit:28 */
@@ -94,18 +104,18 @@ void metamodel___genericity___MMLocalClass___register_formal(val_t p0, val_t p1)
     nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_metamodel___genericity, 36);
   }
   fra.me.REG[2] = ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./metamodel//genericity.nit:36 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./metamodel//genericity.nit:36 */
     REGB2 = REGB1;
@@ -129,6 +139,7 @@ val_t metamodel___genericity___MMLocalClass___get_instantiate_type(val_t p0, val
   struct {struct stack_frame_t me; val_t MORE_REG[4];} 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_metamodel___genericity;
@@ -150,50 +161,55 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -253,11 +269,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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
         /* ./metamodel//genericity.nit:65 */
         REGB2 = REGB0;
@@ -270,14 +291,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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label1;
       }
     }
@@ -285,11 +306,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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
         /* ./metamodel//genericity.nit:71 */
         REGB2 = REGB0;
@@ -304,38 +330,48 @@ 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:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label2;
         label2: while(0);
         /* ./metamodel//genericity.nit:74 */
@@ -343,14 +379,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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label3;
       }
     }
@@ -432,6 +468,7 @@ val_t metamodel___genericity___MMLocalClass___is_generic(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_metamodel___genericity;
@@ -444,7 +481,12 @@ val_t metamodel___genericity___MMLocalClass___is_generic(val_t p0){
   /* ./metamodel//genericity.nit:91 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./metamodel//genericity.nit:91 */
   goto label1;
@@ -645,6 +687,7 @@ val_t metamodel___genericity___MMTypeGeneric___for_module(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___genericity;
@@ -682,48 +725,53 @@ 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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label1;
       }
     }
@@ -750,6 +798,7 @@ val_t metamodel___genericity___MMTypeGeneric___adapt_to(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___genericity;
@@ -774,48 +823,53 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
@@ -856,11 +910,11 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(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:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./metamodel//genericity.nit:160 */
@@ -870,18 +924,18 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 160);
   }
   fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./metamodel//genericity.nit:160 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./metamodel//genericity.nit:160 */
     REGB2 = REGB1;
@@ -894,18 +948,23 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
   }
   /* ./metamodel//genericity.nit:163 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB3)) {
       /* ./metamodel//genericity.nit:163 */
       REGB3 = REGB1;
@@ -916,76 +975,96 @@ 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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB4 = REGB3;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB5 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB6 = TAG_Bool(false);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label2;
       label2: while(0);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[3] = fra.me.REG[1];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label3;
       label3: while(0);
       /* ./metamodel//genericity.nit:164 */
@@ -1008,14 +1087,14 @@ val_t metamodel___genericity___MMTypeGeneric___params_equals(val_t p0, val_t p1)
         REGB2 = REGB3;
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label4;
     }
   }
@@ -1132,57 +1211,72 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___genericity, 180);
   }
   fra.me.REG[2] = ATTR_metamodel___genericity___MMTypeGeneric____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./metamodel//genericity.nit:182 */
@@ -1192,38 +1286,48 @@ 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:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label2;
       label2: while(0);
       /* ./metamodel//genericity.nit:182 */
@@ -1238,14 +1342,14 @@ val_t metamodel___genericity___MMTypeGeneric___is_subtype(val_t p0, val_t p1){
         REGB2 = TAG_Bool(false);
         goto label3;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label4;
     }
   }
@@ -1500,38 +1604,48 @@ val_t metamodel___genericity___MMTypeFormalParameter___adapt_to(val_t p0, val_t
   /* ./metamodel//genericity.nit:232 */
   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:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./metamodel//genericity.nit:233 */
index 1e62dc9..27cc90c 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/genericity. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/genericity. */
 #ifndef metamodel___genericity_sep
 #define metamodel___genericity_sep
 #include "metamodel___type_formal._sep.h"
index 7ed3a56..3af70ba 100644 (file)
@@ -1,5 +1,237 @@
 /* This C file is generated by NIT to compile module metamodel___inheritance. */
 #include "metamodel___inheritance._sep.h"
+void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  static val_t once_value_1; /* Once value */
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+      static val_t once_value_6; /* Once value */
+      static val_t once_value_7; /* Once value */
+  static val_t once_value_9; /* Once value */
+  static val_t once_value_10; /* Once value */
+  static val_t once_value_11; /* Once value */
+  static val_t once_value_12; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_metamodel___inheritance;
+  fra.me.line = 24;
+  fra.me.meth = LOCATE_metamodel___inheritance___MMContext___handle_property_conflict;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 7;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./metamodel//inheritance.nit:28 */
+  fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 28);
+  }
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./metamodel//inheritance.nit:29 */
+  fra.me.REG[4] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
+  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);
+    once_value_1 = fra.me.REG[5];
+    register_static_object(&once_value_1);
+  } else fra.me.REG[5] = once_value_1;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  /* ./metamodel//inheritance.nit:30 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_2 = fra.me.REG[4];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[4] = once_value_2;
+  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]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(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[5])(fra.me.REG[5], fra.me.REG[4]);
+  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);
+    once_value_3 = fra.me.REG[4];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[4] = once_value_3;
+  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]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
+  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);
+    once_value_4 = fra.me.REG[1];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[1] = once_value_4;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
+  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);
+    once_value_5 = fra.me.REG[1];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[1] = once_value_5;
+  fra.me.REG[1] = fra.me.REG[1];
+  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 */
+  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);
+  }
+  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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+    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:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:272 */
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+      /* ./metamodel//inheritance.nit:32 */
+      REGB1 = TAG_Int(3);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      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);
+        once_value_6 = fra.me.REG[6];
+        register_static_object(&once_value_6);
+      } else fra.me.REG[6] = once_value_6;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+      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);
+        once_value_7 = fra.me.REG[1];
+        register_static_object(&once_value_7);
+      } else fra.me.REG[1] = once_value_7;
+      fra.me.REG[1] = fra.me.REG[1];
+      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 */
+      REGB1 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      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 label8;
+    }
+  }
+  label8: while(0);
+  /* ./metamodel//inheritance.nit:34 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_9 = fra.me.REG[2];
+    register_static_object(&once_value_9);
+  } else fra.me.REG[2] = once_value_9;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
+  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[5])(fra.me.REG[5], fra.me.REG[2]);
+  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);
+    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[5])(fra.me.REG[5], fra.me.REG[2]);
+  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]);
+  /* ./metamodel//inheritance.nit:35 */
+  REGB0 = TAG_Int(3);
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_11 = fra.me.REG[2];
+    register_static_object(&once_value_11);
+  } else fra.me.REG[2] = once_value_11;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrder___to_dot(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  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);
+    once_value_12 = fra.me.REG[3];
+    register_static_object(&once_value_12);
+  } else fra.me.REG[3] = once_value_12;
+  fra.me.REG[3] = fra.me.REG[3];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+  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]);
+  /* ./metamodel//inheritance.nit:36 */
+  REGB0 = TAG_Int(1);
+  CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
 val_t metamodel___inheritance___MMModule___type_any(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
@@ -8,14 +240,14 @@ val_t metamodel___inheritance___MMModule___type_any(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_metamodel___inheritance;
-  fra.me.line = 24;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_metamodel___inheritance___MMModule___type_any;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:27 */
+  /* ./metamodel//inheritance.nit:44 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
@@ -31,7 +263,7 @@ val_t metamodel___inheritance___MMModule___type_any(val_t p0){
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:28 */
+  /* ./metamodel//inheritance.nit:45 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -46,14 +278,14 @@ val_t metamodel___inheritance___MMModule___type_any_extern(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_metamodel___inheritance;
-  fra.me.line = 31;
+  fra.me.line = 48;
   fra.me.meth = LOCATE_metamodel___inheritance___MMModule___type_any_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:34 */
+  /* ./metamodel//inheritance.nit:51 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Pointer");
@@ -69,7 +301,7 @@ val_t metamodel___inheritance___MMModule___type_any_extern(val_t p0){
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___class_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:35 */
+  /* ./metamodel//inheritance.nit:52 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
   goto label3;
   label3: while(0);
@@ -80,10 +312,11 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} 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_metamodel___inheritance;
-  fra.me.line = 38;
+  fra.me.line = 55;
   fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_global_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -92,9 +325,9 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:41 */
+  /* ./metamodel//inheritance.nit:58 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  /* ./metamodel//inheritance.nit:42 */
+  /* ./metamodel//inheritance.nit:59 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -111,57 +344,62 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 42);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 59);
   }
-  /* ./metamodel//inheritance.nit:43 */
+  /* ./metamodel//inheritance.nit:60 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(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_metamodel___inheritance, 43);
+    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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:44 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -183,25 +421,25 @@ void metamodel___inheritance___MMModule___import_global_classes(val_t p0){
         fra.me.REG[1] = NIT_NULL;
         fra.me.REG[2] = NIT_NULL;
         fra.me.REG[0] = p0;
-        /* ./metamodel//inheritance.nit:45 */
+        /* ./metamodel//inheritance.nit:62 */
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___global_classes(closctx->REG[0])(closctx->REG[0]);
         REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
         if (UNTAG_Bool(REGB0)) {
           goto label2;
         }
-        /* ./metamodel//inheritance.nit:46 */
+        /* ./metamodel//inheritance.nit:63 */
         REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_classes(closctx->REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 46);
+          nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 63);
         }
         fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_classes(closctx->REG[0]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-        /* ./metamodel//inheritance.nit:47 */
+        /* ./metamodel//inheritance.nit:64 */
         REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(closctx->REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_global_class_by_name", LOCATE_metamodel___inheritance, 47);
+          nit_abort("Uninitialized attribute %s", "_global_class_by_name", LOCATE_metamodel___inheritance, 64);
         }
         fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_class_by_name(closctx->REG[0]);
         fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalClass___name(fra.me.REG[0])(fra.me.REG[0]);
@@ -216,18 +454,18 @@ void metamodel___inheritance___MMModule___import_local_classes(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 53;
+  fra.me.line = 70;
   fra.me.meth = LOCATE_metamodel___inheritance___MMModule___import_local_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:56 */
+  /* ./metamodel//inheritance.nit:73 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 56);
+    nit_abort("Uninitialized attribute %s", "_global_classes", LOCATE_metamodel___inheritance, 73);
   }
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____global_classes(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMModule___import_local_classes_1));
@@ -251,18 +489,18 @@ void metamodel___inheritance___MMModule___import_local_classes(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./metamodel//inheritance.nit:57 */
+    /* ./metamodel//inheritance.nit:74 */
     REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(closctx->REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_local_class_by_global", LOCATE_metamodel___inheritance, 57);
+      nit_abort("Uninitialized attribute %s", "_local_class_by_global", LOCATE_metamodel___inheritance, 74);
     }
     fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMModule____local_class_by_global(closctx->REG[0]);
     REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
       goto label2;
     }
-    /* ./metamodel//inheritance.nit:58 */
+    /* ./metamodel//inheritance.nit:75 */
     fra.me.REG[0] = NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init(closctx->REG[0], fra.me.REG[0]);
     label2: while(0);
     stack_frame_head = fra.me.prev;
@@ -277,7 +515,7 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(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_metamodel___inheritance;
-  fra.me.line = 71;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_super_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -286,21 +524,21 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:74 */
+  /* ./metamodel//inheritance.nit:91 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:76 */
+    /* ./metamodel//inheritance.nit:93 */
     goto label1;
   } else {
-    /* ./metamodel//inheritance.nit:77 */
+    /* ./metamodel//inheritance.nit:94 */
     REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_metamodel___inheritance, 77);
+      nit_abort("Uninitialized attribute %s", "_computing_super", LOCATE_metamodel___inheritance, 94);
     }
     REGB0 = ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:78 */
+      /* ./metamodel//inheritance.nit:95 */
       fra.me.REG[1] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Int(3);
       fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -326,34 +564,34 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
       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___stream___OStream___write(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./metamodel//inheritance.nit:79 */
+      /* ./metamodel//inheritance.nit:96 */
       REGB0 = TAG_Int(1);
       CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
     }
   }
-  /* ./metamodel//inheritance.nit:81 */
+  /* ./metamodel//inheritance.nit:98 */
   REGB0 = TAG_Bool(true);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:83 */
+  /* ./metamodel//inheritance.nit:100 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//inheritance.nit:84 */
+  /* ./metamodel//inheritance.nit:101 */
   CALL_metamodel___inheritance___MMLocalClass___add_explicit_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:85 */
+  /* ./metamodel//inheritance.nit:102 */
   CALL_metamodel___inheritance___MMLocalClass___add_super_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:86 */
+  /* ./metamodel//inheritance.nit:103 */
   CALL_metamodel___inheritance___MMLocalClass___add_default_any_class(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:87 */
+  /* ./metamodel//inheritance.nit:104 */
   CALL_metamodel___inheritance___MMLocalClass___compute_super_parents(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:88 */
+  /* ./metamodel//inheritance.nit:105 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ./metamodel//inheritance.nit:89 */
+  /* ./metamodel//inheritance.nit:106 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:90 */
+  /* ./metamodel//inheritance.nit:107 */
   fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:91 */
+  /* ./metamodel//inheritance.nit:108 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMModule___set_supers_class(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:92 */
+  /* ./metamodel//inheritance.nit:109 */
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -370,9 +608,9 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 92);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 109);
   }
-  /* ./metamodel//inheritance.nit:93 */
+  /* ./metamodel//inheritance.nit:110 */
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____cshe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -389,9 +627,9 @@ void metamodel___inheritance___MMLocalClass___compute_super_classes(val_t p0){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 93);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 110);
   }
-  /* ./metamodel//inheritance.nit:94 */
+  /* ./metamodel//inheritance.nit:111 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
   label1: while(0);
@@ -404,7 +642,7 @@ void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 97;
+  fra.me.line = 114;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_ancestors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -412,23 +650,25 @@ void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:100 */
+  /* ./metamodel//inheritance.nit:117 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 100);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 117);
   }
-  /* ./metamodel//inheritance.nit:101 */
+  /* ./metamodel//inheritance.nit:118 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:103 */
+  /* ./metamodel//inheritance.nit:120 */
   fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___build_ancestors(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___group_ancestors(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:104 */
+  /* ./metamodel//inheritance.nit:121 */
   fra.me.REG[2] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]) = fra.me.REG[2];
+  /* ./metamodel//inheritance.nit:123 */
+  fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___compute_ancestors_2));
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -441,7 +681,6 @@ void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
     val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
-    /* ./metamodel//inheritance.nit:106 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_metamodel___inheritance;
     fra.me.line = 0;
@@ -454,25 +693,25 @@ void metamodel___inheritance___MMLocalClass___compute_ancestors(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./metamodel//inheritance.nit:107 */
+    /* ./metamodel//inheritance.nit:124 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
     REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB2)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
-      /* ./metamodel//inheritance.nit:107 */
+      /* ./metamodel//inheritance.nit:124 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./metamodel//inheritance.nit:108 */
+      /* ./metamodel//inheritance.nit:125 */
       fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
       CALL_metamodel___static_type___MMLocalClass___add_ancestor(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
     } else {
-      /* ./metamodel//inheritance.nit:110 */
+      /* ./metamodel//inheritance.nit:127 */
       fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
-      /* ./metamodel//inheritance.nit:111 */
+      /* ./metamodel//inheritance.nit:128 */
       fra.me.REG[0] = CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
       CALL_metamodel___static_type___MMLocalClass___add_ancestor(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
     }
@@ -483,10 +722,11 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
   struct {struct stack_frame_t me; val_t MORE_REG[4];} 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_metamodel___inheritance;
-  fra.me.line = 118;
+  fra.me.line = 135;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___inherit_global_properties;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -496,78 +736,83 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:121 */
+  /* ./metamodel//inheritance.nit:138 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 121);
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 138);
   }
   REGB0 = ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:122 */
+  /* ./metamodel//inheritance.nit:139 */
   REGB0 = TAG_Bool(true);
   ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:124 */
+  /* ./metamodel//inheritance.nit:141 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 124);
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 141);
   }
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:125 */
+  /* ./metamodel//inheritance.nit:142 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 125);
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 142);
   }
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:126 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:127 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label4;
     }
   }
@@ -592,14 +837,14 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
         fra.me.REG[1] = NIT_NULL;
         fra.me.REG[2] = NIT_NULL;
         fra.me.REG[0] = p0;
-        /* ./metamodel//inheritance.nit:128 */
+        /* ./metamodel//inheritance.nit:145 */
         REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
         if (UNTAG_Bool(REGB0)) {
           goto label3;
         }
-        /* ./metamodel//inheritance.nit:130 */
+        /* ./metamodel//inheritance.nit:147 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
-        /* ./metamodel//inheritance.nit:134 */
+        /* ./metamodel//inheritance.nit:151 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
         if (UNTAG_Bool(REGB0)) {
           fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
@@ -618,28 +863,28 @@ void metamodel___inheritance___MMLocalClass___inherit_global_properties(val_t p0
           REGB0 = REGB1;
         }
         if (UNTAG_Bool(REGB0)) {
-          /* ./metamodel//inheritance.nit:136 */
+          /* ./metamodel//inheritance.nit:153 */
           goto label3;
         }
-        /* ./metamodel//inheritance.nit:140 */
+        /* ./metamodel//inheritance.nit:157 */
         fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
         REGB0 = TAG_Int(0);
-        REGB0 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+        REGB0 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
         REGB1 = TAG_Char('@');
         REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
         if (UNTAG_Bool(REGB2)) {
         } else {
-          /* ./../lib/standard//kernel.nit:350 */
+          /* ./../lib/standard//kernel.nit:378 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
-          /* ./metamodel//inheritance.nit:140 */
+          /* ./metamodel//inheritance.nit:157 */
           REGB2 = REGB1;
         }
         if (UNTAG_Bool(REGB2)) {
           goto label3;
         }
-        /* ./metamodel//inheritance.nit:142 */
+        /* ./metamodel//inheritance.nit:159 */
         CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
         label3: while(0);
         stack_frame_head = fra.me.prev;
@@ -651,42 +896,42 @@ val_t metamodel___inheritance___MMLocalClass___global_properties(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 147;
+  fra.me.line = 164;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___global_properties;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:149 */
+  /* ./metamodel//inheritance.nit:166 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 149);
+    nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_metamodel___inheritance, 166);
   }
   REGB0 = ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 149);
+      nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 166);
     }
     fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:150 */
+  /* ./metamodel//inheritance.nit:167 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 150);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 167);
   }
-  /* ./metamodel//inheritance.nit:151 */
+  /* ./metamodel//inheritance.nit:168 */
   CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:152 */
+  /* ./metamodel//inheritance.nit:169 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 152);
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 169);
   }
   fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
   fra.me.REG[1] = fra.me.REG[0];
@@ -700,10 +945,11 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val
   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_metamodel___inheritance;
-  fra.me.line = 155;
+  fra.me.line = 172;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___has_global_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -714,84 +960,89 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property(val_t p0, val
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:159 */
+  /* ./metamodel//inheritance.nit:176 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:161 */
+  /* ./metamodel//inheritance.nit:178 */
   REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 161);
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 178);
   }
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:162 */
+  /* ./metamodel//inheritance.nit:179 */
   REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
     REGB0 = REGB1;
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:163 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
-      /* ./metamodel//inheritance.nit:164 */
+      /* ./metamodel//inheritance.nit:181 */
       REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
       if (UNTAG_Bool(REGB2)) {
-        /* ./metamodel//inheritance.nit:165 */
+        /* ./metamodel//inheritance.nit:182 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        /* ./metamodel//inheritance.nit:166 */
+        /* ./metamodel//inheritance.nit:183 */
         REGB2 = TAG_Bool(true);
         REGB0 = REGB2;
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//inheritance.nit:169 */
+  /* ./metamodel//inheritance.nit:186 */
   REGB1 = TAG_Bool(false);
   REGB0 = REGB1;
   goto label1;
@@ -809,7 +1060,7 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 172;
+  fra.me.line = 189;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___has_global_property_by_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -824,139 +1075,144 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:176 */
+  /* ./metamodel//inheritance.nit:193 */
   REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:179 */
+  /* ./metamodel//inheritance.nit:196 */
   CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:181 */
+  /* ./metamodel//inheritance.nit:198 */
   REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 181);
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 198);
   }
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB1)) {
-    /* ./metamodel//inheritance.nit:182 */
+    /* ./metamodel//inheritance.nit:199 */
     REGB1 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 182);
+      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 199);
     }
     fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 182);
+      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 199);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./metamodel//inheritance.nit:182 */
+    /* ./metamodel//inheritance.nit:199 */
     REGB2 = TAG_Int(1);
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
-      /* ./metamodel//inheritance.nit:182 */
+      /* ./metamodel//inheritance.nit:199 */
       REGB3 = REGB2;
     }
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:184 */
+  /* ./metamodel//inheritance.nit:201 */
   REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 184);
+    nit_abort("Uninitialized attribute %s", "_global_properties", LOCATE_metamodel___inheritance, 201);
   }
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global_properties(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:186 */
+  /* ./metamodel//inheritance.nit:203 */
   REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 186);
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 203);
   }
   fra.me.REG[3] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
   REGB3 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   if (UNTAG_Bool(REGB3)) {
-    /* ./metamodel//inheritance.nit:187 */
+    /* ./metamodel//inheritance.nit:204 */
     REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 187);
+      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 204);
     }
     fra.me.REG[3] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
     fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   } else {
-    /* ./metamodel//inheritance.nit:189 */
+    /* ./metamodel//inheritance.nit:206 */
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[3] = fra.me.REG[4];
-    /* ./metamodel//inheritance.nit:190 */
+    /* ./metamodel//inheritance.nit:207 */
     REGB3 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 190);
+      nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 207);
     }
     fra.me.REG[4] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./metamodel//inheritance.nit:192 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    REGB1 = TAG_Bool(VAL_ISA(REGB2, 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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-      /* ./metamodel//inheritance.nit:193 */
+      /* ./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]);
       if (UNTAG_Bool(REGB2)) {
-        /* ./metamodel//inheritance.nit:194 */
+        /* ./metamodel//inheritance.nit:211 */
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
-        /* ./metamodel//inheritance.nit:195 */
+        /* ./metamodel//inheritance.nit:212 */
         REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
         REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
         if (UNTAG_Bool(REGB2)) {
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
         }
-        /* ./metamodel//inheritance.nit:196 */
+        /* ./metamodel//inheritance.nit:213 */
         REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[6])(fra.me.REG[6]);
         if (UNTAG_Bool(REGB2)) {
           fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
@@ -977,7 +1233,7 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
         if (UNTAG_Bool(REGB2)) {
           goto label2;
         }
-        /* ./metamodel//inheritance.nit:197 */
+        /* ./metamodel//inheritance.nit:214 */
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[8])(fra.me.REG[8]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
@@ -991,64 +1247,64 @@ val_t metamodel___inheritance___MMLocalClass___has_global_property_by_name(val_t
             REGB4 = TAG_Bool(false);
             REGB1 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
-            /* ./metamodel//inheritance.nit:197 */
+            /* ./metamodel//inheritance.nit:214 */
             REGB1 = REGB2;
           }
         }
         if (UNTAG_Bool(REGB1)) {
           goto label2;
         }
-        /* ./metamodel//inheritance.nit:198 */
+        /* ./metamodel//inheritance.nit:215 */
         REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 198);
+          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 215);
         }
         REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         if (UNTAG_Bool(REGB1)) {
           goto label2;
         }
-        /* ./metamodel//inheritance.nit:199 */
+        /* ./metamodel//inheritance.nit:216 */
         REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 199);
+          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 216);
         }
         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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./metamodel//inheritance.nit:202 */
+  /* ./metamodel//inheritance.nit:219 */
   REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 202);
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 219);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./metamodel//inheritance.nit:202 */
+  /* ./metamodel//inheritance.nit:219 */
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB3)==(REGB1));
-    /* ./metamodel//inheritance.nit:202 */
+    /* ./metamodel//inheritance.nit:219 */
     REGB2 = REGB1;
   }
   REGB0 = REGB2;
@@ -1063,7 +1319,7 @@ void metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 205;
+  fra.me.line = 222;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1074,29 +1330,29 @@ void metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:208 */
+  /* ./metamodel//inheritance.nit:225 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 208);
+    nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_metamodel___inheritance, 225);
   }
   fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:209 */
+  /* ./metamodel//inheritance.nit:226 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:211 */
+  /* ./metamodel//inheritance.nit:228 */
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:212 */
+    /* ./metamodel//inheritance.nit:229 */
     fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   } else {
-    /* ./metamodel//inheritance.nit:214 */
+    /* ./metamodel//inheritance.nit:231 */
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[3] = fra.me.REG[4];
-    /* ./metamodel//inheritance.nit:215 */
+    /* ./metamodel//inheritance.nit:232 */
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./metamodel//inheritance.nit:217 */
+  /* ./metamodel//inheritance.nit:234 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1107,7 +1363,7 @@ void metamodel___inheritance___MMLocalClass___add_direct_parent(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 220;
+  fra.me.line = 237;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_direct_parent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1115,11 +1371,11 @@ void metamodel___inheritance___MMLocalClass___add_direct_parent(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:223 */
+  /* ./metamodel//inheritance.nit:240 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 223);
+    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 240);
   }
   fra.me.REG[0] = ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -1133,14 +1389,14 @@ val_t metamodel___inheritance___MMLocalClass___computed_super_classes(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 226;
+  fra.me.line = 243;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___computed_super_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:229 */
+  /* ./metamodel//inheritance.nit:246 */
   fra.me.REG[1] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1186,13 +1442,13 @@ val_t metamodel___inheritance___MMLocalClass___computed_ancestors(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 232;
+  fra.me.line = 249;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___computed_ancestors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:235 */
+  /* ./metamodel//inheritance.nit:252 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1219,7 +1475,7 @@ val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 238;
+  fra.me.line = 255;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___ancestor_for;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1231,7 +1487,7 @@ val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:242 */
+  /* ./metamodel//inheritance.nit:259 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___ancestors(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1248,52 +1504,52 @@ val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 242);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 259);
   }
-  /* ./metamodel//inheritance.nit:244 */
+  /* ./metamodel//inheritance.nit:261 */
   fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 244);
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 261);
   }
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:245 */
+    /* ./metamodel//inheritance.nit:262 */
     fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 245);
+      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 262);
     }
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     goto label1;
   }
-  /* ./metamodel//inheritance.nit:247 */
+  /* ./metamodel//inheritance.nit:264 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./metamodel//inheritance.nit:248 */
+  /* ./metamodel//inheritance.nit:265 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 248);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 265);
   }
-  /* ./metamodel//inheritance.nit:250 */
+  /* ./metamodel//inheritance.nit:267 */
   fra.me.REG[4] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 250);
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 267);
   }
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:251 */
+    /* ./metamodel//inheritance.nit:268 */
     fra.me.REG[4] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 251);
+      nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 268);
     }
     fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   } else {
-    /* ./metamodel//inheritance.nit:252 */
+    /* ./metamodel//inheritance.nit:269 */
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[5] = ATTR_metamodel___abstractmetamodel___MMLocalClass____global(fra.me.REG[0]);
     REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
@@ -1303,25 +1559,25 @@ val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:253 */
+      /* ./metamodel//inheritance.nit:270 */
       fra.me.REG[5] = NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[0], fra.me.REG[1]);
       fra.me.REG[3] = fra.me.REG[5];
     } else {
-      /* ./metamodel//inheritance.nit:255 */
+      /* ./metamodel//inheritance.nit:272 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[4] = NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[5], fra.me.REG[4]);
       fra.me.REG[3] = fra.me.REG[4];
     }
   }
-  /* ./metamodel//inheritance.nit:257 */
+  /* ./metamodel//inheritance.nit:274 */
   fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____ancestors(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 257);
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 274);
   }
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
-  /* ./metamodel//inheritance.nit:258 */
+  /* ./metamodel//inheritance.nit:275 */
   fra.me.REG[2] = fra.me.REG[3];
   goto label1;
   label1: while(0);
@@ -1329,49 +1585,72 @@ val_t metamodel___inheritance___MMLocalClass___ancestor_for(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 val_t metamodel___inheritance___MMLocalClass_____bra(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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_metamodel___inheritance;
-  fra.me.line = 261;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass_____bra;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:263 */
+  /* ./metamodel//inheritance.nit:280 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 263);
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 280);
   }
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:264 */
+    /* ./metamodel//inheritance.nit:281 */
     REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 264);
+      nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 281);
     }
     fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     goto label1;
   } else {
-    /* ./metamodel//inheritance.nit:265 */
+    /* ./metamodel//inheritance.nit:282 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:266 */
-      fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-      fra.me.REG[2] = fra.me.REG[1];
+      /* ./metamodel//inheritance.nit:283 */
+      fra.me.REG[3] = CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+      fra.me.REG[2] = fra.me.REG[3];
       goto label1;
     } else {
-      /* ./metamodel//inheritance.nit:268 */
-      nit_abort("Aborted", NULL, LOCATE_metamodel___inheritance, 268);
+      /* ./metamodel//inheritance.nit:284 */
+      REGB0 = CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(fra.me.REG[0])(fra.me.REG[0]);
+      REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+      if (UNTAG_Bool(REGB0)) {
+        /* ./metamodel//inheritance.nit:285 */
+        CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./metamodel//inheritance.nit:286 */
+        CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./metamodel//inheritance.nit:287 */
+        CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./metamodel//inheritance.nit:288 */
+        REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 288);
+        }
+        /* ./metamodel//inheritance.nit:289 */
+        fra.me.REG[1] = CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+        fra.me.REG[2] = fra.me.REG[1];
+        goto label1;
+      } else {
+        /* ./metamodel//inheritance.nit:291 */
+        nit_abort("Aborted", NULL, LOCATE_metamodel___inheritance, 291);
+      }
     }
   }
   label1: while(0);
@@ -1383,6 +1662,7 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -1390,7 +1670,7 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
         static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 272;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_default_any_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1401,7 +1681,7 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:276 */
+  /* ./metamodel//inheritance.nit:299 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
   if (!once_value_1) {
     if (!once_value_2) {
@@ -1425,73 +1705,78 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./metamodel//inheritance.nit:277 */
+    /* ./metamodel//inheritance.nit:300 */
     REGB0 = TAG_Bool(false);
-    /* ./metamodel//inheritance.nit:278 */
+    /* ./metamodel//inheritance.nit:301 */
     REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
     if (UNTAG_Bool(REGB1)) {
-      /* ./metamodel//inheritance.nit:279 */
+      /* ./metamodel//inheritance.nit:302 */
       REGB1 = TAG_Bool(true);
       REGB0 = REGB1;
     } else {
-      /* ./metamodel//inheritance.nit:280 */
+      /* ./metamodel//inheritance.nit:303 */
       fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[3])(fra.me.REG[3]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./metamodel//inheritance.nit:281 */
+        /* ./metamodel//inheritance.nit:304 */
         REGB1 = TAG_Bool(true);
         REGB0 = REGB1;
-        /* ./../lib/standard//collection//array.nit:231 */
+        /* ./../lib/standard//collection//array.nit:266 */
         fra.me.REG[3] = fra.me.REG[1];
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            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:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-            /* ./metamodel//inheritance.nit:283 */
+            /* ./metamodel//inheritance.nit:306 */
             fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
             REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
             if (UNTAG_Bool(REGB2)) {
-              /* ./metamodel//inheritance.nit:284 */
+              /* ./metamodel//inheritance.nit:307 */
               REGB2 = TAG_Bool(false);
               REGB0 = REGB2;
-              /* ./metamodel//inheritance.nit:285 */
+              /* ./metamodel//inheritance.nit:308 */
               goto label3;
             }
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = REGB2;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label4;
           }
         }
@@ -1499,9 +1784,9 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
         label3: while(0);
       }
     }
-    /* ./metamodel//inheritance.nit:290 */
+    /* ./metamodel//inheritance.nit:313 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:292 */
+      /* ./metamodel//inheritance.nit:315 */
       fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[0])(fra.me.REG[0]);
       if (!once_value_5) {
         if (!once_value_6) {
@@ -1532,25 +1817,25 @@ void metamodel___inheritance___MMLocalClass___add_default_any_class(val_t p0, va
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./metamodel//inheritance.nit:293 */
+        /* ./metamodel//inheritance.nit:316 */
         fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[3] = CALL_metamodel___inheritance___MMModule___type_any_extern(fra.me.REG[3])(fra.me.REG[3]);
       } else {
-        /* ./metamodel//inheritance.nit:295 */
+        /* ./metamodel//inheritance.nit:318 */
         fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[2] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[3] = fra.me.REG[2];
       }
-      /* ./metamodel//inheritance.nit:297 */
+      /* ./metamodel//inheritance.nit:320 */
       REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 297);
+        nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 320);
       }
       fra.me.REG[2] = CALL_metamodel___static_type___MMType___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[2]);
-      /* ./metamodel//inheritance.nit:298 */
+      /* ./metamodel//inheritance.nit:321 */
       fra.me.REG[3] = NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(fra.me.REG[0], fra.me.REG[3]);
-      /* ./metamodel//inheritance.nit:299 */
+      /* ./metamodel//inheritance.nit:322 */
       CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
     }
   }
@@ -1562,10 +1847,11 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
   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_metamodel___inheritance;
-  fra.me.line = 304;
+  fra.me.line = 327;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_super_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -1579,7 +1865,7 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:307 */
+  /* ./metamodel//inheritance.nit:330 */
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1596,110 +1882,120 @@ void metamodel___inheritance___MMLocalClass___add_super_classes(val_t p0, val_t
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 307);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 330);
   }
-  /* ./metamodel//inheritance.nit:308 */
+  /* ./metamodel//inheritance.nit:331 */
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 308);
+    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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:309 */
+      /* ./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:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       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, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB2)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../lib/standard//collection//array.nit:273 */
           REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-          /* ./metamodel//inheritance.nit:310 */
+          /* ./metamodel//inheritance.nit:333 */
           REGB2 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_metamodel___inheritance, 310);
+            nit_abort("Uninitialized attribute %s", "_mmmodule", LOCATE_metamodel___inheritance, 333);
           }
           fra.me.REG[7] = ATTR_metamodel___abstractmetamodel___MMLocalClass____mmmodule(fra.me.REG[0]);
           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:311 */
+          /* ./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:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = REGB2;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -1711,10 +2007,11 @@ void metamodel___inheritance___MMLocalClass___add_explicit_classes(val_t p0, val
   struct {struct stack_frame_t me; val_t MORE_REG[3];} 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_metamodel___inheritance;
-  fra.me.line = 316;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___add_explicit_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1724,55 +2021,60 @@ void metamodel___inheritance___MMLocalClass___add_explicit_classes(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:319 */
+  /* ./metamodel//inheritance.nit:342 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 319);
+    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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:320 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
@@ -1784,10 +2086,11 @@ void metamodel___inheritance___MMLocalClass___compute_super_parents(val_t p0, va
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_metamodel___inheritance;
-  fra.me.line = 324;
+  fra.me.line = 347;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___compute_super_parents;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1796,47 +2099,52 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:328 */
+      /* ./metamodel//inheritance.nit:351 */
       CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
@@ -1852,7 +2160,7 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 332;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___build_ancestors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1863,9 +2171,9 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:335 */
+  /* ./metamodel//inheritance.nit:358 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//inheritance.nit:337 */
+  /* ./metamodel//inheritance.nit:360 */
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1882,47 +2190,52 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 337);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 360);
   }
-  /* ./metamodel//inheritance.nit:338 */
+  /* ./metamodel//inheritance.nit:361 */
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____crhe(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 338);
+    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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:339 */
+      /* ./metamodel//inheritance.nit:362 */
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[0]));
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -1932,63 +2245,68 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 339);
+        nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 362);
       }
-      /* ./metamodel//inheritance.nit:340 */
+      /* ./metamodel//inheritance.nit:363 */
       fra.me.REG[4] = NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[0], fra.me.REG[4]);
-      /* ./metamodel//inheritance.nit:341 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./metamodel//inheritance.nit:343 */
+  /* ./metamodel//inheritance.nit:366 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_direct_parents", LOCATE_metamodel___inheritance, 343);
+    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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:344 */
+      /* ./metamodel//inheritance.nit:367 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[0]));
       if (UNTAG_Bool(REGB1)) {
@@ -1999,23 +2317,23 @@ val_t metamodel___inheritance___MMLocalClass___build_ancestors(val_t p0){
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 344);
+        nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 367);
       }
-      /* ./metamodel//inheritance.nit:345 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//inheritance.nit:347 */
+  /* ./metamodel//inheritance.nit:370 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -2025,10 +2343,11 @@ val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p
   struct {struct stack_frame_t me; val_t MORE_REG[6];} 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_metamodel___inheritance;
-  fra.me.line = 350;
+  fra.me.line = 373;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___group_ancestors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -2041,70 +2360,75 @@ val_t metamodel___inheritance___MMLocalClass___group_ancestors(val_t p0, val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:354 */
+  /* ./metamodel//inheritance.nit:377 */
   fra.me.REG[0] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:356 */
+      /* ./metamodel//inheritance.nit:379 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMAncestor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./metamodel//inheritance.nit:360 */
+      /* ./metamodel//inheritance.nit:383 */
       CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./metamodel//inheritance.nit:361 */
+      /* ./metamodel//inheritance.nit:384 */
       REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./metamodel//inheritance.nit:362 */
+        /* ./metamodel//inheritance.nit:385 */
         fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
       } else {
-        /* ./metamodel//inheritance.nit:364 */
+        /* ./metamodel//inheritance.nit:387 */
         fra.me.REG[6] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
         fra.me.REG[5] = fra.me.REG[6];
-        /* ./metamodel//inheritance.nit:365 */
+        /* ./metamodel//inheritance.nit:388 */
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
       }
-      /* ./metamodel//inheritance.nit:367 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./metamodel//inheritance.nit:369 */
+  /* ./metamodel//inheritance.nit:392 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -2114,6 +2438,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_3; /* Once value */
     static val_t once_value_4; /* Once value */
@@ -2121,7 +2446,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 372;
+  fra.me.line = 395;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___merge_ancestors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2132,25 +2457,30 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:375 */
+  /* ./metamodel//inheritance.nit:398 */
   fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
-  /* ./metamodel//inheritance.nit:376 */
+  /* ./metamodel//inheritance.nit:399 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMLocalClass___merge_ancestors_1));
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./metamodel//inheritance.nit:398 */
+  /* ./metamodel//inheritance.nit:421 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./metamodel//inheritance.nit:398 */
+  /* ./metamodel//inheritance.nit:421 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./metamodel//inheritance.nit:399 */
+    /* ./metamodel//inheritance.nit:422 */
     fra.me.REG[2] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Int(5);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -2196,11 +2526,11 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
     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]);
-    /* ./metamodel//inheritance.nit:400 */
+    /* ./metamodel//inheritance.nit:423 */
     REGB1 = TAG_Int(1);
     CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB1);
   }
-  /* ./metamodel//inheritance.nit:402 */
+  /* ./metamodel//inheritance.nit:425 */
   fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
   goto label7;
   label7: while(0);
@@ -2214,7 +2544,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
-    /* ./metamodel//inheritance.nit:377 */
+    /* ./metamodel//inheritance.nit:400 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_metamodel___inheritance;
     fra.me.line = 0;
@@ -2229,11 +2559,11 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./metamodel//inheritance.nit:378 */
+    /* ./metamodel//inheritance.nit:401 */
     fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___iterator(closctx->REG[1])(closctx->REG[1]);
-    /* ./metamodel//inheritance.nit:379 */
+    /* ./metamodel//inheritance.nit:402 */
     REGB0 = TAG_Bool(true);
-    /* ./metamodel//inheritance.nit:380 */
+    /* ./metamodel//inheritance.nit:403 */
     while(1) {
       REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
       if (UNTAG_Bool(REGB1)) {
@@ -2243,7 +2573,7 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./metamodel//inheritance.nit:382 */
+        /* ./metamodel//inheritance.nit:405 */
         fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
         REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[2]));
         if (UNTAG_Bool(REGB1)) {
@@ -2251,19 +2581,19 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
           REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
           REGB1 = REGB2;
         }
-        /* ./metamodel//inheritance.nit:383 */
+        /* ./metamodel//inheritance.nit:406 */
         fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
         REGB1 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[2])(closctx->REG[2], fra.me.REG[2]);
-        /* ./metamodel//inheritance.nit:384 */
+        /* ./metamodel//inheritance.nit:407 */
         fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
         REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 384);
+          nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 407);
         }
         fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
         REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ./metamodel//inheritance.nit:386 */
+        /* ./metamodel//inheritance.nit:409 */
         fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
         REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[3]));
         if (UNTAG_Bool(REGB1)) {
@@ -2280,68 +2610,57 @@ val_t metamodel___inheritance___MMLocalClass___merge_ancestors(val_t p0, val_t p
         }
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
         if (UNTAG_Bool(REGB1)) {
-          /* ./metamodel//inheritance.nit:387 */
+          /* ./metamodel//inheritance.nit:410 */
           fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
           REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 387);
+            nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 410);
           }
           fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[3])(fra.me.REG[3]);
           fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
           REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
         } else {
-          /* ./metamodel//inheritance.nit:386 */
+          /* ./metamodel//inheritance.nit:409 */
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./metamodel//inheritance.nit:388 */
+          /* ./metamodel//inheritance.nit:411 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
-          /* ./metamodel//inheritance.nit:389 */
+          /* ./metamodel//inheritance.nit:412 */
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         }
-        /* ./metamodel//inheritance.nit:391 */
+        /* ./metamodel//inheritance.nit:414 */
         CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
       } else {
-        /* ./metamodel//inheritance.nit:380 */
+        /* ./metamodel//inheritance.nit:403 */
         goto label2;
       }
     }
     label2: while(0);
-    /* ./metamodel//inheritance.nit:393 */
+    /* ./metamodel//inheritance.nit:416 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:394 */
+      /* ./metamodel//inheritance.nit:417 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
     }
     stack_frame_head = fra.me.prev;
     return;
   }
 val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
   val_t tmp;
-        static val_t once_value_2; /* Once value */
-        static val_t once_value_3; /* Once value */
-        static val_t once_value_4; /* Once value */
-        static val_t once_value_5; /* Once value */
-        static val_t once_value_6; /* Once value */
-            static val_t once_value_7; /* Once value */
-            static val_t once_value_8; /* Once value */
-        static val_t once_value_10; /* Once value */
-        static val_t once_value_11; /* Once value */
-        static val_t once_value_12; /* Once value */
-        static val_t once_value_13; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 405;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalClass___inherit_local_property;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -2350,344 +2669,166 @@ val_t metamodel___inheritance___MMLocalClass___inherit_local_property(val_t p0,
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
-  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:410 */
+  /* ./metamodel//inheritance.nit:433 */
   REGB0 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 410);
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 433);
   }
   fra.me.REG[2] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 410);
+    nit_abort("Assert failed", NULL, LOCATE_metamodel___inheritance, 433);
   }
-  /* ./metamodel//inheritance.nit:414 */
+  /* ./metamodel//inheritance.nit:437 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:415 */
+  /* ./metamodel//inheritance.nit:438 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./metamodel//inheritance.nit:416 */
+  /* ./metamodel//inheritance.nit:439 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./metamodel//inheritance.nit:416 */
+    /* ./metamodel//inheritance.nit:439 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./metamodel//inheritance.nit:418 */
+    /* ./metamodel//inheritance.nit:441 */
     fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./metamodel//inheritance.nit:419 */
+    /* ./metamodel//inheritance.nit:442 */
     REGB1 = TAG_Int(1);
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
-      /* ./metamodel//inheritance.nit:419 */
+      /* ./metamodel//inheritance.nit:442 */
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:421 */
+      /* ./metamodel//inheritance.nit:444 */
       fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 421);
+        nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 444);
       }
       fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
       fra.me.REG[4] = fra.me.REG[5];
     } else {
-      /* ./metamodel//inheritance.nit:425 */
+      /* ./metamodel//inheritance.nit:448 */
       fra.me.REG[5] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-      /* ./../lib/standard//collection//array.nit:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../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, 23);
+          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:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../lib/standard//collection//array.nit:273 */
           REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-          /* ./metamodel//inheritance.nit:427 */
+          /* ./metamodel//inheritance.nit:450 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[1]);
           if (UNTAG_Bool(REGB1)) {
             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:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB0 = REGB1;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ./metamodel//inheritance.nit:430 */
+      /* ./metamodel//inheritance.nit:453 */
       fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-      /* ./metamodel//inheritance.nit:432 */
+      /* ./metamodel//inheritance.nit:455 */
       REGB1 = TAG_Int(1);
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
-        /* ./metamodel//inheritance.nit:432 */
+        /* ./metamodel//inheritance.nit:455 */
         REGB2 = REGB1;
       }
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
-        /* ./metamodel//inheritance.nit:433 */
-        fra.me.REG[2] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
-        if (!once_value_2) {
-          fra.me.REG[6] = BOX_NativeString("Fatal error: inherit_local_property error\n");
-          REGB2 = TAG_Int(42);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(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;
-        fra.me.REG[6] = fra.me.REG[6];
-        CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        /* ./metamodel//inheritance.nit:434 */
-        REGB2 = TAG_Int(7);
-        fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-        if (!once_value_3) {
-          fra.me.REG[2] = BOX_NativeString("------- ");
-          REGB2 = TAG_Int(8);
-          fra.me.REG[2] = NEW_String_standard___string___String___with_native(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;
-        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]);
+        /* ./metamodel//inheritance.nit:456 */
         fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-        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[6])(fra.me.REG[6], fra.me.REG[2]);
-        if (!once_value_4) {
-          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);
-          once_value_4 = fra.me.REG[2];
-          register_static_object(&once_value_4);
-        } else fra.me.REG[2] = once_value_4;
-        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]);
-        fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-        if (!once_value_5) {
-          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);
-          once_value_5 = fra.me.REG[2];
-          register_static_object(&once_value_5);
-        } else fra.me.REG[2] = once_value_5;
-        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]);
-        fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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]);
-        if (!once_value_6) {
-          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);
-          once_value_6 = fra.me.REG[2];
-          register_static_object(&once_value_6);
-        } else fra.me.REG[2] = once_value_6;
-        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]);
-        fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-        CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:231 */
-        fra.me.REG[6] = fra.me.REG[5];
-        /* ./../lib/standard//collection//array.nit:234 */
-        REGB2 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
-        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, 235);
-        }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:237 */
-        while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          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, 23);
-          }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-          /* ./../lib/standard//kernel.nit:215 */
-          REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
-          if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
-            REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-            if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-            }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-            /* ./metamodel//inheritance.nit:436 */
-            REGB1 = TAG_Int(3);
-            fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-            if (!once_value_7) {
-              fra.me.REG[8] = BOX_NativeString("   ");
-              REGB1 = TAG_Int(3);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(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;
-            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]);
-            fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-            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);
-              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];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-            fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-            CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-            /* ./../lib/standard//collection//array.nit:239 */
-            REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
-            REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
-            REGB2 = REGB1;
-          } else {
-            /* ./../lib/standard//collection//array.nit:237 */
-            goto label9;
-          }
-        }
-        label9: while(0);
-        /* ./metamodel//inheritance.nit:438 */
-        REGB2 = TAG_Int(3);
-        fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-        if (!once_value_10) {
-          fra.me.REG[6] = BOX_NativeString("------- ");
-          REGB2 = TAG_Int(8);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-          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[2])(fra.me.REG[2], fra.me.REG[6]);
-        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[6] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
-        fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        if (!once_value_11) {
-          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);
-          once_value_11 = fra.me.REG[6];
-          register_static_object(&once_value_11);
-        } else fra.me.REG[6] = once_value_11;
-        fra.me.REG[6] = fra.me.REG[6];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-        CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-        /* ./metamodel//inheritance.nit:439 */
-        REGB2 = TAG_Int(3);
-        fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-        if (!once_value_12) {
-          fra.me.REG[6] = BOX_NativeString("------- ");
-          REGB2 = TAG_Int(8);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-          once_value_12 = fra.me.REG[6];
-          register_static_object(&once_value_12);
-        } else fra.me.REG[6] = once_value_12;
-        fra.me.REG[6] = fra.me.REG[6];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrder___to_dot(fra.me.REG[6])(fra.me.REG[6]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        if (!once_value_13) {
-          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);
-          once_value_13 = fra.me.REG[6];
-          register_static_object(&once_value_13);
-        } else fra.me.REG[6] = once_value_13;
-        fra.me.REG[6] = fra.me.REG[6];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-        CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-        /* ./metamodel//inheritance.nit:440 */
-        REGB2 = TAG_Int(1);
-        CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB2);
+        fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___context(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_metamodel___inheritance___MMContext___handle_property_conflict(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], fra.me.REG[5]);
       }
-      /* ./metamodel//inheritance.nit:442 */
+      /* ./metamodel//inheritance.nit:458 */
       fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[4] = fra.me.REG[5];
     }
   }
-  /* ./metamodel//inheritance.nit:452 */
+  /* ./metamodel//inheritance.nit:468 */
   REGB2 = TAG_Bool(ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 452);
+    nit_abort("Uninitialized attribute %s", "_local_property_by_global", LOCATE_metamodel___inheritance, 468);
   }
   fra.me.REG[0] = ATTR_metamodel___abstractmetamodel___MMLocalClass____local_property_by_global(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
-  /* ./metamodel//inheritance.nit:454 */
-  goto label14;
-  label14: while(0);
+  /* ./metamodel//inheritance.nit:470 */
+  goto label2;
+  label2: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[4];
 }
@@ -2695,10 +2836,11 @@ void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t
   struct {struct stack_frame_t me; val_t MORE_REG[5];} 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_metamodel___inheritance;
-  fra.me.line = 459;
+  fra.me.line = 475;
   fra.me.meth = LOCATE_metamodel___inheritance___MMLocalProperty___inherit_global;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2710,68 +2852,73 @@ void metamodel___inheritance___MMLocalProperty___inherit_global(val_t p0, val_t
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:462 */
+  /* ./metamodel//inheritance.nit:478 */
   CALL_metamodel___abstractmetamodel___MMLocalProperty___set_global(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:463 */
+  /* ./metamodel//inheritance.nit:479 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./metamodel//inheritance.nit:464 */
+  /* ./metamodel//inheritance.nit:480 */
   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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./metamodel//inheritance.nit:465 */
+      /* ./metamodel//inheritance.nit:481 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         goto label1;
       }
-      /* ./metamodel//inheritance.nit:466 */
+      /* ./metamodel//inheritance.nit:482 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./metamodel//inheritance.nit:468 */
+  /* ./metamodel//inheritance.nit:484 */
   CALL_metamodel___abstractmetamodel___MMGlobalProperty___add_local_property(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2782,7 +2929,7 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 473;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_metamodel___inheritance___MMAncestor___add_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2791,25 +2938,21 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:476 */
+  /* ./metamodel//inheritance.nit:492 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./metamodel//inheritance.nit:477 */
+  /* ./metamodel//inheritance.nit:493 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
   CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:478 */
+  /* ./metamodel//inheritance.nit:494 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___ancestors(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___collection___abstract_collection___Map, ID_standard___collection___abstract_collection___Map)) /*cast Map[MMLocalClass, MMAncestor]*/;
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Cast failed", NULL, LOCATE_metamodel___inheritance, 478);
-  }
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 478);
+    nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 494);
   }
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_metamodel___inheritance___MMAncestor___add_in_1));
   stack_frame_head = fra.me.prev;
   return;
@@ -2835,18 +2978,18 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./metamodel//inheritance.nit:479 */
+    /* ./metamodel//inheritance.nit:495 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___stype(closctx->REG[0])(closctx->REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./metamodel//inheritance.nit:480 */
+    /* ./metamodel//inheritance.nit:496 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(closctx->REG[0])(closctx->REG[0]);
     fra.me.REG[0] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-    /* ./metamodel//inheritance.nit:481 */
+    /* ./metamodel//inheritance.nit:497 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
     fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[2])(fra.me.REG[2]);
@@ -2858,11 +3001,11 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./metamodel//inheritance.nit:482 */
+      /* ./metamodel//inheritance.nit:498 */
       fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___iterator(closctx->REG[1])(closctx->REG[1]);
-      /* ./metamodel//inheritance.nit:483 */
+      /* ./metamodel//inheritance.nit:499 */
       REGB0 = TAG_Bool(true);
-      /* ./metamodel//inheritance.nit:484 */
+      /* ./metamodel//inheritance.nit:500 */
       while(1) {
         REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
         if (UNTAG_Bool(REGB1)) {
@@ -2872,11 +3015,11 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
-          /* ./metamodel//inheritance.nit:485 */
+          /* ./metamodel//inheritance.nit:501 */
           fra.me.REG[0] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
           REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 485);
+            nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 501);
           }
           fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___inheriter(fra.me.REG[0])(fra.me.REG[0]);
           fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
@@ -2890,7 +3033,7 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
             fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 485);
+              nit_abort("Reciever is null", NULL, LOCATE_metamodel___inheritance, 501);
             }
             fra.me.REG[3] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[3])(fra.me.REG[3]);
             REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[1]));
@@ -2905,17 +3048,17 @@ void metamodel___inheritance___MMAncestor___add_in(val_t p0, val_t p1){
           }
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           REGB0 = REGB1;
-          /* ./metamodel//inheritance.nit:486 */
+          /* ./metamodel//inheritance.nit:502 */
           CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
         } else {
-          /* ./metamodel//inheritance.nit:484 */
+          /* ./metamodel//inheritance.nit:500 */
           goto label2;
         }
       }
       label2: while(0);
-      /* ./metamodel//inheritance.nit:488 */
+      /* ./metamodel//inheritance.nit:504 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./metamodel//inheritance.nit:489 */
+        /* ./metamodel//inheritance.nit:505 */
         fra.me.REG[2] = CALL_metamodel___static_type___MMAncestor___inheriter(closctx->REG[0])(closctx->REG[0]);
         fra.me.REG[1] = NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[1]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
@@ -2932,7 +3075,7 @@ void metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1, v
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 501;
+  fra.me.line = 517;
   fra.me.meth = LOCATE_metamodel___inheritance___MMImplicitLocalClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2945,15 +3088,15 @@ void metamodel___inheritance___MMImplicitLocalClass___init(val_t p0, val_t p1, v
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./metamodel//inheritance.nit:501 */
+  /* ./metamodel//inheritance.nit:517 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./metamodel//inheritance.nit:503 */
+  /* ./metamodel//inheritance.nit:519 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./metamodel//inheritance.nit:504 */
+  /* ./metamodel//inheritance.nit:520 */
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], REGB0, init_table);
-  /* ./metamodel//inheritance.nit:505 */
+  /* ./metamodel//inheritance.nit:521 */
   CALL_metamodel___abstractmetamodel___MMLocalClass___set_global(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -2965,17 +3108,17 @@ val_t metamodel___inheritance___MMRefineAncestor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 511;
+  fra.me.line = 527;
   fra.me.meth = LOCATE_metamodel___inheritance___MMRefineAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:511 */
+  /* ./metamodel//inheritance.nit:527 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 511);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 527);
   }
   fra.me.REG[0] = ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2989,7 +3132,7 @@ void metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1, val_t
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 513;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_metamodel___inheritance___MMRefineAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3000,19 +3143,19 @@ void metamodel___inheritance___MMRefineAncestor___init(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./metamodel//inheritance.nit:513 */
+  /* ./metamodel//inheritance.nit:529 */
   fra.me.REG[3] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./metamodel//inheritance.nit:515 */
+  /* ./metamodel//inheritance.nit:531 */
   ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3]) = fra.me.REG[2];
-  /* ./metamodel//inheritance.nit:516 */
+  /* ./metamodel//inheritance.nit:532 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
   CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:517 */
+  /* ./metamodel//inheritance.nit:533 */
   REGB0 = TAG_Bool(ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 517);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_metamodel___inheritance, 533);
   }
   fra.me.REG[1] = ATTR_metamodel___inheritance___MMRefineAncestor____local_class(fra.me.REG[3]);
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
@@ -3026,13 +3169,13 @@ val_t metamodel___inheritance___MMSpecAncestor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 524;
+  fra.me.line = 540;
   fra.me.meth = LOCATE_metamodel___inheritance___MMSpecAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:524 */
+  /* ./metamodel//inheritance.nit:540 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3047,7 +3190,7 @@ void metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1, val_t p
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 526;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_metamodel___inheritance___MMSpecAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3058,12 +3201,12 @@ void metamodel___inheritance___MMSpecAncestor___init(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./metamodel//inheritance.nit:526 */
+  /* ./metamodel//inheritance.nit:542 */
   fra.me.REG[3] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./metamodel//inheritance.nit:528 */
+  /* ./metamodel//inheritance.nit:544 */
   ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[3]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:529 */
+  /* ./metamodel//inheritance.nit:545 */
   ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -3074,13 +3217,13 @@ val_t metamodel___inheritance___MMDefaultAncestor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 535;
+  fra.me.line = 551;
   fra.me.meth = LOCATE_metamodel___inheritance___MMDefaultAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:535 */
+  /* ./metamodel//inheritance.nit:551 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMAncestor___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3095,7 +3238,7 @@ void metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1, val_
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_metamodel___inheritance;
-  fra.me.line = 537;
+  fra.me.line = 553;
   fra.me.meth = LOCATE_metamodel___inheritance___MMDefaultAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3106,13 +3249,13 @@ void metamodel___inheritance___MMDefaultAncestor___init(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./metamodel//inheritance.nit:537 */
+  /* ./metamodel//inheritance.nit:553 */
   fra.me.REG[3] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./metamodel//inheritance.nit:539 */
+  /* ./metamodel//inheritance.nit:555 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
   CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  /* ./metamodel//inheritance.nit:540 */
+  /* ./metamodel//inheritance.nit:556 */
   CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
index 71c8b1e..83b8f52 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/inheritance. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/inheritance. */
 #ifndef metamodel___inheritance_sep
 #define metamodel___inheritance_sep
 #include "metamodel___static_type._sep.h"
@@ -13,48 +13,53 @@ extern const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[];
 extern const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[];
 extern const char *LOCATE_metamodel___inheritance;
 extern const int SFT_metamodel___inheritance[];
-#define CALL_metamodel___inheritance___MMModule___type_any(recv) ((metamodel___inheritance___MMModule___type_any_t)CALL((recv), (SFT_metamodel___inheritance[0] + 0)))
-#define CALL_metamodel___inheritance___MMModule___type_any_extern(recv) ((metamodel___inheritance___MMModule___type_any_extern_t)CALL((recv), (SFT_metamodel___inheritance[0] + 1)))
-#define CALL_metamodel___inheritance___MMModule___import_global_classes(recv) ((metamodel___inheritance___MMModule___import_global_classes_t)CALL((recv), (SFT_metamodel___inheritance[0] + 2)))
-#define CALL_metamodel___inheritance___MMModule___import_local_classes(recv) ((metamodel___inheritance___MMModule___import_local_classes_t)CALL((recv), (SFT_metamodel___inheritance[0] + 3)))
-#define ATTR_metamodel___inheritance___MMLocalClass____direct_parents(recv) ATTR(recv, (SFT_metamodel___inheritance[1] + 0))
-#define ATTR_metamodel___inheritance___MMLocalClass____computing_super(recv) ATTR(recv, (SFT_metamodel___inheritance[1] + 1))
-#define ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(recv) ATTR(recv, (SFT_metamodel___inheritance[1] + 2))
-#define CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(recv) ((metamodel___inheritance___MMLocalClass___compute_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[2] + 0)))
-#define CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(recv) ((metamodel___inheritance___MMLocalClass___compute_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[2] + 1)))
-#define CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(recv) ((metamodel___inheritance___MMLocalClass___inherit_global_properties_t)CALL((recv), (SFT_metamodel___inheritance[2] + 2)))
-#define CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(recv) ((metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property_t)CALL((recv), (SFT_metamodel___inheritance[2] + 3)))
-#define CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(recv) ((metamodel___inheritance___MMLocalClass___add_direct_parent_t)CALL((recv), (SFT_metamodel___inheritance[2] + 4)))
-#define CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(recv) ((metamodel___inheritance___MMLocalClass___computed_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[2] + 5)))
-#define CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(recv) ((metamodel___inheritance___MMLocalClass___computed_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[2] + 6)))
-#define CALL_metamodel___inheritance___MMLocalClass___ancestor_for(recv) ((metamodel___inheritance___MMLocalClass___ancestor_for_t)CALL((recv), (SFT_metamodel___inheritance[2] + 7)))
-#define CALL_metamodel___inheritance___MMLocalClass___add_default_any_class(recv) ((metamodel___inheritance___MMLocalClass___add_default_any_class_t)CALL((recv), (SFT_metamodel___inheritance[2] + 8)))
-#define CALL_metamodel___inheritance___MMLocalClass___add_super_classes(recv) ((metamodel___inheritance___MMLocalClass___add_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[2] + 9)))
-#define CALL_metamodel___inheritance___MMLocalClass___add_explicit_classes(recv) ((metamodel___inheritance___MMLocalClass___add_explicit_classes_t)CALL((recv), (SFT_metamodel___inheritance[2] + 10)))
-#define CALL_metamodel___inheritance___MMLocalClass___compute_super_parents(recv) ((metamodel___inheritance___MMLocalClass___compute_super_parents_t)CALL((recv), (SFT_metamodel___inheritance[2] + 11)))
-#define CALL_metamodel___inheritance___MMLocalClass___build_ancestors(recv) ((metamodel___inheritance___MMLocalClass___build_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[2] + 12)))
-#define CALL_metamodel___inheritance___MMLocalClass___group_ancestors(recv) ((metamodel___inheritance___MMLocalClass___group_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[2] + 13)))
-#define CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(recv) ((metamodel___inheritance___MMLocalClass___merge_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[2] + 14)))
-#define CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(recv) ((metamodel___inheritance___MMLocalClass___inherit_local_property_t)CALL((recv), (SFT_metamodel___inheritance[2] + 15)))
-#define CALL_metamodel___inheritance___MMLocalProperty___inherit_global(recv) ((metamodel___inheritance___MMLocalProperty___inherit_global_t)CALL((recv), (SFT_metamodel___inheritance[3] + 0)))
-#define CALL_metamodel___inheritance___MMAncestor___add_in(recv) ((metamodel___inheritance___MMAncestor___add_in_t)CALL((recv), (SFT_metamodel___inheritance[4] + 0)))
-#define ID_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[5])
-#define COLOR_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[6])
-#define INIT_TABLE_POS_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[7] + 0)
-#define CALL_metamodel___inheritance___MMImplicitLocalClass___init(recv) ((metamodel___inheritance___MMImplicitLocalClass___init_t)CALL((recv), (SFT_metamodel___inheritance[7] + 1)))
-#define ID_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[8])
-#define COLOR_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[9])
-#define ATTR_metamodel___inheritance___MMRefineAncestor____local_class(recv) ATTR(recv, (SFT_metamodel___inheritance[10] + 0))
-#define INIT_TABLE_POS_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[11] + 0)
-#define CALL_metamodel___inheritance___MMRefineAncestor___init(recv) ((metamodel___inheritance___MMRefineAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[11] + 1)))
-#define ID_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[12])
-#define COLOR_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[13])
-#define INIT_TABLE_POS_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[14] + 0)
-#define CALL_metamodel___inheritance___MMSpecAncestor___init(recv) ((metamodel___inheritance___MMSpecAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[14] + 1)))
-#define ID_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[15])
-#define COLOR_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[16])
-#define INIT_TABLE_POS_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[17] + 0)
-#define CALL_metamodel___inheritance___MMDefaultAncestor___init(recv) ((metamodel___inheritance___MMDefaultAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[17] + 1)))
+#define CALL_metamodel___inheritance___MMContext___handle_property_conflict(recv) ((metamodel___inheritance___MMContext___handle_property_conflict_t)CALL((recv), (SFT_metamodel___inheritance[0] + 0)))
+#define CALL_metamodel___inheritance___MMModule___type_any(recv) ((metamodel___inheritance___MMModule___type_any_t)CALL((recv), (SFT_metamodel___inheritance[1] + 0)))
+#define CALL_metamodel___inheritance___MMModule___type_any_extern(recv) ((metamodel___inheritance___MMModule___type_any_extern_t)CALL((recv), (SFT_metamodel___inheritance[1] + 1)))
+#define CALL_metamodel___inheritance___MMModule___import_global_classes(recv) ((metamodel___inheritance___MMModule___import_global_classes_t)CALL((recv), (SFT_metamodel___inheritance[1] + 2)))
+#define CALL_metamodel___inheritance___MMModule___import_local_classes(recv) ((metamodel___inheritance___MMModule___import_local_classes_t)CALL((recv), (SFT_metamodel___inheritance[1] + 3)))
+#define ATTR_metamodel___inheritance___MMLocalClass____direct_parents(recv) ATTR(recv, (SFT_metamodel___inheritance[2] + 0))
+#define ATTR_metamodel___inheritance___MMLocalClass____computing_super(recv) ATTR(recv, (SFT_metamodel___inheritance[2] + 1))
+#define ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(recv) ATTR(recv, (SFT_metamodel___inheritance[2] + 2))
+#define CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(recv) ((metamodel___inheritance___MMLocalClass___compute_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[3] + 0)))
+#define CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(recv) ((metamodel___inheritance___MMLocalClass___compute_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[3] + 1)))
+#define CALL_metamodel___inheritance___MMLocalClass___inherit_global_properties(recv) ((metamodel___inheritance___MMLocalClass___inherit_global_properties_t)CALL((recv), (SFT_metamodel___inheritance[3] + 2)))
+#define CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(recv) ((metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property_t)CALL((recv), (SFT_metamodel___inheritance[3] + 3)))
+#define CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(recv) ((metamodel___inheritance___MMLocalClass___add_direct_parent_t)CALL((recv), (SFT_metamodel___inheritance[3] + 4)))
+#define CALL_metamodel___inheritance___MMLocalClass___computed_super_classes(recv) ((metamodel___inheritance___MMLocalClass___computed_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[3] + 5)))
+#define CALL_metamodel___inheritance___MMLocalClass___computed_ancestors(recv) ((metamodel___inheritance___MMLocalClass___computed_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[3] + 6)))
+#define CALL_metamodel___inheritance___MMLocalClass___ancestor_for(recv) ((metamodel___inheritance___MMLocalClass___ancestor_for_t)CALL((recv), (SFT_metamodel___inheritance[3] + 7)))
+#define CALL_metamodel___inheritance___MMLocalClass___add_default_any_class(recv) ((metamodel___inheritance___MMLocalClass___add_default_any_class_t)CALL((recv), (SFT_metamodel___inheritance[3] + 8)))
+#define CALL_metamodel___inheritance___MMLocalClass___add_super_classes(recv) ((metamodel___inheritance___MMLocalClass___add_super_classes_t)CALL((recv), (SFT_metamodel___inheritance[3] + 9)))
+#define CALL_metamodel___inheritance___MMLocalClass___add_explicit_classes(recv) ((metamodel___inheritance___MMLocalClass___add_explicit_classes_t)CALL((recv), (SFT_metamodel___inheritance[3] + 10)))
+#define CALL_metamodel___inheritance___MMLocalClass___compute_super_parents(recv) ((metamodel___inheritance___MMLocalClass___compute_super_parents_t)CALL((recv), (SFT_metamodel___inheritance[3] + 11)))
+#define CALL_metamodel___inheritance___MMLocalClass___build_ancestors(recv) ((metamodel___inheritance___MMLocalClass___build_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[3] + 12)))
+#define CALL_metamodel___inheritance___MMLocalClass___group_ancestors(recv) ((metamodel___inheritance___MMLocalClass___group_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[3] + 13)))
+#define CALL_metamodel___inheritance___MMLocalClass___merge_ancestors(recv) ((metamodel___inheritance___MMLocalClass___merge_ancestors_t)CALL((recv), (SFT_metamodel___inheritance[3] + 14)))
+#define CALL_metamodel___inheritance___MMLocalClass___inherit_local_property(recv) ((metamodel___inheritance___MMLocalClass___inherit_local_property_t)CALL((recv), (SFT_metamodel___inheritance[3] + 15)))
+#define CALL_metamodel___inheritance___MMLocalProperty___inherit_global(recv) ((metamodel___inheritance___MMLocalProperty___inherit_global_t)CALL((recv), (SFT_metamodel___inheritance[4] + 0)))
+#define CALL_metamodel___inheritance___MMAncestor___add_in(recv) ((metamodel___inheritance___MMAncestor___add_in_t)CALL((recv), (SFT_metamodel___inheritance[5] + 0)))
+#define ID_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[6])
+#define COLOR_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[7])
+#define INIT_TABLE_POS_metamodel___inheritance___MMImplicitLocalClass (SFT_metamodel___inheritance[8] + 0)
+#define CALL_metamodel___inheritance___MMImplicitLocalClass___init(recv) ((metamodel___inheritance___MMImplicitLocalClass___init_t)CALL((recv), (SFT_metamodel___inheritance[8] + 1)))
+#define ID_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[9])
+#define COLOR_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[10])
+#define ATTR_metamodel___inheritance___MMRefineAncestor____local_class(recv) ATTR(recv, (SFT_metamodel___inheritance[11] + 0))
+#define INIT_TABLE_POS_metamodel___inheritance___MMRefineAncestor (SFT_metamodel___inheritance[12] + 0)
+#define CALL_metamodel___inheritance___MMRefineAncestor___init(recv) ((metamodel___inheritance___MMRefineAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[12] + 1)))
+#define ID_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[13])
+#define COLOR_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[14])
+#define INIT_TABLE_POS_metamodel___inheritance___MMSpecAncestor (SFT_metamodel___inheritance[15] + 0)
+#define CALL_metamodel___inheritance___MMSpecAncestor___init(recv) ((metamodel___inheritance___MMSpecAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[15] + 1)))
+#define ID_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[16])
+#define COLOR_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[17])
+#define INIT_TABLE_POS_metamodel___inheritance___MMDefaultAncestor (SFT_metamodel___inheritance[18] + 0)
+#define CALL_metamodel___inheritance___MMDefaultAncestor___init(recv) ((metamodel___inheritance___MMDefaultAncestor___init_t)CALL((recv), (SFT_metamodel___inheritance[18] + 1)))
+static const char * const LOCATE_metamodel___inheritance___MMContext___handle_property_conflict = "inheritance::MMContext::handle_property_conflict";
+void metamodel___inheritance___MMContext___handle_property_conflict(val_t p0, val_t p1, val_t p2);
+typedef void (*metamodel___inheritance___MMContext___handle_property_conflict_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_MMContext_metamodel___abstractmetamodel___MMContext___init();
 static const char * const LOCATE_metamodel___inheritance___MMModule___type_any = "inheritance::MMModule::type_any";
 val_t metamodel___inheritance___MMModule___type_any(val_t p0);
 typedef val_t (*metamodel___inheritance___MMModule___type_any_t)(val_t p0);
index fc88105..4215a67 100644 (file)
@@ -41,7 +41,7 @@ val_t metamodel___partial_order___PartialOrder___is_empty(val_t p0){
     nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 35);
   }
   fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(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;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -66,7 +66,7 @@ val_t metamodel___partial_order___PartialOrder___length(val_t p0){
     nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 37);
   }
   fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(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;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -148,12 +148,12 @@ val_t metamodel___partial_order___PartialOrder___has_only(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 43);
   }
   fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_standard___collection___abstract_collection___MapRead___length(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./metamodel//partial_order.nit:43 */
     REGB2 = REGB1;
@@ -165,6 +165,7 @@ val_t metamodel___partial_order___PartialOrder___has_only(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 43);
     }
     fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
     REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[0]));
     if (UNTAG_Bool(REGB2)) {
@@ -297,6 +298,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
     nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 69);
   }
   fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_metamodel___partial_order___PartialOrder___to_dot_1));
   /* ./metamodel//partial_order.nit:75 */
   if (!once_value_3) {
@@ -319,6 +321,7 @@ val_t metamodel___partial_order___PartialOrder___to_dot(val_t p0){
     struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
     val_t REGB0;
     val_t REGB1;
+    val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -342,49 +345,54 @@ 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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
@@ -837,36 +845,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -882,14 +895,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -929,6 +942,7 @@ void metamodel___partial_order___PartialOrder___compute_smallers_for(val_t p0, v
     nit_abort("Uninitialized attribute %s", "_elements", LOCATE_metamodel___partial_order, 174);
   }
   fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrder____elements(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(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_metamodel___partial_order___PartialOrder___compute_smallers_for_1));
   stack_frame_head = fra.me.prev;
   return;
@@ -1119,7 +1133,7 @@ val_t metamodel___partial_order___PartialOrderElement___greaters(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___partial_order___PartialOrderElement___greaters_and_self(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -1128,52 +1142,55 @@ val_t metamodel___partial_order___PartialOrderElement___greaters_and_self(val_t
   fra.me.line = 214;
   fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___greaters_and_self;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//partial_order.nit:214 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//partial_order.nit:217 */
-  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./metamodel//partial_order.nit:218 */
-    REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_greaters", LOCATE_metamodel___partial_order, 218);
     }
-    fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[0]);
-    fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
-    ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]) = fra.me.REG[1];
+    fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters(fra.me.REG[1]);
+    fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
+    ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]) = fra.me.REG[2];
     /* ./metamodel//partial_order.nit:219 */
-    fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
-    REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0])!=NIT_NULL);
+    fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[1]);
+    REGB0 = TAG_Bool(ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_value", LOCATE_metamodel___partial_order, 219);
     }
-    fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    fra.me.REG[3] = ATTR_metamodel___partial_order___PartialOrderElement____value(fra.me.REG[1]);
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_metamodel___partial_order, 219);
     }
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
   /* ./metamodel//partial_order.nit:221 */
-  fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____greaters_and_self_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_metamodel___partial_order, 221);
@@ -1181,12 +1198,13 @@ val_t metamodel___partial_order___PartialOrderElement___greaters_and_self(val_t
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___partial_order___PartialOrderElement___smallers(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_metamodel___partial_order;
@@ -1212,7 +1230,12 @@ val_t metamodel___partial_order___PartialOrderElement___smallers(val_t p0){
   }
   fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____order(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* ./metamodel//partial_order.nit:233 */
   if (UNTAG_Bool(REGB1)) {
@@ -1253,17 +1276,18 @@ val_t metamodel___partial_order___PartialOrderElement___smallers(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} 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_metamodel___partial_order;
   fra.me.line = 243;
   fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___linear_extension;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1273,145 +1297,158 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//partial_order.nit:243 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//partial_order.nit:247 */
-  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./metamodel//partial_order.nit:248 */
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-    /* ./metamodel//partial_order.nit:249 */
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+    /* ./metamodel//partial_order.nit:249 */
+    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
     /* ./metamodel//partial_order.nit:250 */
-    fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___value(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[3]);
+    fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
+    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[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    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:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:273 */
+        REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* ./metamodel//partial_order.nit:252 */
-        fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-        fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+        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[2])(fra.me.REG[2]);
-        /* ./../lib/standard//collection//array.nit:231 */
-        fra.me.REG[6] = fra.me.REG[1];
-        /* ./../lib/standard//collection//array.nit:234 */
+        CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
+        /* ./../lib/standard//collection//array.nit:266 */
+        fra.me.REG[7] = fra.me.REG[2];
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:270 */
+        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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        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 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:24 */
+          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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+          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);
           }
-          REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ./../lib/standard//kernel.nit:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:238 */
-            REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+            /* ./../lib/standard//collection//array.nit:273 */
+            REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB1)];
+            /* ./../lib/standard//collection//array.nit:718 */
+            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[5])(fra.me.REG[5], fra.me.REG[8]);
+            REGB2 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
             REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
             if (UNTAG_Bool(REGB2)) {
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
             }
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = REGB2;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label1;
           }
         }
         label1: while(0);
         /* ./metamodel//partial_order.nit:257 */
-        CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
         /* ./metamodel//partial_order.nit:259 */
-        fra.me.REG[5] = fra.me.REG[1];
+        fra.me.REG[6] = fra.me.REG[2];
         /* ./metamodel//partial_order.nit:260 */
-        fra.me.REG[1] = fra.me.REG[2];
+        fra.me.REG[2] = fra.me.REG[3];
         /* ./metamodel//partial_order.nit:261 */
-        fra.me.REG[2] = fra.me.REG[5];
-        /* ./../lib/standard//collection//array.nit:239 */
+        fra.me.REG[3] = fra.me.REG[6];
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
     label2: while(0);
     /* ./metamodel//partial_order.nit:263 */
-    ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]) = fra.me.REG[1];
+    ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]) = fra.me.REG[2];
   }
   /* ./metamodel//partial_order.nit:265 */
-  fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_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_metamodel___partial_order, 265);
@@ -1419,104 +1456,113 @@ val_t metamodel___partial_order___PartialOrderElement___linear_extension(val_t p
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} 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_metamodel___partial_order;
   fra.me.line = 271;
   fra.me.meth = LOCATE_metamodel___partial_order___PartialOrderElement___reverse_linear_extension;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//partial_order.nit:271 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//partial_order.nit:275 */
-  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____reverse_linear_extension_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  fra.me.REG[2] = ATTR_metamodel___partial_order___PartialOrderElement____reverse_linear_extension_cache(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./metamodel//partial_order.nit:276 */
-    fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
+    fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
     /* ./metamodel//partial_order.nit:277 */
-    fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    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:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      /* ./../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, 23);
+        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);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ./../lib/standard//kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        /* ./../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, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
         /* ./metamodel//partial_order.nit:278 */
-        fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-        fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___linear_extension(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[6] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+        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[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:239 */
+        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 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label1;
       }
     }
     label1: while(0);
     /* ./metamodel//partial_order.nit:281 */
-    fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___value(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[3]);
+    fra.me.REG[4] = CALL_metamodel___partial_order___PartialOrderElement___value(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     /* ./metamodel//partial_order.nit:282 */
-    fra.me.REG[1] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
-    ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]) = fra.me.REG[1];
+    fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
+    ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[1]) = fra.me.REG[2];
   }
   /* ./metamodel//partial_order.nit:284 */
-  fra.me.REG[0] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___partial_order___PartialOrderElement____linear_extension_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_metamodel___partial_order, 284);
@@ -1524,7 +1570,7 @@ val_t metamodel___partial_order___PartialOrderElement___reverse_linear_extension
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___partial_order___PartialOrderElement_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1762,36 +1808,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -1805,14 +1856,19 @@ void metamodel___partial_order___PartialOrderElement___init(val_t p0, val_t p1,
       fra.me.REG[5] = CALL_metamodel___partial_order___PartialOrder_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
       /* ./metamodel//partial_order.nit:331 */
       REGB2 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
         /* ./metamodel//partial_order.nit:332 */
         REGB0 = REGB3;
@@ -1822,14 +1878,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
index 3230047..7b941ea 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/partial_order. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/partial_order. */
 #ifndef metamodel___partial_order_sep
 #define metamodel___partial_order_sep
 #include "standard._sep.h"
index 5c1ee6b..221be07 100644 (file)
@@ -1,7 +1,7 @@
 /* This C file is generated by NIT to compile module metamodel___static_type. */
 #include "metamodel___static_type._sep.h"
 val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
-  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;
@@ -10,31 +10,34 @@ val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
   fra.me.line = 27;
   fra.me.meth = LOCATE_metamodel___static_type___MMLocalClass___get_type;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:27 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:30 */
-  fra.me.REG[1] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[1] = NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(fra.me.REG[0]);
-    ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[0]) = fra.me.REG[1];
+    fra.me.REG[2] = NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(fra.me.REG[1]);
+    ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[1]) = fra.me.REG[2];
   }
   /* ./metamodel//static_type.nit:31 */
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalClass____base_type_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMLocalClass____base_type_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_metamodel___static_type, 31);
@@ -42,7 +45,7 @@ val_t metamodel___static_type___MMLocalClass___get_type(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void metamodel___static_type___MMLocalClass___add_ancestor(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -196,18 +199,20 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./metamodel//static_type.nit:58 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:60 */
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[2]));
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+    fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 60);
@@ -215,45 +220,45 @@ val_t metamodel___static_type___MMLocalProperty___signature_for(val_t p0, val_t
     goto label1;
   }
   /* ./metamodel//static_type.nit:62 */
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_metamodel___static_type, 62);
   }
-  fra.me.REG[3] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2]);
+  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)) {
-    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_metamodel___static_type, 62);
     }
-    fra.me.REG[3] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    fra.me.REG[2] = fra.me.REG[3];
+    fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2]);
+    fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    fra.me.REG[3] = fra.me.REG[0];
     goto label1;
   }
   /* ./metamodel//static_type.nit:64 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 64);
   }
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   /* ./metamodel//static_type.nit:65 */
-  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_signatures_cache", LOCATE_metamodel___static_type, 65);
   }
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[2] = ATTR_metamodel___static_type___MMLocalProperty____signatures_cache(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0]);
   /* ./metamodel//static_type.nit:66 */
-  fra.me.REG[2] = fra.me.REG[3];
+  fra.me.REG[3] = fra.me.REG[0];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
 val_t metamodel___static_type___MMParam___mmtype(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -491,36 +496,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -533,14 +543,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -571,11 +581,11 @@ val_t metamodel___static_type___MMSignature___arity(val_t p0){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 109);
   }
   fra.me.REG[0] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   /* ./metamodel//static_type.nit:109 */
@@ -585,7 +595,7 @@ val_t metamodel___static_type___MMSignature___arity(val_t p0){
   return REGB0;
 }
 val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -599,18 +609,21 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   fra.me.line = 112;
   fra.me.meth = LOCATE_metamodel___static_type___MMSignature_____l;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./metamodel//static_type.nit:112 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:115 */
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
@@ -619,19 +632,19 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     goto label1;
   }
   /* ./metamodel//static_type.nit:118 */
-  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
+  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___static_type, 118);
   }
-  fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMType___mmmodule(fra.me.REG[4])(fra.me.REG[4]);
+  REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
@@ -639,16 +652,16 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     nit_abort("Assert failed", NULL, LOCATE_metamodel___static_type, 118);
   }
   /* ./metamodel//static_type.nit:119 */
-  fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
+  fra.me.REG[4] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[2]);
   /* ./metamodel//static_type.nit:120 */
-  fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
   /* ./metamodel//static_type.nit:121 */
-  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[0])(fra.me.REG[0]);
+  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = CALL_metamodel___static_type___MMSignature___arity(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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* ./metamodel//static_type.nit:121 */
     REGB3 = REGB2;
@@ -657,34 +670,34 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB3)) {
     REGB3 = TAG_Bool(true);
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB2 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB2 = REGB1;
       }
     }
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(false);
         REGB1 = REGB4;
       } else {
-        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+        REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
         REGB1 = REGB4;
       }
     }
     REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB4)) {
     } else {
-      /* ./../lib/standard//kernel.nit:178 */
+      /* ./../lib/standard//kernel.nit:195 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./metamodel//static_type.nit:121 */
       REGB4 = REGB1;
@@ -698,30 +711,30 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
     goto label1;
   }
   /* ./metamodel//static_type.nit:122 */
-  REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB3)) {
   } else {
-    REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB4)) {
       REGB4 = TAG_Bool(false);
       REGB3 = REGB4;
     } else {
-      REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB3 = REGB4;
     }
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
   if (UNTAG_Bool(REGB3)) {
-    REGB3 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+    REGB3 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 122);
     }
-    REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
       nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 122);
     }
-    REGB3 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+    REGB3 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
     REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
   } else {
     REGB4 = TAG_Bool(false);
@@ -735,19 +748,24 @@ 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[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:335 */
+  REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB1)) {
       /* ./metamodel//static_type.nit:126 */
       REGB1 = REGB3;
       /* ./metamodel//static_type.nit:127 */
-      fra.me.REG[2] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+      fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
+      REGB1 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         /* ./metamodel//static_type.nit:128 */
@@ -755,41 +773,41 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
         REGB0 = REGB1;
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = REGB1;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
   label2: while(0);
   /* ./metamodel//static_type.nit:132 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+  REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
   /* ./metamodel//static_type.nit:132 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+  REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
   /* ./metamodel//static_type.nit:132 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB4 = TAG_Bool((REGB3)==(REGB4));
     /* ./metamodel//static_type.nit:132 */
     REGB1 = REGB4;
@@ -802,116 +820,141 @@ val_t metamodel___static_type___MMSignature_____l(val_t p0, val_t p1){
   }
   /* ./metamodel//static_type.nit:133 */
   REGB1 = TAG_Int(0);
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//kernel.nit:335 */
+  REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB4));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB3)) {
       /* ./metamodel//static_type.nit:133 */
       REGB3 = REGB1;
       /* ./metamodel//static_type.nit:134 */
-      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB2 = REGB3;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB5 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB5));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB5)) {
-        REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        }
+        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*/;
+        if (UNTAG_Bool(REGB6)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        /* ./../lib/standard//kernel.nit:232 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB6 = TAG_Bool(false);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
-      fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-      REGB5 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:281 */
+      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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label3;
       label3: while(0);
       /* ./metamodel//static_type.nit:134 */
-      fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:245 */
+      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[2])(fra.me.REG[2]);
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+        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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+        }
+        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*/;
+        if (UNTAG_Bool(REGB5)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        /* ./../lib/standard//kernel.nit:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB2 = REGB5;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:281 */
+      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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label4;
       label4: while(0);
       /* ./metamodel//static_type.nit:134 */
-      REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         nit_abort("Reciever is null", NULL, LOCATE_metamodel___static_type, 134);
       }
-      REGB3 = CALL_metamodel___static_type___MMClosure_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+      REGB3 = CALL_metamodel___static_type___MMClosure_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(false);
         REGB0 = REGB3;
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label5;
     }
   }
@@ -947,14 +990,19 @@ val_t metamodel___static_type___MMSignature_____bra(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 142);
   }
   fra.me.REG[1] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
   /* ./metamodel//static_type.nit:142 */
   if (UNTAG_Bool(REGB1)) {
@@ -968,38 +1016,48 @@ 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:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./metamodel//static_type.nit:143 */
@@ -1047,16 +1105,21 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 149);
   }
   fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./metamodel//static_type.nit:149 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./metamodel//static_type.nit:149 */
   if (UNTAG_Bool(REGB1)) {
@@ -1067,11 +1130,11 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
       nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 151);
     }
     fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
     /* ./metamodel//static_type.nit:151 */
@@ -1084,18 +1147,23 @@ val_t metamodel___static_type___MMSignature___to_s(val_t p0){
       nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 152);
     }
     fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
         /* ./metamodel//static_type.nit:152 */
         REGB2 = REGB1;
@@ -1106,51 +1174,61 @@ 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:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label2;
       }
     }
@@ -1291,36 +1369,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -1345,14 +1428,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -1392,49 +1475,54 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -1469,24 +1557,26 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:195 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:199 */
-  fra.me.REG[1] = ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      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)) {
-    fra.me.REG[1] = ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
+    fra.me.REG[2] = ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[1]);
+    REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 199);
@@ -1496,44 +1586,49 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   /* ./metamodel//static_type.nit:201 */
   REGB0 = TAG_Bool(false);
   /* ./metamodel//static_type.nit:202 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
+  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
   /* ./metamodel//static_type.nit:203 */
-  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0])!=NIT_NULL);
+  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_params", LOCATE_metamodel___static_type, 203);
   }
-  fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____params(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -1559,21 +1654,21 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
         fra.me.REG[7] = fra.me.REG[5];
       }
       /* ./metamodel//static_type.nit:213 */
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      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 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
   /* ./metamodel//static_type.nit:216 */
-  fra.me.REG[4] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
+  fra.me.REG[4] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[1]);
   /* ./metamodel//static_type.nit:217 */
   REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -1597,7 +1692,7 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
     fra.me.REG[3] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = fra.me.REG[3];
     /* ./metamodel//static_type.nit:219 */
-    fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[0]);
+    fra.me.REG[3] = ATTR_metamodel___static_type___MMSignature____return_type(fra.me.REG[1]);
     REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[4],fra.me.REG[3]));
     if (UNTAG_Bool(REGB1)) {
     } else {
@@ -1619,42 +1714,47 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   /* ./metamodel//static_type.nit:222 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
   /* ./metamodel//static_type.nit:223 */
-  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0])!=NIT_NULL);
+  REGB1 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_closures", LOCATE_metamodel___static_type, 223);
   }
-  fra.me.REG[7] = ATTR_metamodel___static_type___MMSignature____closures(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -1672,14 +1772,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -1687,28 +1787,28 @@ val_t metamodel___static_type___MMSignature___not_for_self(val_t p0){
   /* ./metamodel//static_type.nit:230 */
   if (UNTAG_Bool(REGB0)) {
     /* ./metamodel//static_type.nit:231 */
-    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___static_type, 231);
     }
-    fra.me.REG[5] = ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[0]);
-    fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[2], fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = ATTR_metamodel___static_type___MMSignature____recv(fra.me.REG[1]);
+    fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], fra.me.REG[4], fra.me.REG[5]);
     /* ./metamodel//static_type.nit:232 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[5])(fra.me.REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   } else {
     /* ./metamodel//static_type.nit:234 */
-    fra.me.REG[5] = fra.me.REG[0];
+    fra.me.REG[5] = fra.me.REG[1];
   }
   /* ./metamodel//static_type.nit:237 */
-  ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_metamodel___static_type___MMSignature____not_for_self_cache(fra.me.REG[1]) = fra.me.REG[5];
   /* ./metamodel//static_type.nit:238 */
-  fra.me.REG[1] = fra.me.REG[5];
+  fra.me.REG[2] = fra.me.REG[5];
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
 void metamodel___static_type___MMSignature___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos1 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_metamodel___static_type___MMSignature].i;
@@ -2129,7 +2229,7 @@ void metamodel___static_type___MMAncestor___stype__eq(val_t p0, val_t p1){
   return;
 }
 val_t metamodel___static_type___MMAncestor___stype(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2137,12 +2237,15 @@ val_t metamodel___static_type___MMAncestor___stype(val_t p0){
   fra.me.line = 313;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___stype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:313 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:314 */
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMAncestor____stype(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 314);
@@ -2150,7 +2253,7 @@ val_t metamodel___static_type___MMAncestor___stype(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void metamodel___static_type___MMAncestor___inheriter__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2171,7 +2274,7 @@ void metamodel___static_type___MMAncestor___inheriter__eq(val_t p0, val_t p1){
   return;
 }
 val_t metamodel___static_type___MMAncestor___inheriter(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2179,12 +2282,15 @@ val_t metamodel___static_type___MMAncestor___inheriter(val_t p0){
   fra.me.line = 319;
   fra.me.meth = LOCATE_metamodel___static_type___MMAncestor___inheriter;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//static_type.nit:319 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//static_type.nit:320 */
-  fra.me.REG[0] = ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___static_type___MMAncestor____inheriter(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___static_type, 320);
@@ -2192,7 +2298,7 @@ val_t metamodel___static_type___MMAncestor___inheriter(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___static_type___MMAncestor___is_reffinement(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
index 7d41ee8..f330290 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/static_type. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/static_type. */
 #ifndef metamodel___static_type_sep
 #define metamodel___static_type_sep
 #include "metamodel___abstractmetamodel._sep.h"
index f436d22..f856254 100644 (file)
@@ -85,7 +85,7 @@ val_t metamodel___type_formal___MMTypeFormal___name(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___type_formal___MMTypeFormal___bound(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -93,12 +93,15 @@ val_t metamodel___type_formal___MMTypeFormal___bound(val_t p0){
   fra.me.line = 36;
   fra.me.meth = LOCATE_metamodel___type_formal___MMTypeFormal___bound;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./metamodel//type_formal.nit:36 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./metamodel//type_formal.nit:37 */
-  fra.me.REG[0] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_metamodel___type_formal___MMTypeFormal____bound(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_metamodel___type_formal, 37);
@@ -106,7 +109,7 @@ val_t metamodel___type_formal___MMTypeFormal___bound(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t metamodel___type_formal___MMTypeFormal_____l(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
index 259a855..7d4c6f0 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/type_formal. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/type_formal. */
 #ifndef metamodel___type_formal_sep
 #define metamodel___type_formal_sep
 #include "metamodel___inheritance._sep.h"
index 833c9d2..7f7001e 100644 (file)
@@ -44,6 +44,7 @@ val_t metamodel___vararg___MMSignature___has_vararg(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_metamodel___vararg;
@@ -61,7 +62,12 @@ val_t metamodel___vararg___MMSignature___has_vararg(val_t p0){
   }
   REGB0 = ATTR_metamodel___vararg___MMSignature____vararg_rank(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ./metamodel//vararg.nit:30 */
   goto label1;
@@ -160,7 +166,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:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* ./metamodel//vararg.nit:50 */
   ATTR_metamodel___vararg___MMSignature____vararg_rank(fra.me.REG[4]) = REGB0;
index 983c79b..9a4f4e3 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/vararg. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/vararg. */
 #ifndef metamodel___vararg_sep
 #define metamodel___vararg_sep
 #include "metamodel___genericity._sep.h"
index 3c9ae4e..2e47bb3 100644 (file)
@@ -1,7 +1,7 @@
 /* This C file is generated by NIT to compile module metamodel___virtualtype. */
 #include "metamodel___virtualtype._sep.h"
 val_t metamodel___virtualtype___MMGlobalProperty___is_virtual_type(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -9,19 +9,20 @@ val_t metamodel___virtualtype___MMGlobalProperty___is_virtual_type(val_t p0){
   fra.me.line = 24;
   fra.me.meth = LOCATE_metamodel___virtualtype___MMGlobalProperty___is_virtual_type;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./metamodel//virtualtype.nit:25 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
 val_t metamodel___virtualtype___MMTypeProperty___stype_for(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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;
@@ -29,24 +30,25 @@ val_t metamodel___virtualtype___MMTypeProperty___stype_for(val_t p0, val_t p1){
   fra.me.line = 31;
   fra.me.meth = LOCATE_metamodel___virtualtype___MMTypeProperty___stype_for;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./metamodel//virtualtype.nit:34 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   /* ./metamodel//virtualtype.nit:35 */
-  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_metamodel___virtualtype___MMTypeProperty, ID_metamodel___virtualtype___MMTypeProperty)) /*cast MMTypeProperty*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Assert failed", NULL, LOCATE_metamodel___virtualtype, 35);
   }
   /* ./metamodel//virtualtype.nit:36 */
-  fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___real_stype_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___real_stype_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -286,7 +288,7 @@ val_t metamodel___virtualtype___MMVirtualType___not_for_self(val_t p0){
   return fra.me.REG[0];
 }
 val_t metamodel___virtualtype___MMVirtualType___adapt_to(val_t p0, val_t p1){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -294,14 +296,17 @@ val_t metamodel___virtualtype___MMVirtualType___adapt_to(val_t p0, val_t p1){
   fra.me.line = 84;
   fra.me.meth = LOCATE_metamodel___virtualtype___MMVirtualType___adapt_to;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./metamodel//virtualtype.nit:84 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./metamodel//virtualtype.nit:86 */
-  fra.me.REG[0] = CALL_metamodel___virtualtype___MMVirtualType___property(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___stype_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  fra.me.REG[2] = CALL_metamodel___virtualtype___MMVirtualType___property(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[1] = CALL_metamodel___virtualtype___MMTypeProperty___stype_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
index 8c58d7c..ccd5f69 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/metamodel/virtualtype. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./metamodel/virtualtype. */
 #ifndef metamodel___virtualtype_sep
 #define metamodel___virtualtype_sep
 #include "metamodel___type_formal._sep.h"
index 6e9a38f..64fbdcf 100644 (file)
@@ -39,7 +39,7 @@ val_t mmloader___Message___text(val_t p0){
   return fra.me.REG[0];
 }
 val_t mmloader___Message_____l(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -49,23 +49,31 @@ val_t mmloader___Message_____l(val_t p0, val_t p1){
   fra.me.line = 33;
   fra.me.meth = LOCATE_mmloader___Message_____l;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_mmloader, 0);
+  }
+  /* ./mmloader.nit:33 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./mmloader.nit:34 */
-  fra.me.REG[2] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  fra.me.REG[3] = CALL_mmloader___Message___location(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
@@ -74,16 +82,16 @@ val_t mmloader___Message_____l(val_t p0, val_t p1){
     goto label1;
   }
   /* ./mmloader.nit:35 */
-  fra.me.REG[2] = CALL_mmloader___Message___location(fra.me.REG[1])(fra.me.REG[1]);
-  REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  fra.me.REG[3] = CALL_mmloader___Message___location(fra.me.REG[1])(fra.me.REG[1]);
+  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -93,8 +101,8 @@ val_t mmloader___Message_____l(val_t p0, val_t p1){
     goto label1;
   }
   /* ./mmloader.nit:37 */
-  fra.me.REG[0] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[2] = CALL_mmloader___Message___location(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_mmloader, 37);
@@ -105,11 +113,11 @@ val_t mmloader___Message_____l(val_t p0, val_t p1){
   } else {
     nit_abort("Cast failed", NULL, LOCATE_mmloader, 37);
   }
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_mmloader, 37);
   }
-  REGB1 = CALL_standard___kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  REGB1 = CALL_standard___kernel___Comparable_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
@@ -222,10 +230,10 @@ val_t mmloader___Message___to_color_string(val_t p0){
       static val_t once_value_14; /* Once value */
       static val_t once_value_15; /* Once value */
       static val_t once_value_16; /* Once value */
-      static val_t once_value_19; /* Once value */
       static val_t once_value_20; /* Once value */
       static val_t once_value_21; /* Once value */
       static val_t once_value_22; /* Once value */
+      static val_t once_value_23; /* Once value */
       static val_t once_value_24; /* Once value */
       static val_t once_value_25; /* Once value */
       static val_t once_value_26; /* Once value */
@@ -233,10 +241,6 @@ val_t mmloader___Message___to_color_string(val_t p0){
       static val_t once_value_28; /* Once value */
       static val_t once_value_29; /* Once value */
       static val_t once_value_30; /* Once value */
-      static val_t once_value_31; /* Once value */
-      static val_t once_value_32; /* Once value */
-      static val_t once_value_33; /* Once value */
-      static val_t once_value_34; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
   fra.me.line = 50;
@@ -258,7 +262,7 @@ val_t mmloader___Message___to_color_string(val_t p0){
   fra.me.REG[0] = p0;
   /* ./mmloader.nit:52 */
   REGB0 = TAG_Int(27);
-  /* ./../lib/standard//kernel.nit:280 */
+  /* ./../lib/standard//kernel.nit:297 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   /* ./mmloader.nit:53 */
   REGB1 = TAG_Int(3);
@@ -496,40 +500,50 @@ val_t mmloader___Message___to_color_string(val_t p0){
       }
       fra.me.REG[6] = CALL_location___SourceFile___line_starts(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label17;
       label17: while(0);
       /* ./mmloader.nit:66 */
@@ -550,29 +564,34 @@ val_t mmloader___Message___to_color_string(val_t p0){
       /* ./mmloader.nit:69 */
       while(1) {
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         /* ./mmloader.nit:69 */
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
           /* ./mmloader.nit:69 */
-          REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB4);
+          REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB4);
           REGB3 = TAG_Char('\n');
           REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
           if (UNTAG_Bool(REGB5)) {
           } else {
-            /* ./../lib/standard//kernel.nit:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB3 = TAG_Bool((REGB4)==(REGB3));
             /* ./mmloader.nit:69 */
             REGB5 = REGB3;
@@ -584,15 +603,15 @@ val_t mmloader___Message___to_color_string(val_t p0){
         }
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
           /* ./mmloader.nit:69 */
-          REGB5 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB5);
+          REGB5 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB5);
           REGB3 = TAG_Char('\r');
           REGB4 = TAG_Bool(IS_EQUAL_OO(REGB5,REGB3));
           if (UNTAG_Bool(REGB4)) {
           } else {
-            /* ./../lib/standard//kernel.nit:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB3 = TAG_Bool((REGB5)==(REGB3));
             /* ./mmloader.nit:69 */
             REGB4 = REGB3;
@@ -605,7 +624,7 @@ val_t mmloader___Message___to_color_string(val_t p0){
         if (UNTAG_Bool(REGB4)) {
           /* ./mmloader.nit:70 */
           REGB4 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
           /* ./mmloader.nit:70 */
           REGB2 = REGB4;
@@ -616,314 +635,268 @@ val_t mmloader___Message___to_color_string(val_t p0){
       }
       label18: while(0);
       /* ./mmloader.nit:72 */
-      REGB4 = TAG_Int(7);
-      fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
-      if (!once_value_19) {
-        fra.me.REG[8] = BOX_NativeString("");
-        REGB4 = TAG_Int(0);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB4);
-        once_value_19 = fra.me.REG[8];
-        register_static_object(&once_value_19);
-      } else fra.me.REG[8] = once_value_19;
-      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]);
-      REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
-      REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
-      /* ./mmloader.nit:72 */
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB4)(REGB4);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-      if (!once_value_20) {
-        fra.me.REG[8] = BOX_NativeString(": ");
-        REGB4 = TAG_Int(2);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB4);
-        once_value_20 = fra.me.REG[8];
-        register_static_object(&once_value_20);
-      } else fra.me.REG[8] = once_value_20;
-      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]);
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB1)(REGB1);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-      if (!once_value_21) {
-        fra.me.REG[8] = BOX_NativeString(" && ");
-        REGB4 = TAG_Int(4);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB4);
-        once_value_21 = fra.me.REG[8];
-        register_static_object(&once_value_21);
-      } else fra.me.REG[8] = once_value_21;
-      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]);
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-      if (!once_value_22) {
-        fra.me.REG[8] = BOX_NativeString("");
-        REGB4 = TAG_Int(0);
-        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB4);
-        once_value_22 = fra.me.REG[8];
-        register_static_object(&once_value_22);
-      } else fra.me.REG[8] = once_value_22;
-      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]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-      CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-      /* ./mmloader.nit:73 */
       fra.me.REG[7] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
       REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 73);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 72);
       }
       REGB4 = CALL_location___Location___column_start(fra.me.REG[7])(fra.me.REG[7]);
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB3));
-      /* ./mmloader.nit:73 */
+      /* ./mmloader.nit:72 */
       fra.me.REG[7] = CALL_standard___string___AbstractString___substring(fra.me.REG[6])(fra.me.REG[6], REGB1, REGB3);
-      /* ./mmloader.nit:75 */
+      /* ./mmloader.nit:74 */
       fra.me.REG[8] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
       REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 75);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 74);
       }
       REGB3 = CALL_location___Location___line_end(fra.me.REG[8])(fra.me.REG[8]);
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB3 = TAG_Bool((REGB0)==(REGB3));
-        /* ./mmloader.nit:75 */
+        /* ./mmloader.nit:74 */
         REGB4 = REGB3;
       }
       REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
       if (UNTAG_Bool(REGB4)) {
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-        /* ./mmloader.nit:76 */
+        /* ./mmloader.nit:75 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB3));
-        /* ./mmloader.nit:76 */
+        /* ./mmloader.nit:75 */
         fra.me.REG[8] = REGB3;
       } else {
-        /* ./mmloader.nit:78 */
+        /* ./mmloader.nit:77 */
         fra.me.REG[9] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
         REGB3 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_mmloader, 78);
+          nit_abort("Reciever is null", NULL, LOCATE_mmloader, 77);
         }
         REGB3 = CALL_location___Location___column_end(fra.me.REG[9])(fra.me.REG[9]);
         fra.me.REG[8] = REGB3;
       }
-      /* ./mmloader.nit:80 */
+      /* ./mmloader.nit:79 */
       fra.me.REG[9] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
       REGB3 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 80);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 79);
       }
       REGB3 = CALL_location___Location___column_start(fra.me.REG[9])(fra.me.REG[9]);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./mmloader.nit:80 */
+      /* ./mmloader.nit:79 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
-      /* ./mmloader.nit:80 */
+      /* ./mmloader.nit:79 */
       fra.me.REG[9] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
       REGB3 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 80);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 79);
       }
       REGB3 = CALL_location___Location___column_start(fra.me.REG[9])(fra.me.REG[9]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 80);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 79);
       }
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(fra.me.REG[8])-UNTAG_Int(REGB3));
-      /* ./mmloader.nit:80 */
+      /* ./mmloader.nit:79 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-      /* ./mmloader.nit:80 */
+      /* ./mmloader.nit:79 */
       fra.me.REG[9] = CALL_standard___string___AbstractString___substring(fra.me.REG[6])(fra.me.REG[6], REGB4, REGB0);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(fra.me.REG[8]));
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
       REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(fra.me.REG[8]));
-      /* ./mmloader.nit:81 */
+      /* ./mmloader.nit:80 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-      /* ./mmloader.nit:81 */
+      /* ./mmloader.nit:80 */
       fra.me.REG[8] = CALL_standard___string___AbstractString___substring(fra.me.REG[6])(fra.me.REG[6], REGB0, REGB4);
-      /* ./mmloader.nit:82 */
+      /* ./mmloader.nit:81 */
       fra.me.REG[10] = NEW_Buffer_standard___string___Buffer___init();
-      /* ./mmloader.nit:83 */
+      /* ./mmloader.nit:82 */
       fra.me.REG[11] = CALL_mmloader___Message___location(fra.me.REG[0])(fra.me.REG[0]);
       REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 83);
+        nit_abort("Reciever is null", NULL, LOCATE_mmloader, 82);
       }
       REGB4 = CALL_location___Location___column_start(fra.me.REG[11])(fra.me.REG[11]);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ./mmloader.nit:83 */
+      /* ./mmloader.nit:82 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        REGB4 = TAG_Bool(VAL_ISA(REGB0, 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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./mmloader.nit:83 */
+          /* ./mmloader.nit:82 */
           REGB4 = REGB1;
-          /* ./mmloader.nit:84 */
-          REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB4);
+          /* ./mmloader.nit:83 */
+          REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB4);
           REGB2 = TAG_Char('\t');
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB2));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ./../lib/standard//kernel.nit:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB2 = TAG_Bool((REGB4)==(REGB2));
-            /* ./mmloader.nit:84 */
+            /* ./mmloader.nit:83 */
             REGB3 = REGB2;
           }
           if (UNTAG_Bool(REGB3)) {
-            /* ./mmloader.nit:85 */
+            /* ./mmloader.nit:84 */
             REGB3 = TAG_Char('\t');
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], REGB3);
           } else {
-            /* ./mmloader.nit:87 */
+            /* ./mmloader.nit:86 */
             REGB3 = TAG_Char(' ');
             CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], REGB3);
           }
-          /* ./../lib/standard//kernel.nit:337 */
+          /* ./../lib/standard//kernel.nit:354 */
           REGB3 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-          /* ./../lib/standard//kernel.nit:337 */
+          /* ./../lib/standard//kernel.nit:354 */
           REGB1 = REGB3;
         } else {
-          /* ./../lib/standard//kernel.nit:335 */
-          goto label23;
+          /* ./../lib/standard//kernel.nit:352 */
+          goto label19;
         }
       }
-      label23: while(0);
-      /* ./mmloader.nit:90 */
+      label19: while(0);
+      /* ./mmloader.nit:89 */
       REGB1 = TAG_Int(21);
       fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      if (!once_value_24) {
+      if (!once_value_20) {
         fra.me.REG[11] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
         fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB1);
-        once_value_24 = fra.me.REG[11];
-        register_static_object(&once_value_24);
-      } else fra.me.REG[11] = once_value_24;
+        once_value_20 = fra.me.REG[11];
+        register_static_object(&once_value_20);
+      } else fra.me.REG[11] = once_value_20;
       fra.me.REG[11] = fra.me.REG[11];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[11]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-      if (!once_value_25) {
+      if (!once_value_21) {
         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);
-        once_value_25 = fra.me.REG[2];
-        register_static_object(&once_value_25);
-      } else fra.me.REG[2] = once_value_25;
+        once_value_21 = fra.me.REG[2];
+        register_static_object(&once_value_21);
+      } else fra.me.REG[2] = once_value_21;
       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]);
       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[6])(fra.me.REG[6], fra.me.REG[4]);
-      if (!once_value_26) {
+      if (!once_value_22) {
         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);
-        once_value_26 = fra.me.REG[4];
-        register_static_object(&once_value_26);
-      } else fra.me.REG[4] = once_value_26;
+        once_value_22 = fra.me.REG[4];
+        register_static_object(&once_value_22);
+      } else fra.me.REG[4] = once_value_22;
       fra.me.REG[4] = fra.me.REG[4];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      if (!once_value_27) {
+      if (!once_value_23) {
         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);
-        once_value_27 = fra.me.REG[4];
-        register_static_object(&once_value_27);
-      } else fra.me.REG[4] = once_value_27;
+        once_value_23 = fra.me.REG[4];
+        register_static_object(&once_value_23);
+      } else fra.me.REG[4] = once_value_23;
       fra.me.REG[4] = fra.me.REG[4];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
       fra.me.REG[0] = CALL_mmloader___Message___text(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
-      if (!once_value_28) {
+      if (!once_value_24) {
         fra.me.REG[0] = BOX_NativeString("\n\t");
         REGB1 = TAG_Int(2);
         fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB1);
-        once_value_28 = fra.me.REG[0];
-        register_static_object(&once_value_28);
-      } else fra.me.REG[0] = once_value_28;
+        once_value_24 = fra.me.REG[0];
+        register_static_object(&once_value_24);
+      } else fra.me.REG[0] = once_value_24;
       fra.me.REG[0] = fra.me.REG[0];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-      if (!once_value_29) {
+      if (!once_value_25) {
         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);
-        once_value_29 = fra.me.REG[7];
-        register_static_object(&once_value_29);
-      } else fra.me.REG[7] = once_value_29;
+        once_value_25 = fra.me.REG[7];
+        register_static_object(&once_value_25);
+      } else fra.me.REG[7] = once_value_25;
       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]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
-      if (!once_value_30) {
+      if (!once_value_26) {
         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);
-        once_value_30 = fra.me.REG[1];
-        register_static_object(&once_value_30);
-      } else fra.me.REG[1] = once_value_30;
+        once_value_26 = fra.me.REG[1];
+        register_static_object(&once_value_26);
+      } else fra.me.REG[1] = once_value_26;
       fra.me.REG[1] = fra.me.REG[1];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
-      if (!once_value_31) {
+      if (!once_value_27) {
         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);
-        once_value_31 = fra.me.REG[9];
-        register_static_object(&once_value_31);
-      } else fra.me.REG[9] = once_value_31;
+        once_value_27 = fra.me.REG[9];
+        register_static_object(&once_value_27);
+      } else fra.me.REG[9] = once_value_27;
       fra.me.REG[9] = fra.me.REG[9];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      if (!once_value_32) {
+      if (!once_value_28) {
         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);
-        once_value_32 = fra.me.REG[3];
-        register_static_object(&once_value_32);
-      } else fra.me.REG[3] = once_value_32;
+        once_value_28 = fra.me.REG[3];
+        register_static_object(&once_value_28);
+      } else fra.me.REG[3] = once_value_28;
       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]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
-      if (!once_value_33) {
+      if (!once_value_29) {
         fra.me.REG[8] = BOX_NativeString("\n\t");
         REGB1 = TAG_Int(2);
         fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-        once_value_33 = fra.me.REG[8];
-        register_static_object(&once_value_33);
-      } else fra.me.REG[8] = once_value_33;
+        once_value_29 = fra.me.REG[8];
+        register_static_object(&once_value_29);
+      } else fra.me.REG[8] = once_value_29;
       fra.me.REG[8] = fra.me.REG[8];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
       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[6])(fra.me.REG[6], fra.me.REG[10]);
-      if (!once_value_34) {
+      if (!once_value_30) {
         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);
-        once_value_34 = fra.me.REG[10];
-        register_static_object(&once_value_34);
-      } else fra.me.REG[10] = once_value_34;
+        once_value_30 = fra.me.REG[10];
+        register_static_object(&once_value_30);
+      } else fra.me.REG[10] = once_value_30;
       fra.me.REG[10] = fra.me.REG[10];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[10]);
       fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
@@ -964,17 +937,17 @@ val_t mmloader___ToolContext___error_count(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 98;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_mmloader___ToolContext___error_count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:98 */
+  /* ./mmloader.nit:97 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 98);
+    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 97);
   }
   REGB0 = ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -986,17 +959,17 @@ val_t mmloader___ToolContext___warning_count(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 101;
+  fra.me.line = 100;
   fra.me.meth = LOCATE_mmloader___ToolContext___warning_count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:101 */
+  /* ./mmloader.nit:100 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_mmloader, 101);
+    nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_mmloader, 100);
   }
   REGB0 = ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1008,17 +981,17 @@ val_t mmloader___ToolContext___log_directory(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 104;
+  fra.me.line = 103;
   fra.me.meth = LOCATE_mmloader___ToolContext___log_directory;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:104 */
+  /* ./mmloader.nit:103 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_log_directory", LOCATE_mmloader, 104);
+    nit_abort("Uninitialized attribute %s", "_log_directory", LOCATE_mmloader, 103);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1028,6 +1001,7 @@ void mmloader___ToolContext___check_errors(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
           static val_t once_value_1; /* Once value */
           static val_t once_value_2; /* Once value */
@@ -1035,7 +1009,7 @@ void mmloader___ToolContext___check_errors(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_mmloader;
-  fra.me.line = 111;
+  fra.me.line = 110;
   fra.me.meth = LOCATE_mmloader___ToolContext___check_errors;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1047,83 +1021,93 @@ void mmloader___ToolContext___check_errors(val_t p0){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:113 */
+  /* ./mmloader.nit:112 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 113);
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 112);
   }
   fra.me.REG[1] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./mmloader.nit:113 */
+  /* ./mmloader.nit:112 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./mmloader.nit:113 */
+  /* ./mmloader.nit:112 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./mmloader.nit:114 */
+    /* ./mmloader.nit:113 */
     REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_message_sorter", LOCATE_mmloader, 114);
+      nit_abort("Uninitialized attribute %s", "_message_sorter", LOCATE_mmloader, 113);
     }
     fra.me.REG[1] = ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]);
     REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 114);
+      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 113);
     }
     fra.me.REG[2] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
     CALL_standard___collection___sorter___AbstractSorter___sort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./mmloader.nit:116 */
+    /* ./mmloader.nit:115 */
     REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 116);
+      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 115);
     }
     fra.me.REG[2] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
-        /* ./mmloader.nit:117 */
+        /* ./mmloader.nit:116 */
         fra.me.REG[4] = CALL_mmloader___ToolContext___opt_no_color(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[4] = CALL_opts___Option___value(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(fra.me.REG[4])) {
-          /* ./mmloader.nit:118 */
+          /* ./mmloader.nit:117 */
           fra.me.REG[4] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
           REGB0 = TAG_Int(3);
           fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1150,7 +1134,7 @@ void mmloader___ToolContext___check_errors(val_t p0){
           fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
           CALL_standard___stream___OStream___write(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
         } else {
-          /* ./mmloader.nit:120 */
+          /* ./mmloader.nit:119 */
           fra.me.REG[5] = CALL_standard___file___Object___stderr(fra.me.REG[0])(fra.me.REG[0]);
           REGB0 = TAG_Int(3);
           fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1177,33 +1161,38 @@ void mmloader___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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = REGB0;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label5;
       }
     }
     label5: while(0);
-    /* ./mmloader.nit:124 */
+    /* ./mmloader.nit:123 */
     REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 124);
+      nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 123);
     }
     fra.me.REG[1] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./mmloader.nit:127 */
+  /* ./mmloader.nit:126 */
   REGB1 = CALL_mmloader___ToolContext___error_count(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-  /* ./mmloader.nit:127 */
+  /* ./mmloader.nit:126 */
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Int(1);
     CALL_standard___kernel___Object___exit(fra.me.REG[0])(fra.me.REG[0], REGB0);
@@ -1218,7 +1207,7 @@ void mmloader___ToolContext___error(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_mmloader;
-  fra.me.line = 130;
+  fra.me.line = 129;
   fra.me.meth = LOCATE_mmloader___ToolContext___error;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1229,28 +1218,28 @@ void mmloader___ToolContext___error(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:133 */
+  /* ./mmloader.nit:132 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 133);
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 132);
   }
   fra.me.REG[3] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
   fra.me.REG[2] = NEW_Message_mmloader___Message___init(fra.me.REG[1], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./mmloader.nit:134 */
+  /* ./mmloader.nit:133 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 134);
+    nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 133);
   }
   REGB0 = ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./mmloader.nit:134 */
+  /* ./mmloader.nit:133 */
   ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB1;
-  /* ./mmloader.nit:135 */
+  /* ./mmloader.nit:134 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___opt_stop_on_first_error(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(fra.me.REG[2])) {
@@ -1264,7 +1253,7 @@ void mmloader___ToolContext___fatal_error(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_mmloader;
-  fra.me.line = 138;
+  fra.me.line = 137;
   fra.me.meth = LOCATE_mmloader___ToolContext___fatal_error;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1274,9 +1263,9 @@ void mmloader___ToolContext___fatal_error(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:141 */
+  /* ./mmloader.nit:140 */
   CALL_mmloader___ToolContext___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  /* ./mmloader.nit:142 */
+  /* ./mmloader.nit:141 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1289,7 +1278,7 @@ void mmloader___ToolContext___warning(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_mmloader;
-  fra.me.line = 145;
+  fra.me.line = 144;
   fra.me.meth = LOCATE_mmloader___ToolContext___warning;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1300,11 +1289,11 @@ void mmloader___ToolContext___warning(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:148 */
+  /* ./mmloader.nit:147 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 148);
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 147);
   }
   fra.me.REG[3] = ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]);
   fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
@@ -1317,29 +1306,29 @@ void mmloader___ToolContext___warning(val_t p0, val_t p1, val_t p2){
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB0 = TAG_Bool((fra.me.REG[3])==(REGB0));
-      /* ./mmloader.nit:148 */
+      /* ./mmloader.nit:147 */
       REGB1 = REGB0;
     }
   }
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./mmloader.nit:149 */
+  /* ./mmloader.nit:148 */
   REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____messages(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 149);
+    nit_abort("Uninitialized attribute %s", "_messages", LOCATE_mmloader, 148);
   }
   fra.me.REG[3] = ATTR_mmloader___ToolContext____messages(fra.me.REG[0]);
   fra.me.REG[2] = NEW_Message_mmloader___Message___init(fra.me.REG[1], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./mmloader.nit:150 */
+  /* ./mmloader.nit:149 */
   REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 150);
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 149);
   }
   fra.me.REG[2] = ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]);
   fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
@@ -1352,40 +1341,40 @@ void mmloader___ToolContext___warning(val_t p0, val_t p1, val_t p2){
       REGB2 = TAG_Bool(false);
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((fra.me.REG[2])==(REGB1));
-      /* ./mmloader.nit:150 */
+      /* ./mmloader.nit:149 */
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:151 */
+    /* ./mmloader.nit:150 */
     REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_mmloader, 151);
+      nit_abort("Uninitialized attribute %s", "_warning_count", LOCATE_mmloader, 150);
     }
     REGB0 = ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]);
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ./mmloader.nit:151 */
+    /* ./mmloader.nit:150 */
     ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB1;
   } else {
-    /* ./mmloader.nit:153 */
+    /* ./mmloader.nit:152 */
     REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____error_count(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 153);
+      nit_abort("Uninitialized attribute %s", "_error_count", LOCATE_mmloader, 152);
     }
     REGB1 = ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]);
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* ./mmloader.nit:153 */
+    /* ./mmloader.nit:152 */
     ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
   }
-  /* ./mmloader.nit:155 */
+  /* ./mmloader.nit:154 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___opt_stop_on_first_error(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(fra.me.REG[2])) {
@@ -1399,12 +1388,13 @@ void mmloader___ToolContext___info(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 REGB2;
   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_mmloader;
-  fra.me.line = 158;
+  fra.me.line = 157;
   fra.me.meth = LOCATE_mmloader___ToolContext___info;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1415,13 +1405,18 @@ void mmloader___ToolContext___info(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./mmloader.nit:161 */
+  /* ./mmloader.nit:160 */
   REGB1 = CALL_mmloader___ToolContext___verbose_level(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ./mmloader.nit:161 */
+  /* ./mmloader.nit:160 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./mmloader.nit:162 */
+    /* ./mmloader.nit:161 */
     REGB1 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_1) {
@@ -1455,17 +1450,17 @@ val_t mmloader___ToolContext___paths(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 166;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_mmloader___ToolContext___paths;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:166 */
+  /* ./mmloader.nit:165 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____paths(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_paths", LOCATE_mmloader, 166);
+    nit_abort("Uninitialized attribute %s", "_paths", LOCATE_mmloader, 165);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____paths(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1477,17 +1472,17 @@ val_t mmloader___ToolContext___option_context(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 172;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_mmloader___ToolContext___option_context;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:172 */
+  /* ./mmloader.nit:171 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____option_context(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_option_context", LOCATE_mmloader, 172);
+    nit_abort("Uninitialized attribute %s", "_option_context", LOCATE_mmloader, 171);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1499,17 +1494,17 @@ val_t mmloader___ToolContext___opt_warn(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 175;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_warn;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:175 */
+  /* ./mmloader.nit:174 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 175);
+    nit_abort("Uninitialized attribute %s", "_opt_warn", LOCATE_mmloader, 174);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1521,17 +1516,17 @@ val_t mmloader___ToolContext___opt_path(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 178;
+  fra.me.line = 177;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_path;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:178 */
+  /* ./mmloader.nit:177 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_mmloader, 178);
+    nit_abort("Uninitialized attribute %s", "_opt_path", LOCATE_mmloader, 177);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1543,17 +1538,17 @@ val_t mmloader___ToolContext___opt_log(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 181;
+  fra.me.line = 180;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_log;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:181 */
+  /* ./mmloader.nit:180 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_mmloader, 181);
+    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_mmloader, 180);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1565,17 +1560,17 @@ val_t mmloader___ToolContext___opt_log_dir(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 184;
+  fra.me.line = 183;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_log_dir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:184 */
+  /* ./mmloader.nit:183 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_log_dir", LOCATE_mmloader, 184);
+    nit_abort("Uninitialized attribute %s", "_opt_log_dir", LOCATE_mmloader, 183);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1587,17 +1582,17 @@ val_t mmloader___ToolContext___opt_only_metamodel(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 187;
+  fra.me.line = 186;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_metamodel;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:187 */
+  /* ./mmloader.nit:186 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_mmloader, 187);
+    nit_abort("Uninitialized attribute %s", "_opt_only_metamodel", LOCATE_mmloader, 186);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1609,17 +1604,17 @@ val_t mmloader___ToolContext___opt_only_parse(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 190;
+  fra.me.line = 189;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_only_parse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:190 */
+  /* ./mmloader.nit:189 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_mmloader, 190);
+    nit_abort("Uninitialized attribute %s", "_opt_only_parse", LOCATE_mmloader, 189);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1631,17 +1626,17 @@ val_t mmloader___ToolContext___opt_help(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 193;
+  fra.me.line = 192;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_help;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:193 */
+  /* ./mmloader.nit:192 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_help", LOCATE_mmloader, 193);
+    nit_abort("Uninitialized attribute %s", "_opt_help", LOCATE_mmloader, 192);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1653,17 +1648,17 @@ val_t mmloader___ToolContext___opt_version(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 196;
+  fra.me.line = 195;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_version;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:196 */
+  /* ./mmloader.nit:195 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_version", LOCATE_mmloader, 196);
+    nit_abort("Uninitialized attribute %s", "_opt_version", LOCATE_mmloader, 195);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1675,17 +1670,17 @@ val_t mmloader___ToolContext___opt_verbose(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 199;
+  fra.me.line = 198;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_verbose;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:199 */
+  /* ./mmloader.nit:198 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_verbose", LOCATE_mmloader, 199);
+    nit_abort("Uninitialized attribute %s", "_opt_verbose", LOCATE_mmloader, 198);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1697,17 +1692,17 @@ val_t mmloader___ToolContext___opt_stop_on_first_error(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 202;
+  fra.me.line = 201;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_stop_on_first_error;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:202 */
+  /* ./mmloader.nit:201 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_stop_on_first_error(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_mmloader, 202);
+    nit_abort("Uninitialized attribute %s", "_opt_stop_on_first_error", LOCATE_mmloader, 201);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_stop_on_first_error(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1719,17 +1714,17 @@ val_t mmloader___ToolContext___opt_no_color(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 205;
+  fra.me.line = 204;
   fra.me.meth = LOCATE_mmloader___ToolContext___opt_no_color;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:205 */
+  /* ./mmloader.nit:204 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_no_color", LOCATE_mmloader, 205);
+    nit_abort("Uninitialized attribute %s", "_opt_no_color", LOCATE_mmloader, 204);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1741,17 +1736,17 @@ val_t mmloader___ToolContext___verbose_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 208;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_mmloader___ToolContext___verbose_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:208 */
+  /* ./mmloader.nit:207 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_verbose_level", LOCATE_mmloader, 208);
+    nit_abort("Uninitialized attribute %s", "_verbose_level", LOCATE_mmloader, 207);
   }
   REGB0 = ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1765,7 +1760,7 @@ void mmloader___ToolContext___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_mmloader;
-  fra.me.line = 211;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_mmloader___ToolContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1774,11 +1769,11 @@ void mmloader___ToolContext___init(val_t p0, int* init_table){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:211 */
+  /* ./mmloader.nit:210 */
   fra.me.REG[1] = fra.me.REG[0];
-  /* ./mmloader.nit:213 */
+  /* ./mmloader.nit:212 */
   CALL_metamodel___abstractmetamodel___MMContext___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./mmloader.nit:214 */
+  /* ./mmloader.nit:213 */
   fra.me.REG[0] = CALL_mmloader___ToolContext___option_context(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(10);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1810,7 +1805,7 @@ void mmloader___ToolContext___init(val_t p0, int* init_table){
   return;
 }
 void mmloader___ToolContext___process_options(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -1824,175 +1819,178 @@ void mmloader___ToolContext___process_options(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_mmloader;
-  fra.me.line = 217;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_mmloader___ToolContext___process_options;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./mmloader.nit:221 */
-  fra.me.REG[1] = CALL_mmloader___ToolContext___option_context(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_standard___string___Object___args(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_opts___OptionContext___parse(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./mmloader.nit:224 */
-  fra.me.REG[2] = CALL_mmloader___ToolContext___opt_verbose(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./mmloader.nit:216 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./mmloader.nit:220 */
+  fra.me.REG[2] = CALL_mmloader___ToolContext___option_context(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_standard___string___Object___args(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_opts___OptionContext___parse(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+  /* ./mmloader.nit:223 */
+  fra.me.REG[3] = CALL_mmloader___ToolContext___opt_verbose(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
+  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[1]) = fra.me.REG[3];
+  /* ./mmloader.nit:226 */
+  fra.me.REG[3] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_opts___Option___value(fra.me.REG[2])(fra.me.REG[2]);
-  ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:227 */
-  fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_mmloader___ToolContext___opt_path(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_opts___Option___value(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[1]);
-  /* ./mmloader.nit:229 */
+  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  /* ./mmloader.nit:228 */
   if (!once_value_1) {
     if (!once_value_2) {
-      fra.me.REG[1] = BOX_NativeString("NIT_PATH");
+      fra.me.REG[2] = BOX_NativeString("NIT_PATH");
       REGB0 = TAG_Int(8);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-      once_value_2 = fra.me.REG[1];
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_2 = fra.me.REG[2];
       register_static_object(&once_value_2);
-    } else fra.me.REG[1] = once_value_2;
-    fra.me.REG[1] = fra.me.REG[1];
-    fra.me.REG[1] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[1] = CALL_standard___environ___Symbol___environ(fra.me.REG[1])(fra.me.REG[1]);
-    once_value_1 = fra.me.REG[1];
+    } else fra.me.REG[2] = once_value_2;
+    fra.me.REG[2] = fra.me.REG[2];
+    fra.me.REG[2] = CALL_standard___symbol___String___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = CALL_standard___environ___Symbol___environ(fra.me.REG[2])(fra.me.REG[2]);
+    once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
-  } else fra.me.REG[1] = once_value_1;
-  fra.me.REG[1] = fra.me.REG[1];
-  /* ./mmloader.nit:230 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
+  } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
+  /* ./mmloader.nit:229 */
+  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)) {
-    /* ./mmloader.nit:231 */
-    fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./mmloader.nit:230 */
+    fra.me.REG[3] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Char(':');
-    fra.me.REG[3] = CALL_standard___string_search___String___split_with(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    fra.me.REG[4] = CALL_standard___string_search___String___split_with(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
-  /* ./mmloader.nit:234 */
+  /* ./mmloader.nit:233 */
   if (!once_value_3) {
     if (!once_value_4) {
-      fra.me.REG[3] = BOX_NativeString("NIT_DIR");
+      fra.me.REG[4] = BOX_NativeString("NIT_DIR");
       REGB0 = TAG_Int(7);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_4 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_4 = fra.me.REG[4];
       register_static_object(&once_value_4);
-    } else fra.me.REG[3] = once_value_4;
-    fra.me.REG[3] = fra.me.REG[3];
-    fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___environ___Symbol___environ(fra.me.REG[3])(fra.me.REG[3]);
-    once_value_3 = fra.me.REG[3];
+    } else fra.me.REG[4] = once_value_4;
+    fra.me.REG[4] = fra.me.REG[4];
+    fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[4] = CALL_standard___environ___Symbol___environ(fra.me.REG[4])(fra.me.REG[4]);
+    once_value_3 = fra.me.REG[4];
     register_static_object(&once_value_3);
-  } else fra.me.REG[3] = once_value_3;
-  fra.me.REG[3] = fra.me.REG[3];
-  fra.me.REG[1] = fra.me.REG[3];
-  /* ./mmloader.nit:235 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
+  } else fra.me.REG[4] = once_value_3;
+  fra.me.REG[4] = fra.me.REG[4];
+  fra.me.REG[2] = fra.me.REG[4];
+  /* ./mmloader.nit:234 */
+  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)) {
-    /* ./mmloader.nit:236 */
+    /* ./mmloader.nit:235 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
-      fra.me.REG[2] = BOX_NativeString("");
+      fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_5 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
-    } else fra.me.REG[2] = once_value_5;
-    fra.me.REG[2] = fra.me.REG[2];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+    } else fra.me.REG[3] = once_value_5;
+    fra.me.REG[3] = fra.me.REG[3];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
     if (!once_value_6) {
-      fra.me.REG[1] = BOX_NativeString("/lib");
+      fra.me.REG[2] = BOX_NativeString("/lib");
       REGB0 = TAG_Int(4);
-      fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-      once_value_6 = fra.me.REG[1];
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_6 = fra.me.REG[2];
       register_static_object(&once_value_6);
-    } else fra.me.REG[1] = once_value_6;
-    fra.me.REG[1] = fra.me.REG[1];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./mmloader.nit:237 */
-    REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
+    } else fra.me.REG[2] = once_value_6;
+    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[2]);
+    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+    /* ./mmloader.nit:236 */
+    REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      fra.me.REG[1] = CALL_mmloader___ToolContext___paths(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[3]);
+      fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     }
   }
-  /* ./mmloader.nit:240 */
+  /* ./mmloader.nit:239 */
   REGB0 = TAG_Int(3);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_7) {
-    fra.me.REG[1] = BOX_NativeString("");
+    fra.me.REG[2] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_7 = fra.me.REG[1];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_7 = fra.me.REG[2];
     register_static_object(&once_value_7);
-  } else fra.me.REG[1] = once_value_7;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[1] = CALL_standard___kernel___Object___sys(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_standard___string___Sys___program_name(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[1] = CALL_standard___file___String___dirname(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+  } else fra.me.REG[2] = once_value_7;
+  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[2]);
+  fra.me.REG[2] = CALL_standard___kernel___Object___sys(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = CALL_standard___string___Sys___program_name(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[2] = CALL_standard___file___String___dirname(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[2]);
   if (!once_value_8) {
-    fra.me.REG[1] = BOX_NativeString("/../lib");
+    fra.me.REG[2] = BOX_NativeString("/../lib");
     REGB0 = TAG_Int(7);
-    fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB0);
-    once_value_8 = fra.me.REG[1];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_8 = fra.me.REG[2];
     register_static_object(&once_value_8);
-  } else fra.me.REG[1] = once_value_8;
-  fra.me.REG[1] = fra.me.REG[1];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./mmloader.nit:241 */
-  REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
+  } else fra.me.REG[2] = once_value_8;
+  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[2]);
+  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./mmloader.nit:240 */
+  REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[1] = CALL_mmloader___ToolContext___paths(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[3]);
+    fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
-  /* ./mmloader.nit:243 */
-  fra.me.REG[3] = CALL_mmloader___ToolContext___opt_log_dir(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./mmloader.nit:242 */
+  fra.me.REG[4] = CALL_mmloader___ToolContext___opt_log_dir(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_opts___Option___value(fra.me.REG[4])(fra.me.REG[4]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[3] = CALL_mmloader___ToolContext___opt_log_dir(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
+    fra.me.REG[4] = CALL_mmloader___ToolContext___opt_log_dir(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[4] = CALL_opts___Option___value(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_mmloader, 243);
+      nit_abort("Cast failed", NULL, LOCATE_mmloader, 242);
     }
-    ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[3];
+    ATTR_mmloader___ToolContext____log_directory(fra.me.REG[1]) = fra.me.REG[4];
   }
-  /* ./mmloader.nit:244 */
-  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0])!=NIT_NULL);
+  /* ./mmloader.nit:243 */
+  REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____opt_log(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_mmloader, 244);
+    nit_abort("Uninitialized attribute %s", "_opt_log", LOCATE_mmloader, 243);
   }
-  fra.me.REG[3] = ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
-  if (UNTAG_Bool(fra.me.REG[3])) {
-    /* ./mmloader.nit:246 */
-    fra.me.REG[0] = CALL_mmloader___ToolContext___log_directory(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_standard___file___String___mkdir(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = ATTR_mmloader___ToolContext____opt_log(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_opts___Option___value(fra.me.REG[4])(fra.me.REG[4]);
+  if (UNTAG_Bool(fra.me.REG[4])) {
+    /* ./mmloader.nit:245 */
+    fra.me.REG[1] = CALL_mmloader___ToolContext___log_directory(fra.me.REG[1])(fra.me.REG[1]);
+    CALL_standard___file___String___mkdir(fra.me.REG[1])(fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -2007,7 +2005,7 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
           static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 250;
+  fra.me.line = 249;
   fra.me.meth = LOCATE_mmloader___ToolContext___try_to_load;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -2024,54 +2022,60 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:256 */
+  /* ./mmloader.nit:255 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMDirectory___modules(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead___values(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_mmloader___ToolContext___try_to_load_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ./mmloader.nit:262 */
+  /* ./mmloader.nit:261 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 262);
+    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 261);
   }
   fra.me.REG[4] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./mmloader.nit:263 */
+      /* ./mmloader.nit:262 */
       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]);
-      /* ./mmloader.nit:264 */
+      /* ./mmloader.nit:263 */
       REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -2086,9 +2090,9 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
       }
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
-        /* ./mmloader.nit:265 */
+        /* ./mmloader.nit:264 */
         fra.me.REG[8] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[7]);
-        /* ./mmloader.nit:266 */
+        /* ./mmloader.nit:265 */
         REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
@@ -2103,34 +2107,34 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
         }
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
         if (UNTAG_Bool(REGB1)) {
-          /* ./mmloader.nit:267 */
+          /* ./mmloader.nit:266 */
           REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_mmloader, 267);
+            nit_abort("Reciever is null", NULL, LOCATE_mmloader, 266);
           }
           CALL_metamodel___abstractmetamodel___MMDirectory___owner__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-          /* ./mmloader.nit:268 */
+          /* ./mmloader.nit:267 */
           CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
-          /* ./mmloader.nit:269 */
+          /* ./mmloader.nit:268 */
           fra.me.REG[3] = fra.me.REG[8];
           goto label3;
         }
       }
-      /* ./mmloader.nit:273 */
+      /* ./mmloader.nit:272 */
       REGB1 = CALL_mmloader___ModuleLoader___can_handle(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1], fra.me.REG[2]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./mmloader.nit:274 */
+        /* ./mmloader.nit:273 */
         fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        /* ./mmloader.nit:275 */
+        /* ./mmloader.nit:274 */
         REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 275);
+          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 274);
         }
         fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
         REGB1 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./mmloader.nit:277 */
+          /* ./mmloader.nit:276 */
           REGB1 = TAG_Int(3);
           fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_4) {
@@ -2156,43 +2160,43 @@ val_t mmloader___ToolContext___try_to_load(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_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[7]);
         }
-        /* ./mmloader.nit:279 */
+        /* ./mmloader.nit:278 */
         REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 279);
+          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 278);
         }
         fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-        /* ./mmloader.nit:280 */
+        /* ./mmloader.nit:279 */
         fra.me.REG[6] = CALL_mmloader___ModuleLoader___load_and_process_module(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-        /* ./mmloader.nit:281 */
+        /* ./mmloader.nit:280 */
         REGB1 = TAG_Bool(ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 281);
+          nit_abort("Uninitialized attribute %s", "_processing_modules", LOCATE_mmloader, 280);
         }
         fra.me.REG[7] = ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]);
         CALL_standard___collection___abstract_collection___RemovableCollection___remove(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-        /* ./mmloader.nit:283 */
+        /* ./mmloader.nit:282 */
         CALL_metamodel___abstractmetamodel___MMDirectory___add_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-        /* ./mmloader.nit:284 */
+        /* ./mmloader.nit:283 */
         fra.me.REG[3] = fra.me.REG[6];
         goto label3;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./mmloader.nit:287 */
+  /* ./mmloader.nit:286 */
   fra.me.REG[3] = NIT_NULL;
   goto label3;
   label3: while(0);
@@ -2217,7 +2221,7 @@ val_t mmloader___ToolContext___try_to_load(val_t p0, val_t p1, val_t p2){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./mmloader.nit:257 */
+    /* ./mmloader.nit:256 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___name(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[1]));
     if (UNTAG_Bool(REGB0)) {
@@ -2246,7 +2250,7 @@ val_t mmloader___ToolContext___get_module_from_filename(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_mmloader;
-  fra.me.line = 294;
+  fra.me.line = 293;
   fra.me.meth = LOCATE_mmloader___ToolContext___get_module_from_filename;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -2259,9 +2263,9 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./mmloader.nit:299 */
+  /* ./mmloader.nit:298 */
   fra.me.REG[2] = CALL_standard___file___String___dirname(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./mmloader.nit:300 */
+  /* ./mmloader.nit:299 */
   if (!once_value_1) {
     fra.me.REG[3] = BOX_NativeString(".nit");
     REGB0 = TAG_Int(4);
@@ -2272,9 +2276,9 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   fra.me.REG[3] = fra.me.REG[3];
   fra.me.REG[3] = CALL_standard___file___String___basename(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./mmloader.nit:302 */
+  /* ./mmloader.nit:301 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./mmloader.nit:304 */
+  /* ./mmloader.nit:303 */
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
@@ -2283,9 +2287,9 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:307 */
+    /* ./mmloader.nit:306 */
     fra.me.REG[4] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
-    /* ./mmloader.nit:308 */
+    /* ./mmloader.nit:307 */
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2302,16 +2306,16 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       goto label2;
     }
-    /* ./mmloader.nit:311 */
+    /* ./mmloader.nit:310 */
     fra.me.REG[5] = CALL_mmloader___ToolContext___get_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], NIT_NULL);
     fra.me.REG[4] = fra.me.REG[5];
     goto label2;
   }
-  /* ./mmloader.nit:314 */
+  /* ./mmloader.nit:313 */
   REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:315 */
+    /* ./mmloader.nit:314 */
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_3) {
@@ -2335,12 +2339,12 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     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]);
     CALL_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[5]);
-    /* ./mmloader.nit:316 */
-    nit_abort("Aborted", NULL, LOCATE_mmloader, 316);
+    /* ./mmloader.nit:315 */
+    nit_abort("Aborted", NULL, LOCATE_mmloader, 315);
   }
-  /* ./mmloader.nit:320 */
+  /* ./mmloader.nit:319 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
-  /* ./mmloader.nit:321 */
+  /* ./mmloader.nit:320 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2358,7 +2362,7 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
     fra.me.REG[4] = fra.me.REG[2];
     goto label2;
   }
-  /* ./mmloader.nit:323 */
+  /* ./mmloader.nit:322 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_5) {
@@ -2382,8 +2386,8 @@ val_t mmloader___ToolContext___get_module_from_filename(val_t p0, val_t p1){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[2]);
-  /* ./mmloader.nit:324 */
-  nit_abort("Aborted", NULL, LOCATE_mmloader, 324);
+  /* ./mmloader.nit:323 */
+  nit_abort("Aborted", NULL, LOCATE_mmloader, 323);
   label2: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[4];
@@ -2398,7 +2402,7 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 327;
+  fra.me.line = 326;
   fra.me.meth = LOCATE_mmloader___ToolContext___get_module;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2411,7 +2415,7 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:331 */
+  /* ./mmloader.nit:330 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2426,13 +2430,13 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:332 */
+    /* ./mmloader.nit:331 */
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_mmloader, 332);
+      nit_abort("Reciever is null", NULL, LOCATE_mmloader, 331);
     }
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___directory(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./mmloader.nit:333 */
+    /* ./mmloader.nit:332 */
     while(1) {
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
@@ -2448,9 +2452,9 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./mmloader.nit:334 */
+        /* ./mmloader.nit:333 */
         fra.me.REG[3] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-        /* ./mmloader.nit:335 */
+        /* ./mmloader.nit:334 */
         REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
@@ -2467,57 +2471,62 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
         if (UNTAG_Bool(REGB0)) {
           goto label1;
         }
-        /* ./mmloader.nit:336 */
+        /* ./mmloader.nit:335 */
         REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_mmloader, 336);
+          nit_abort("Reciever is null", NULL, LOCATE_mmloader, 335);
         }
         fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMDirectory___parent(fra.me.REG[2])(fra.me.REG[2]);
         fra.me.REG[2] = fra.me.REG[4];
       } else {
-        /* ./mmloader.nit:333 */
+        /* ./mmloader.nit:332 */
         goto label2;
       }
     }
     label2: while(0);
   }
-  /* ./mmloader.nit:340 */
+  /* ./mmloader.nit:339 */
   fra.me.REG[2] = CALL_mmloader___ToolContext___paths(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./mmloader.nit:341 */
+      /* ./mmloader.nit:340 */
       fra.me.REG[5] = CALL_mmloader___ToolContext___directory_for(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
       fra.me.REG[5] = CALL_mmloader___ToolContext___try_to_load(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
-      /* ./mmloader.nit:342 */
+      /* ./mmloader.nit:341 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -2535,19 +2544,19 @@ 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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./mmloader.nit:345 */
+  /* ./mmloader.nit:344 */
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_4) {
@@ -2572,8 +2581,8 @@ val_t mmloader___ToolContext___get_module(val_t p0, val_t p1, val_t p2){
   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_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
-  /* ./mmloader.nit:346 */
-  nit_abort("Aborted", NULL, LOCATE_mmloader, 346);
+  /* ./mmloader.nit:345 */
+  nit_abort("Aborted", NULL, LOCATE_mmloader, 345);
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
@@ -2584,7 +2593,7 @@ val_t mmloader___ToolContext___directory_for(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 349;
+  fra.me.line = 348;
   fra.me.meth = LOCATE_mmloader___ToolContext___directory_for;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2594,11 +2603,11 @@ val_t mmloader___ToolContext___directory_for(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./mmloader.nit:352 */
+  /* ./mmloader.nit:351 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 352);
+    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 351);
   }
   fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
@@ -2606,24 +2615,24 @@ val_t mmloader___ToolContext___directory_for(val_t p0, val_t p1){
     REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 352);
+      nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 351);
     }
     fra.me.REG[2] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
     goto label1;
   }
-  /* ./mmloader.nit:353 */
+  /* ./mmloader.nit:352 */
   fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[3], fra.me.REG[1], NIT_NULL);
-  /* ./mmloader.nit:354 */
+  /* ./mmloader.nit:353 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 354);
+    nit_abort("Uninitialized attribute %s", "_path_dirs", LOCATE_mmloader, 353);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
-  /* ./mmloader.nit:355 */
+  /* ./mmloader.nit:354 */
   fra.me.REG[2] = fra.me.REG[3];
   goto label1;
   label1: while(0);
@@ -2636,7 +2645,7 @@ void mmloader___ToolContext___register_loader(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 361;
+  fra.me.line = 360;
   fra.me.meth = LOCATE_mmloader___ToolContext___register_loader;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2644,11 +2653,11 @@ void mmloader___ToolContext___register_loader(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./mmloader.nit:362 */
+  /* ./mmloader.nit:361 */
   REGB0 = TAG_Bool(ATTR_mmloader___ToolContext____loaders(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 362);
+    nit_abort("Uninitialized attribute %s", "_loaders", LOCATE_mmloader, 361);
   }
   fra.me.REG[0] = ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
@@ -2660,12 +2669,12 @@ val_t mmloader___ModuleLoader___file_type(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 370;
+  fra.me.line = 369;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___file_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./mmloader.nit:370 */
-  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 370);
+  /* ./mmloader.nit:369 */
+  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 369);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2678,7 +2687,7 @@ val_t mmloader___ModuleLoader___try_to_load_dir(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_mmloader;
-  fra.me.line = 373;
+  fra.me.line = 372;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___try_to_load_dir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2689,7 +2698,7 @@ val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:376 */
+  /* ./mmloader.nit:375 */
   REGB0 = TAG_Int(5);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2724,17 +2733,17 @@ val_t mmloader___ModuleLoader___try_to_load_dir(val_t p0, val_t p1, val_t p2){
   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]);
-  /* ./mmloader.nit:377 */
+  /* ./mmloader.nit:376 */
   REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[3] = NIT_NULL;
     goto label4;
   }
-  /* ./mmloader.nit:379 */
+  /* ./mmloader.nit:378 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMDirectory___full_name_for(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   fra.me.REG[2] = NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-  /* ./mmloader.nit:380 */
+  /* ./mmloader.nit:379 */
   fra.me.REG[3] = fra.me.REG[2];
   goto label4;
   label4: while(0);
@@ -2752,7 +2761,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 383;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___can_handle;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2764,7 +2773,7 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./mmloader.nit:387 */
+  /* ./mmloader.nit:386 */
   REGB0 = TAG_Int(7);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2810,13 +2819,13 @@ val_t mmloader___ModuleLoader___can_handle(val_t p0, val_t p1, val_t p2){
   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]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./mmloader.nit:388 */
+  /* ./mmloader.nit:387 */
   REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(true);
     goto label5;
   }
-  /* ./mmloader.nit:389 */
+  /* ./mmloader.nit:388 */
   REGB1 = TAG_Bool(false);
   REGB0 = REGB1;
   goto label5;
@@ -2834,7 +2843,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 392;
+  fra.me.line = 391;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___load_and_process_module;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2848,7 +2857,7 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./mmloader.nit:396 */
+  /* ./mmloader.nit:395 */
   REGB0 = TAG_Int(7);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2894,16 +2903,16 @@ val_t mmloader___ModuleLoader___load_and_process_module(val_t p0, val_t p1, val_
   fra.me.REG[5] = fra.me.REG[5];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./mmloader.nit:397 */
+  /* ./mmloader.nit:396 */
   fra.me.REG[4] = CALL_mmloader___ModuleLoader___load_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
-  /* ./mmloader.nit:398 */
+  /* ./mmloader.nit:397 */
   fra.me.REG[3] = CALL_mmloader___ToolContext___opt_only_parse(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = CALL_opts___Option___value(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(!UNTAG_Bool(fra.me.REG[3]));
   if (UNTAG_Bool(REGB0)) {
     CALL_mmloader___ModuleLoader___process_metamodel(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./mmloader.nit:399 */
+  /* ./mmloader.nit:398 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
@@ -2919,7 +2928,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_mmloader;
-  fra.me.line = 402;
+  fra.me.line = 401;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___load_module;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -2936,7 +2945,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* ./mmloader.nit:406 */
+  /* ./mmloader.nit:405 */
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("-");
     REGB0 = TAG_Int(1);
@@ -2952,18 +2961,18 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:407 */
+    /* ./mmloader.nit:406 */
     fra.me.REG[5] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./mmloader.nit:409 */
+    /* ./mmloader.nit:408 */
     fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[6] = NEW_IFStream_standard___file___IFStream___open(fra.me.REG[6]);
     fra.me.REG[5] = fra.me.REG[6];
   }
-  /* ./mmloader.nit:412 */
+  /* ./mmloader.nit:411 */
   REGB0 = CALL_standard___stream___IStream___eof(fra.me.REG[5])(fra.me.REG[5]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./mmloader.nit:413 */
+    /* ./mmloader.nit:412 */
     REGB0 = TAG_Int(3);
     fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -2988,9 +2997,9 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
     fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
     CALL_mmloader___ToolContext___fatal_error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
   }
-  /* ./mmloader.nit:415 */
+  /* ./mmloader.nit:414 */
   fra.me.REG[3] = CALL_mmloader___ModuleLoader___parse_file(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], fra.me.REG[2], fra.me.REG[3]);
-  /* ./mmloader.nit:416 */
+  /* ./mmloader.nit:415 */
   fra.me.REG[0] = CALL_standard___file___Object___stdin(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[5],fra.me.REG[0]));
   if (UNTAG_Bool(REGB0)) {
@@ -3002,7 +3011,7 @@ val_t mmloader___ModuleLoader___load_module(val_t p0, val_t p1, val_t p2, val_t
   if (UNTAG_Bool(REGB0)) {
     CALL_standard___stream___IOS___close(fra.me.REG[5])(fra.me.REG[5]);
   }
-  /* ./mmloader.nit:417 */
+  /* ./mmloader.nit:416 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -3013,26 +3022,36 @@ val_t mmloader___ModuleLoader___parse_file(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_mmloader;
-  fra.me.line = 420;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___parse_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./mmloader.nit:420 */
-  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 420);
+  /* ./mmloader.nit:419 */
+  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 419);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
 void mmloader___ModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me;} fra;
+  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_mmloader;
-  fra.me.line = 423;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_mmloader___ModuleLoader___process_metamodel;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  /* ./mmloader.nit:423 */
-  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 423);
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p2;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_mmloader___ModuleLoader___MODULE(fra.me.REG[0]), VTID_mmloader___ModuleLoader___MODULE(fra.me.REG[0]))) /*cast MODULE*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_mmloader, 0);
+  }
+  /* ./mmloader.nit:422 */
+  nit_abort("Deferred method called", NULL, LOCATE_mmloader, 422);
   stack_frame_head = fra.me.prev;
   return;
 }
index bf54a00..1f92af7 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/mmloader. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./mmloader. */
 #ifndef mmloader_sep
 #define mmloader_sep
 #include "metamodel._sep.h"
@@ -78,14 +78,16 @@ extern const int SFT_mmloader[];
 #define ID_mmloader___ModuleLoader (SFT_mmloader[8])
 #define COLOR_mmloader___ModuleLoader (SFT_mmloader[9])
 #define INIT_TABLE_POS_mmloader___ModuleLoader (SFT_mmloader[10] + 0)
-#define CALL_mmloader___ModuleLoader___file_type(recv) ((mmloader___ModuleLoader___file_type_t)CALL((recv), (SFT_mmloader[10] + 1)))
-#define CALL_mmloader___ModuleLoader___try_to_load_dir(recv) ((mmloader___ModuleLoader___try_to_load_dir_t)CALL((recv), (SFT_mmloader[10] + 2)))
-#define CALL_mmloader___ModuleLoader___can_handle(recv) ((mmloader___ModuleLoader___can_handle_t)CALL((recv), (SFT_mmloader[10] + 3)))
-#define CALL_mmloader___ModuleLoader___load_and_process_module(recv) ((mmloader___ModuleLoader___load_and_process_module_t)CALL((recv), (SFT_mmloader[10] + 4)))
-#define CALL_mmloader___ModuleLoader___load_module(recv) ((mmloader___ModuleLoader___load_module_t)CALL((recv), (SFT_mmloader[10] + 5)))
-#define CALL_mmloader___ModuleLoader___parse_file(recv) ((mmloader___ModuleLoader___parse_file_t)CALL((recv), (SFT_mmloader[10] + 6)))
-#define CALL_mmloader___ModuleLoader___process_metamodel(recv) ((mmloader___ModuleLoader___process_metamodel_t)CALL((recv), (SFT_mmloader[10] + 7)))
-#define CALL_mmloader___ModuleLoader___init(recv) ((mmloader___ModuleLoader___init_t)CALL((recv), (SFT_mmloader[10] + 8)))
+#define VTID_mmloader___ModuleLoader___MODULE(recv) (VAL2VFT(recv)[SFT_mmloader[10] + 1].i)
+#define VTCOLOR_mmloader___ModuleLoader___MODULE(recv) (VAL2VFT(recv)[SFT_mmloader[10] + 2].i)
+#define CALL_mmloader___ModuleLoader___file_type(recv) ((mmloader___ModuleLoader___file_type_t)CALL((recv), (SFT_mmloader[10] + 3)))
+#define CALL_mmloader___ModuleLoader___try_to_load_dir(recv) ((mmloader___ModuleLoader___try_to_load_dir_t)CALL((recv), (SFT_mmloader[10] + 4)))
+#define CALL_mmloader___ModuleLoader___can_handle(recv) ((mmloader___ModuleLoader___can_handle_t)CALL((recv), (SFT_mmloader[10] + 5)))
+#define CALL_mmloader___ModuleLoader___load_and_process_module(recv) ((mmloader___ModuleLoader___load_and_process_module_t)CALL((recv), (SFT_mmloader[10] + 6)))
+#define CALL_mmloader___ModuleLoader___load_module(recv) ((mmloader___ModuleLoader___load_module_t)CALL((recv), (SFT_mmloader[10] + 7)))
+#define CALL_mmloader___ModuleLoader___parse_file(recv) ((mmloader___ModuleLoader___parse_file_t)CALL((recv), (SFT_mmloader[10] + 8)))
+#define CALL_mmloader___ModuleLoader___process_metamodel(recv) ((mmloader___ModuleLoader___process_metamodel_t)CALL((recv), (SFT_mmloader[10] + 9)))
+#define CALL_mmloader___ModuleLoader___init(recv) ((mmloader___ModuleLoader___init_t)CALL((recv), (SFT_mmloader[10] + 10)))
 static const char * const LOCATE_mmloader___Message___location = "mmloader::Message::location";
 val_t mmloader___Message___location(val_t p0);
 typedef val_t (*mmloader___Message___location_t)(val_t p0);
index 5812449..2edbe16 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/native_interface/native_interface. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./native_interface/native_interface. */
 #ifndef native_interface_sep
 #define native_interface_sep
 #include "native_interface___frontier._sep.h"
index 2f7837d..f6d1623 100644 (file)
@@ -28,7 +28,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   static val_t once_value_24; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 26;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_native_interface___frontier___MMSrcModule___compile_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -40,7 +40,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:30 */
+  /* ./native_interface//frontier.nit:32 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -67,7 +67,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:33 */
+  /* ./native_interface//frontier.nit:35 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("#include <nit_common.h>\n");
@@ -78,7 +78,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:34 */
+  /* ./native_interface//frontier.nit:36 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -105,7 +105,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:36 */
+  /* ./native_interface//frontier.nit:38 */
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_6) {
@@ -131,7 +131,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   fra.me.REG[2] = fra.me.REG[2];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:37 */
+  /* ./native_interface//frontier.nit:39 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -156,7 +156,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:38 */
+  /* ./native_interface//frontier.nit:40 */
   fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -181,7 +181,7 @@ void native_interface___frontier___MMSrcModule___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]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:41 */
+  /* ./native_interface//frontier.nit:43 */
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_12) {
@@ -218,11 +218,11 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
   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]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:42 */
+  /* ./native_interface//frontier.nit:44 */
   REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:43 */
+    /* ./native_interface//frontier.nit:45 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_15) {
@@ -261,10 +261,10 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[2] = fra.me.REG[4];
   }
-  /* ./native_interface//frontier.nit:45 */
+  /* ./native_interface//frontier.nit:47 */
   REGB0 = CALL_standard___file___String___file_exists(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:46 */
+    /* ./native_interface//frontier.nit:48 */
     fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -290,7 +290,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:47 */
+    /* ./native_interface//frontier.nit:49 */
     fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -317,10 +317,10 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
-  /* ./native_interface//frontier.nit:50 */
+  /* ./native_interface//frontier.nit:52 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(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_native_interface___frontier___MMSrcModule___compile_frontier_22));
-  /* ./native_interface//frontier.nit:69 */
+  /* ./native_interface//frontier.nit:71 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_24) {
     fra.me.REG[0] = BOX_NativeString("#endif\n");
@@ -352,10 +352,10 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./native_interface//frontier.nit:52 */
+    /* ./native_interface//frontier.nit:54 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_native_interface___frontier___MMSrcModule___compile_frontier_23));
-    /* ./native_interface//frontier.nit:63 */
+    /* ./native_interface//frontier.nit:65 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
@@ -365,16 +365,16 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:64 */
+      /* ./native_interface//frontier.nit:66 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
     } else {
-      /* ./native_interface//frontier.nit:63 */
+      /* ./native_interface//frontier.nit:65 */
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:65 */
+      /* ./native_interface//frontier.nit:67 */
       CALL_native_interface___frontier___MMLocalClass___compile_defaut_extern_type(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     }
     stack_frame_head = fra.me.prev;
@@ -398,7 +398,7 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./native_interface//frontier.nit:55 */
+      /* ./native_interface//frontier.nit:57 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],closctx->REG[0]));
       if (UNTAG_Bool(REGB0)) {
@@ -407,23 +407,23 @@ void native_interface___frontier___MMSrcModule___compile_frontier(val_t p0, val_
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//frontier.nit:56 */
+        /* ./native_interface//frontier.nit:58 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
       } else {
-        /* ./native_interface//frontier.nit:55 */
+        /* ./native_interface//frontier.nit:57 */
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//frontier.nit:56 */
+        /* ./native_interface//frontier.nit:58 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMMethod___is_extern(fra.me.REG[0])(fra.me.REG[0]);
       } else {
-        /* ./native_interface//frontier.nit:55 */
+        /* ./native_interface//frontier.nit:57 */
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./native_interface//frontier.nit:57 */
+        /* ./native_interface//frontier.nit:59 */
         CALL_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
       }
       stack_frame_head = fra.me.prev;
@@ -436,7 +436,7 @@ void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 74;
+  fra.me.line = 76;
   fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -445,7 +445,7 @@ void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:77 */
+  /* ./native_interface//frontier.nit:79 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -461,27 +461,27 @@ void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:78 */
+    /* ./native_interface//frontier.nit:80 */
     fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(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_native_interface___frontier, 78);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 80);
     }
     CALL_native_interface___frontier___MMSignature___compile_frontier(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   }
-  /* ./native_interface//frontier.nit:81 */
+  /* ./native_interface//frontier.nit:83 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier_1));
-  /* ./native_interface//frontier.nit:90 */
+  /* ./native_interface//frontier.nit:92 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_native_interface___frontier___MMSrcMethod___compile_extern_to_frontier_2));
-  /* ./native_interface//frontier.nit:98 */
+  /* ./native_interface//frontier.nit:100 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:99 */
+    /* ./native_interface//frontier.nit:101 */
     CALL_native_interface___frontier___MMSrcMethod___compile_super_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
-  /* ./native_interface//frontier.nit:103 */
+  /* ./native_interface//frontier.nit:105 */
   CALL_native_interface___frontier___MMSrcMethod___compile_out_to_frontier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -502,10 +502,10 @@ void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./native_interface//frontier.nit:83 */
+    /* ./native_interface//frontier.nit:85 */
     fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___friendlys(closctx->REG[1])(closctx->REG[1]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* ./native_interface//frontier.nit:86 */
+    /* ./native_interface//frontier.nit:88 */
     fra.me.REG[0] = CALL_metamodel___static_type___MMExplicitImport___signature(fra.me.REG[0])(fra.me.REG[0]);
     CALL_native_interface___frontier___MMSignature___compile_frontier(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
@@ -528,14 +528,14 @@ void native_interface___frontier___MMSrcMethod___compile_extern_to_frontier(val_
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./native_interface//frontier.nit:91 */
+    /* ./native_interface//frontier.nit:93 */
     fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___casts(closctx->REG[1])(closctx->REG[1]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    /* ./native_interface//frontier.nit:93 */
+    /* ./native_interface//frontier.nit:95 */
     fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
     fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(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]);
-    /* ./native_interface//frontier.nit:94 */
+    /* ./native_interface//frontier.nit:96 */
     fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___types(closctx->REG[1])(closctx->REG[1]);
     fra.me.REG[0] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
@@ -546,6 +546,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -587,7 +588,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     static val_t once_value_39; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 106;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_super_to_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -604,7 +605,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:113 */
+  /* ./native_interface//frontier.nit:115 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -630,7 +631,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:114 */
+  /* ./native_interface//frontier.nit:116 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -657,7 +658,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:117 */
+  /* ./native_interface//frontier.nit:119 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -683,7 +684,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:118 */
+  /* ./native_interface//frontier.nit:120 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -721,7 +722,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:119 */
+  /* ./native_interface//frontier.nit:121 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString("#endif\n");
@@ -732,7 +733,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   } else fra.me.REG[3] = once_value_10;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:122 */
+  /* ./native_interface//frontier.nit:124 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -758,12 +759,12 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:123 */
+  /* ./native_interface//frontier.nit:125 */
   fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMMethod___friendly_super_csignature(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:126 */
+  /* ./native_interface//frontier.nit:128 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./native_interface//frontier.nit:129 */
+  /* ./native_interface//frontier.nit:131 */
   if (!once_value_13) {
     fra.me.REG[4] = BOX_NativeString("recv___nit");
     REGB0 = TAG_Int(10);
@@ -772,7 +773,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     register_static_object(&once_value_13);
   } else fra.me.REG[4] = once_value_13;
   fra.me.REG[4] = fra.me.REG[4];
-  /* ./native_interface//frontier.nit:130 */
+  /* ./native_interface//frontier.nit:132 */
   fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(3);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -797,7 +798,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   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]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-  /* ./native_interface//frontier.nit:131 */
+  /* ./native_interface//frontier.nit:133 */
   fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -813,7 +814,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 131);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 133);
   }
   fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
   if (!once_value_17) {
@@ -837,47 +838,52 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:132 */
+  /* ./native_interface//frontier.nit:134 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:135 */
+  /* ./native_interface//frontier.nit:137 */
   fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 135);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 137);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[5])(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//frontier.nit:136 */
+      /* ./native_interface//frontier.nit:138 */
       REGB1 = TAG_Int(3);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_19) {
@@ -903,7 +909,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
       fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[4] = fra.me.REG[7];
-      /* ./native_interface//frontier.nit:137 */
+      /* ./native_interface//frontier.nit:139 */
       fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Int(3);
       fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -928,7 +934,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
-      /* ./native_interface//frontier.nit:138 */
+      /* ./native_interface//frontier.nit:140 */
       fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Int(3);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -957,27 +963,27 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
       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_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
-      /* ./native_interface//frontier.nit:139 */
+      /* ./native_interface//frontier.nit:141 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label25;
     }
   }
   label25: while(0);
-  /* ./native_interface//frontier.nit:143 */
-  fra.me.REG[4] = NIT_NULL;
   /* ./native_interface//frontier.nit:145 */
+  fra.me.REG[4] = NIT_NULL;
+  /* ./native_interface//frontier.nit:147 */
   fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 145);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 147);
   }
   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);
@@ -994,18 +1000,18 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:146 */
+    /* ./native_interface//frontier.nit:148 */
     fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 146);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 148);
     }
     fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
     fra.me.REG[4] = fra.me.REG[6];
   }
-  /* ./native_interface//frontier.nit:149 */
+  /* ./native_interface//frontier.nit:151 */
   fra.me.REG[6] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./native_interface//frontier.nit:150 */
+  /* ./native_interface//frontier.nit:152 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1020,7 +1026,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:151 */
+    /* ./native_interface//frontier.nit:153 */
     fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(3);
     fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1035,7 +1041,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 151);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 153);
     }
     fra.me.REG[9] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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[9]);
@@ -1050,7 +1056,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
     fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-    /* ./native_interface//frontier.nit:152 */
+    /* ./native_interface//frontier.nit:154 */
     fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[2])(fra.me.REG[2]);
     if (!once_value_28) {
       fra.me.REG[5] = BOX_NativeString("val_t return___nit;\n");
@@ -1061,7 +1067,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     } else fra.me.REG[5] = once_value_28;
     fra.me.REG[5] = fra.me.REG[5];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:153 */
+    /* ./native_interface//frontier.nit:155 */
     if (!once_value_29) {
       fra.me.REG[5] = BOX_NativeString("return___nit = ");
       REGB0 = TAG_Int(15);
@@ -1072,7 +1078,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     fra.me.REG[5] = fra.me.REG[5];
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   }
-  /* ./native_interface//frontier.nit:156 */
+  /* ./native_interface//frontier.nit:158 */
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_30) {
@@ -1097,7 +1103,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:158 */
+  /* ./native_interface//frontier.nit:160 */
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_32) {
@@ -1130,11 +1136,11 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:160 */
+  /* ./native_interface//frontier.nit:162 */
   fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-  /* ./native_interface//frontier.nit:163 */
+  /* ./native_interface//frontier.nit:165 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1149,7 +1155,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:165 */
+    /* ./native_interface//frontier.nit:167 */
     fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1180,7 +1186,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     fra.me.REG[3] = fra.me.REG[3];
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 165);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 167);
     }
     fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
@@ -1195,7 +1201,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:166 */
+    /* ./native_interface//frontier.nit:168 */
     fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[2])(fra.me.REG[2]);
     if (!once_value_39) {
       fra.me.REG[6] = BOX_NativeString("return return___nitni;\n");
@@ -1207,7 +1213,7 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
     fra.me.REG[6] = fra.me.REG[6];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
-  /* ./native_interface//frontier.nit:169 */
+  /* ./native_interface//frontier.nit:171 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
@@ -1215,9 +1221,10 @@ void native_interface___frontier___MMSrcMethod___compile_super_to_frontier(val_t
   return;
 }
 void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -1254,10 +1261,10 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
     static val_t once_value_34; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 172;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_native_interface___frontier___MMSrcMethod___compile_out_to_frontier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 11;
+  fra.me.REG_size = 12;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1269,572 +1276,580 @@ void native_interface___frontier___MMSrcMethod___compile_out_to_frontier(val_t p
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:178 */
-  fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./native_interface//frontier.nit:174 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./native_interface//frontier.nit:180 */
+  fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
-    fra.me.REG[4] = BOX_NativeString("\n/* out/indirect function for ");
+    fra.me.REG[5] = BOX_NativeString("\n/* out/indirect function for ");
     REGB0 = TAG_Int(30);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_1 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_1 = fra.me.REG[5];
     register_static_object(&once_value_1);
-  } else fra.me.REG[4] = once_value_1;
-  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[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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[4]);
+  } else fra.me.REG[5] = once_value_1;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   if (!once_value_2) {
-    fra.me.REG[4] = BOX_NativeString(" */\n");
+    fra.me.REG[5] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_2 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_2 = fra.me.REG[5];
     register_static_object(&once_value_2);
-  } else fra.me.REG[4] = once_value_2;
-  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]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:179 */
-  fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
+  } else fra.me.REG[5] = once_value_2;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./native_interface//frontier.nit:181 */
+  fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_3) {
-    fra.me.REG[4] = BOX_NativeString("");
+    fra.me.REG[5] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_3 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_3 = fra.me.REG[5];
     register_static_object(&once_value_3);
-  } else fra.me.REG[4] = once_value_3;
-  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]);
-  fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+  } else fra.me.REG[5] = once_value_3;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   if (!once_value_4) {
-    fra.me.REG[4] = BOX_NativeString(";\n");
+    fra.me.REG[5] = BOX_NativeString(";\n");
     REGB0 = TAG_Int(2);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_4 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_4 = fra.me.REG[5];
     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[2])(fra.me.REG[2], fra.me.REG[4]);
-  fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:182 */
-  fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
+  } else fra.me.REG[5] = once_value_4;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  /* ./native_interface//frontier.nit:184 */
+  fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_5) {
-    fra.me.REG[4] = BOX_NativeString("/* out/indirect function for ");
+    fra.me.REG[5] = BOX_NativeString("/* out/indirect function for ");
     REGB0 = TAG_Int(29);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_5 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_5 = fra.me.REG[5];
     register_static_object(&once_value_5);
-  } else fra.me.REG[4] = once_value_5;
-  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[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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[4]);
+  } else fra.me.REG[5] = once_value_5;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   if (!once_value_6) {
-    fra.me.REG[4] = BOX_NativeString(" */\n");
+    fra.me.REG[5] = BOX_NativeString(" */\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-    once_value_6 = fra.me.REG[4];
+    fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+    once_value_6 = fra.me.REG[5];
     register_static_object(&once_value_6);
-  } else fra.me.REG[4] = once_value_6;
-  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]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:183 */
-  fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:186 */
-  fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
+  } else fra.me.REG[5] = once_value_6;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+  /* ./native_interface//frontier.nit:185 */
+  fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___out_csignature(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[4]);
   /* ./native_interface//frontier.nit:188 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = NEW_List_standard___collection___list___List___init();
+  /* ./native_interface//frontier.nit:190 */
+  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:189 */
+    /* ./native_interface//frontier.nit:191 */
     if (!once_value_7) {
-      fra.me.REG[4] = BOX_NativeString("recv___nitni");
+      fra.me.REG[5] = BOX_NativeString("recv___nitni");
       REGB0 = TAG_Int(12);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_7 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_7 = fra.me.REG[5];
       register_static_object(&once_value_7);
-    } else fra.me.REG[4] = once_value_7;
-    fra.me.REG[4] = fra.me.REG[4];
-    /* ./native_interface//frontier.nit:190 */
-    fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
+    } else fra.me.REG[5] = once_value_7;
+    fra.me.REG[5] = fra.me.REG[5];
+    /* ./native_interface//frontier.nit:192 */
+    fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(5);
-    fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_8) {
-      fra.me.REG[7] = BOX_NativeString("");
+      fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-      once_value_8 = fra.me.REG[7];
+      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      once_value_8 = fra.me.REG[8];
       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]);
-    fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    } else fra.me.REG[8] = once_value_8;
+    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]);
+    fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(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_native_interface___frontier, 190);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 192);
     }
-    fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
-    fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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]);
+    fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
+    fra.me.REG[8] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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]);
     if (!once_value_9) {
-      fra.me.REG[7] = BOX_NativeString(" ");
+      fra.me.REG[8] = BOX_NativeString(" ");
       REGB0 = TAG_Int(1);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-      once_value_9 = fra.me.REG[7];
+      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      once_value_9 = fra.me.REG[8];
       register_static_object(&once_value_9);
-    } else fra.me.REG[7] = once_value_9;
-    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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+    } else fra.me.REG[8] = once_value_9;
+    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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
     if (!once_value_10) {
-      fra.me.REG[7] = BOX_NativeString(";\n");
+      fra.me.REG[8] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-      once_value_10 = fra.me.REG[7];
+      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      once_value_10 = fra.me.REG[8];
       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___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]);
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./native_interface//frontier.nit:191 */
-    fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
+    } else fra.me.REG[8] = once_value_10;
+    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]);
+    fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+    /* ./native_interface//frontier.nit:193 */
+    fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_11) {
-      fra.me.REG[7] = BOX_NativeString("");
+      fra.me.REG[8] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-      once_value_11 = fra.me.REG[7];
+      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+      once_value_11 = fra.me.REG[8];
       register_static_object(&once_value_11);
-    } else fra.me.REG[7] = once_value_11;
-    fra.me.REG[7] = fra.me.REG[7];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
-    fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    } else fra.me.REG[8] = once_value_11;
+    fra.me.REG[8] = fra.me.REG[8];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+    fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(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_native_interface___frontier, 191);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 193);
     }
-    fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
+    fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
     if (!once_value_12) {
-      fra.me.REG[8] = BOX_NativeString("recv");
+      fra.me.REG[9] = BOX_NativeString("recv");
       REGB0 = TAG_Int(4);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
-      once_value_12 = fra.me.REG[8];
+      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
+      once_value_12 = fra.me.REG[9];
       register_static_object(&once_value_12);
-    } else fra.me.REG[8] = once_value_12;
-    fra.me.REG[8] = fra.me.REG[8];
-    fra.me.REG[8] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4], fra.me.REG[8]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
+    } else fra.me.REG[9] = once_value_12;
+    fra.me.REG[9] = fra.me.REG[9];
+    fra.me.REG[9] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5], fra.me.REG[9]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
     if (!once_value_13) {
-      fra.me.REG[8] = BOX_NativeString(";\n");
+      fra.me.REG[9] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
-      once_value_13 = fra.me.REG[8];
+      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
+      once_value_13 = fra.me.REG[9];
       register_static_object(&once_value_13);
-    } else fra.me.REG[8] = once_value_13;
-    fra.me.REG[8] = fra.me.REG[8];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
-    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:192 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+    } else fra.me.REG[9] = once_value_13;
+    fra.me.REG[9] = fra.me.REG[9];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
+    fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+    /* ./native_interface//frontier.nit:194 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
-  /* ./native_interface//frontier.nit:195 */
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* ./native_interface//frontier.nit:197 */
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 195);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 197);
   }
-  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    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*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//frontier.nit:196 */
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
+      /* ./native_interface//frontier.nit:198 */
       REGB1 = TAG_Int(3);
-      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_14) {
-        fra.me.REG[7] = BOX_NativeString("");
+        fra.me.REG[8] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-        once_value_14 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+        once_value_14 = fra.me.REG[8];
         register_static_object(&once_value_14);
-      } else fra.me.REG[7] = once_value_14;
-      fra.me.REG[7] = fra.me.REG[7];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-      fra.me.REG[7] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_14;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+      fra.me.REG[8] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[7])(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___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
       if (!once_value_15) {
-        fra.me.REG[7] = BOX_NativeString("___nitni");
+        fra.me.REG[8] = BOX_NativeString("___nitni");
         REGB1 = TAG_Int(8);
-        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-        once_value_15 = fra.me.REG[7];
+        fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+        once_value_15 = fra.me.REG[8];
         register_static_object(&once_value_15);
-      } else fra.me.REG[7] = once_value_15;
-      fra.me.REG[7] = fra.me.REG[7];
-      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]);
-      /* ./native_interface//frontier.nit:197 */
-      fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
+      } else fra.me.REG[8] = once_value_15;
+      fra.me.REG[8] = fra.me.REG[8];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+      /* ./native_interface//frontier.nit:199 */
+      fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Int(5);
-      fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_16) {
-        fra.me.REG[10] = BOX_NativeString("");
+        fra.me.REG[11] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
-        once_value_16 = fra.me.REG[10];
+        fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB1);
+        once_value_16 = fra.me.REG[11];
         register_static_object(&once_value_16);
-      } else fra.me.REG[10] = once_value_16;
-      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]);
-      fra.me.REG[10] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[10] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(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]);
+      } else fra.me.REG[11] = once_value_16;
+      fra.me.REG[11] = fra.me.REG[11];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+      fra.me.REG[11] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[7])(fra.me.REG[7]);
+      fra.me.REG[11] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[11])(fra.me.REG[11]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
       if (!once_value_17) {
-        fra.me.REG[10] = BOX_NativeString(" ");
+        fra.me.REG[11] = BOX_NativeString(" ");
         REGB1 = TAG_Int(1);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
-        once_value_17 = fra.me.REG[10];
+        fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB1);
+        once_value_17 = fra.me.REG[11];
         register_static_object(&once_value_17);
-      } else fra.me.REG[10] = once_value_17;
-      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]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+      } else fra.me.REG[11] = once_value_17;
+      fra.me.REG[11] = fra.me.REG[11];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[9]);
       if (!once_value_18) {
-        fra.me.REG[10] = BOX_NativeString(";\n");
+        fra.me.REG[11] = BOX_NativeString(";\n");
         REGB1 = TAG_Int(2);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
-        once_value_18 = fra.me.REG[10];
+        fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB1);
+        once_value_18 = fra.me.REG[11];
         register_static_object(&once_value_18);
-      } else fra.me.REG[10] = once_value_18;
-      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]);
-      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
-      /* ./native_interface//frontier.nit:198 */
-      fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
+      } else fra.me.REG[11] = once_value_18;
+      fra.me.REG[11] = fra.me.REG[11];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+      fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[10])(fra.me.REG[10]);
+      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
+      /* ./native_interface//frontier.nit:200 */
+      fra.me.REG[10] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Int(3);
-      fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_19) {
-        fra.me.REG[10] = BOX_NativeString("");
+        fra.me.REG[11] = BOX_NativeString("");
         REGB1 = TAG_Int(0);
-        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
-        once_value_19 = fra.me.REG[10];
+        fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB1);
+        once_value_19 = fra.me.REG[11];
         register_static_object(&once_value_19);
-      } else fra.me.REG[10] = once_value_19;
-      fra.me.REG[10] = fra.me.REG[10];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[10]);
-      fra.me.REG[10] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[6] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[6] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8], fra.me.REG[6]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+      } else fra.me.REG[11] = once_value_19;
+      fra.me.REG[11] = fra.me.REG[11];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[11]);
+      fra.me.REG[11] = CALL_metamodel___static_type___MMParam___mmtype(fra.me.REG[7])(fra.me.REG[7]);
+      fra.me.REG[7] = CALL_metamodel___static_type___MMParam___name(fra.me.REG[7])(fra.me.REG[7]);
+      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+      fra.me.REG[7] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[9], fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
       if (!once_value_20) {
-        fra.me.REG[6] = BOX_NativeString(";\n");
+        fra.me.REG[7] = BOX_NativeString(";\n");
         REGB1 = TAG_Int(2);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-        once_value_20 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+        once_value_20 = fra.me.REG[7];
         register_static_object(&once_value_20);
-      } else fra.me.REG[6] = once_value_20;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-      fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-      CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
-      /* ./native_interface//frontier.nit:199 */
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      } else fra.me.REG[7] = once_value_20;
+      fra.me.REG[7] = fra.me.REG[7];
+      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_compiling___compiling_writer___Writer___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
+      /* ./native_interface//frontier.nit:201 */
+      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 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label21;
     }
   }
   label21: while(0);
-  /* ./native_interface//frontier.nit:203 */
-  fra.me.REG[5] = NIT_NULL;
   /* ./native_interface//frontier.nit:205 */
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  fra.me.REG[6] = NIT_NULL;
+  /* ./native_interface//frontier.nit:207 */
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 205);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 207);
   }
-  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  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);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:206 */
-    fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    /* ./native_interface//frontier.nit:208 */
+    fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 206);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 208);
     }
-    fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[5] = fra.me.REG[4];
+    fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[6] = fra.me.REG[5];
   } else {
-    /* ./native_interface//frontier.nit:207 */
-    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./native_interface//frontier.nit:209 */
+    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:208 */
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[5] = fra.me.REG[4];
+      /* ./native_interface//frontier.nit:210 */
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[6] = fra.me.REG[5];
     }
   }
-  /* ./native_interface//frontier.nit:211 */
-  fra.me.REG[4] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./native_interface//frontier.nit:212 */
-  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  /* ./native_interface//frontier.nit:213 */
+  fra.me.REG[5] = NEW_Buffer_standard___string___Buffer___init();
+  /* ./native_interface//frontier.nit:214 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:213 */
-    fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
+    /* ./native_interface//frontier.nit:215 */
+    fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
-    fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_22) {
-      fra.me.REG[9] = BOX_NativeString("");
+      fra.me.REG[10] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
-      once_value_22 = fra.me.REG[9];
+      fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+      once_value_22 = fra.me.REG[10];
       register_static_object(&once_value_22);
-    } else fra.me.REG[9] = once_value_22;
-    fra.me.REG[9] = fra.me.REG[9];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    } else fra.me.REG[10] = once_value_22;
+    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]);
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 213);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 215);
     }
-    fra.me.REG[9] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
+    fra.me.REG[10] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[10]);
     if (!once_value_23) {
-      fra.me.REG[9] = BOX_NativeString(" return___nitni;\n");
+      fra.me.REG[10] = BOX_NativeString(" return___nitni;\n");
       REGB0 = TAG_Int(17);
-      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
-      once_value_23 = fra.me.REG[9];
+      fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB0);
+      once_value_23 = fra.me.REG[10];
       register_static_object(&once_value_23);
-    } else fra.me.REG[9] = once_value_23;
-    fra.me.REG[9] = fra.me.REG[9];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
-    fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-    /* ./native_interface//frontier.nit:214 */
-    fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[3])(fra.me.REG[3]);
+    } else fra.me.REG[10] = once_value_23;
+    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]);
+    fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+    /* ./native_interface//frontier.nit:216 */
+    fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_24) {
-      fra.me.REG[8] = BOX_NativeString("val_t return___nit;\n");
+      fra.me.REG[9] = BOX_NativeString("val_t return___nit;\n");
       REGB0 = TAG_Int(20);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
-      once_value_24 = fra.me.REG[8];
+      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
+      once_value_24 = fra.me.REG[9];
       register_static_object(&once_value_24);
-    } else fra.me.REG[8] = once_value_24;
-    fra.me.REG[8] = fra.me.REG[8];
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-    /* ./native_interface//frontier.nit:215 */
+    } else fra.me.REG[9] = once_value_24;
+    fra.me.REG[9] = fra.me.REG[9];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+    /* ./native_interface//frontier.nit:217 */
     if (!once_value_25) {
-      fra.me.REG[8] = BOX_NativeString("return___nitni = ");
+      fra.me.REG[9] = BOX_NativeString("return___nitni = ");
       REGB0 = TAG_Int(17);
-      fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
-      once_value_25 = fra.me.REG[8];
+      fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB0);
+      once_value_25 = fra.me.REG[9];
       register_static_object(&once_value_25);
-    } else fra.me.REG[8] = once_value_25;
-    fra.me.REG[8] = fra.me.REG[8];
-    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
+    } else fra.me.REG[9] = once_value_25;
+    fra.me.REG[9] = fra.me.REG[9];
+    CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
   }
-  /* ./native_interface//frontier.nit:218 */
+  /* ./native_interface//frontier.nit:220 */
   REGB0 = TAG_Int(5);
-  fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_26) {
-    fra.me.REG[7] = BOX_NativeString("");
+    fra.me.REG[8] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
-    fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
-    once_value_26 = fra.me.REG[7];
+    fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB0);
+    once_value_26 = fra.me.REG[8];
     register_static_object(&once_value_26);
-  } else fra.me.REG[7] = once_value_26;
-  fra.me.REG[7] = fra.me.REG[7];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMMethod___extern_name(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___string___String, ID_standard___string___String)) /*cast String*/;
+  } else fra.me.REG[8] = once_value_26;
+  fra.me.REG[8] = fra.me.REG[8];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___extern_name(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_native_interface___frontier, 218);
+    nit_abort("Cast failed", NULL, LOCATE_native_interface___frontier, 220);
   }
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
   if (!once_value_27) {
-    fra.me.REG[0] = BOX_NativeString("( ");
+    fra.me.REG[2] = BOX_NativeString("( ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-    once_value_27 = fra.me.REG[0];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_27 = fra.me.REG[2];
     register_static_object(&once_value_27);
-  } else fra.me.REG[0] = once_value_27;
-  fra.me.REG[0] = fra.me.REG[0];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+  } else fra.me.REG[2] = once_value_27;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
   if (!once_value_28) {
-    fra.me.REG[0] = BOX_NativeString(", ");
+    fra.me.REG[2] = BOX_NativeString(", ");
     REGB0 = TAG_Int(2);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-    once_value_28 = fra.me.REG[0];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_28 = fra.me.REG[2];
     register_static_object(&once_value_28);
-  } else fra.me.REG[0] = once_value_28;
-  fra.me.REG[0] = fra.me.REG[0];
-  fra.me.REG[0] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+  } else fra.me.REG[2] = once_value_28;
+  fra.me.REG[2] = fra.me.REG[2];
+  fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
   if (!once_value_29) {
-    fra.me.REG[0] = BOX_NativeString(" );\n");
+    fra.me.REG[2] = BOX_NativeString(" );\n");
     REGB0 = TAG_Int(4);
-    fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-    once_value_29 = fra.me.REG[0];
+    fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+    once_value_29 = fra.me.REG[2];
     register_static_object(&once_value_29);
-  } else fra.me.REG[0] = once_value_29;
-  fra.me.REG[0] = fra.me.REG[0];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
-  fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
-  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
-  /* ./native_interface//frontier.nit:220 */
-  fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:223 */
-  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  } else fra.me.REG[2] = once_value_29;
+  fra.me.REG[2] = fra.me.REG[2];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
+  fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+  CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
+  /* ./native_interface//frontier.nit:222 */
+  fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+  CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
+  /* ./native_interface//frontier.nit:225 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:224 */
-    fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
+    /* ./native_interface//frontier.nit:226 */
+    fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
-    fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_30) {
-      fra.me.REG[0] = BOX_NativeString("");
+      fra.me.REG[2] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-      once_value_30 = fra.me.REG[0];
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_30 = fra.me.REG[2];
       register_static_object(&once_value_30);
-    } else fra.me.REG[0] = once_value_30;
-    fra.me.REG[0] = fra.me.REG[0];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+    } else fra.me.REG[2] = once_value_30;
+    fra.me.REG[2] = fra.me.REG[2];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[2]);
     if (!once_value_31) {
-      fra.me.REG[0] = BOX_NativeString("return___nit");
+      fra.me.REG[2] = BOX_NativeString("return___nit");
       REGB0 = TAG_Int(12);
-      fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-      once_value_31 = fra.me.REG[0];
+      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
+      once_value_31 = fra.me.REG[2];
       register_static_object(&once_value_31);
-    } else fra.me.REG[0] = once_value_31;
-    fra.me.REG[0] = fra.me.REG[0];
+    } else fra.me.REG[2] = once_value_31;
+    fra.me.REG[2] = fra.me.REG[2];
     if (!once_value_32) {
-      fra.me.REG[2] = BOX_NativeString("return___nitni");
+      fra.me.REG[3] = BOX_NativeString("return___nitni");
       REGB0 = TAG_Int(14);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_32 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_32 = fra.me.REG[3];
       register_static_object(&once_value_32);
-    } else fra.me.REG[2] = once_value_32;
-    fra.me.REG[2] = fra.me.REG[2];
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    } else fra.me.REG[3] = once_value_32;
+    fra.me.REG[3] = fra.me.REG[3];
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 224);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 226);
     }
-    fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0], fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
+    fra.me.REG[3] = CALL_native_interface___ni_metamodel___MMType___assign_from_friendly(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2], fra.me.REG[3]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
     if (!once_value_33) {
-      fra.me.REG[2] = BOX_NativeString(";\n");
+      fra.me.REG[3] = BOX_NativeString(";\n");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_33 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_33 = fra.me.REG[3];
       register_static_object(&once_value_33);
-    } else fra.me.REG[2] = once_value_33;
-    fra.me.REG[2] = fra.me.REG[2];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
-    fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
-    /* ./native_interface//frontier.nit:225 */
-    fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[3])(fra.me.REG[3]);
+    } else fra.me.REG[3] = once_value_33;
+    fra.me.REG[3] = fra.me.REG[3];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
+    fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
+    /* ./native_interface//frontier.nit:227 */
+    fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_34) {
-      fra.me.REG[4] = BOX_NativeString("return return___nit;\n");
+      fra.me.REG[5] = BOX_NativeString("return return___nit;\n");
       REGB0 = TAG_Int(21);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_34 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_34 = fra.me.REG[5];
       register_static_object(&once_value_34);
-    } else fra.me.REG[4] = once_value_34;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_34;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[5]);
   }
-  /* ./native_interface//frontier.nit:228 */
+  /* ./native_interface//frontier.nit:230 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[3])(fra.me.REG[3]);
-  CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1849,7 +1864,7 @@ void native_interface___frontier___MMLocalClass___compile_defaut_extern_type(val
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 234;
+  fra.me.line = 236;
   fra.me.meth = LOCATE_native_interface___frontier___MMLocalClass___compile_defaut_extern_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1860,7 +1875,7 @@ void native_interface___frontier___MMLocalClass___compile_defaut_extern_type(val
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:238 */
+  /* ./native_interface//frontier.nit:240 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1887,7 +1902,7 @@ void native_interface___frontier___MMLocalClass___compile_defaut_extern_type(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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:239 */
+  /* ./native_interface//frontier.nit:241 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1914,7 +1929,7 @@ void native_interface___frontier___MMLocalClass___compile_defaut_extern_type(val
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:240 */
+  /* ./native_interface//frontier.nit:242 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("#endif\n\n");
@@ -1932,10 +1947,11 @@ void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_
   struct {struct stack_frame_t me; val_t MORE_REG[5];} 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_native_interface___frontier;
-  fra.me.line = 245;
+  fra.me.line = 247;
   fra.me.meth = LOCATE_native_interface___frontier___MMSignature___compile_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1947,62 +1963,67 @@ void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:248 */
+  /* ./native_interface//frontier.nit:250 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:251 */
+  /* ./native_interface//frontier.nit:253 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//frontier.nit:251 */
+      /* ./native_interface//frontier.nit:253 */
       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]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./native_interface//frontier.nit:254 */
+  /* ./native_interface//frontier.nit:256 */
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./native_interface//frontier.nit:255 */
+  /* ./native_interface//frontier.nit:257 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2017,7 +2038,7 @@ void native_interface___frontier___MMSignature___compile_frontier(val_t p0, val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:256 */
+    /* ./native_interface//frontier.nit:258 */
     fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[1])(fra.me.REG[1]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
@@ -2030,17 +2051,17 @@ val_t native_interface___frontier___FrontierVisitor___header_top(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 264;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header_top;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:264 */
+  /* ./native_interface//frontier.nit:266 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@header_top", LOCATE_native_interface___frontier, 264);
+    nit_abort("Uninitialized attribute %s", "@header_top", LOCATE_native_interface___frontier, 266);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2051,7 +2072,7 @@ void native_interface___frontier___FrontierVisitor___header_top__eq(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 264;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header_top__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2059,7 +2080,7 @@ void native_interface___frontier___FrontierVisitor___header_top__eq(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:264 */
+  /* ./native_interface//frontier.nit:266 */
   ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2070,17 +2091,17 @@ val_t native_interface___frontier___FrontierVisitor___header(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 267;
+  fra.me.line = 269;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:267 */
+  /* ./native_interface//frontier.nit:269 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@header", LOCATE_native_interface___frontier, 267);
+    nit_abort("Uninitialized attribute %s", "@header", LOCATE_native_interface___frontier, 269);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2091,7 +2112,7 @@ void native_interface___frontier___FrontierVisitor___header__eq(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 267;
+  fra.me.line = 269;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___header__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2099,7 +2120,7 @@ void native_interface___frontier___FrontierVisitor___header__eq(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:267 */
+  /* ./native_interface//frontier.nit:269 */
   ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2110,17 +2131,17 @@ val_t native_interface___frontier___FrontierVisitor___body(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 270;
+  fra.me.line = 272;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___body;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:270 */
+  /* ./native_interface//frontier.nit:272 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@body", LOCATE_native_interface___frontier, 270);
+    nit_abort("Uninitialized attribute %s", "@body", LOCATE_native_interface___frontier, 272);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2131,7 +2152,7 @@ void native_interface___frontier___FrontierVisitor___body__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_native_interface___frontier;
-  fra.me.line = 270;
+  fra.me.line = 272;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___body__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2139,7 +2160,7 @@ void native_interface___frontier___FrontierVisitor___body__eq(val_t p0, val_t p1
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:270 */
+  /* ./native_interface//frontier.nit:272 */
   ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2150,17 +2171,17 @@ val_t native_interface___frontier___FrontierVisitor___friendlys(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 273;
+  fra.me.line = 275;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___friendlys;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:273 */
+  /* ./native_interface//frontier.nit:275 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@friendlys", LOCATE_native_interface___frontier, 273);
+    nit_abort("Uninitialized attribute %s", "@friendlys", LOCATE_native_interface___frontier, 275);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2171,7 +2192,7 @@ void native_interface___frontier___FrontierVisitor___friendlys__eq(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 273;
+  fra.me.line = 275;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___friendlys__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2179,7 +2200,7 @@ void native_interface___frontier___FrontierVisitor___friendlys__eq(val_t p0, val
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:273 */
+  /* ./native_interface//frontier.nit:275 */
   ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2190,17 +2211,17 @@ val_t native_interface___frontier___FrontierVisitor___types(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 276;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___types;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:276 */
+  /* ./native_interface//frontier.nit:278 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@types", LOCATE_native_interface___frontier, 276);
+    nit_abort("Uninitialized attribute %s", "@types", LOCATE_native_interface___frontier, 278);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2211,7 +2232,7 @@ void native_interface___frontier___FrontierVisitor___types__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 276;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___types__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2219,7 +2240,7 @@ void native_interface___frontier___FrontierVisitor___types__eq(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:276 */
+  /* ./native_interface//frontier.nit:278 */
   ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2230,17 +2251,17 @@ val_t native_interface___frontier___FrontierVisitor___casts(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 279;
+  fra.me.line = 281;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___casts;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:279 */
+  /* ./native_interface//frontier.nit:281 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@casts", LOCATE_native_interface___frontier, 279);
+    nit_abort("Uninitialized attribute %s", "@casts", LOCATE_native_interface___frontier, 281);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2251,7 +2272,7 @@ void native_interface___frontier___FrontierVisitor___casts__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 279;
+  fra.me.line = 281;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___casts__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2259,7 +2280,7 @@ void native_interface___frontier___FrontierVisitor___casts__eq(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:279 */
+  /* ./native_interface//frontier.nit:281 */
   ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2270,17 +2291,17 @@ val_t native_interface___frontier___FrontierVisitor___mmmodule(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 282;
+  fra.me.line = 284;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___mmmodule;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:282 */
+  /* ./native_interface//frontier.nit:284 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@mmmodule", LOCATE_native_interface___frontier, 282);
+    nit_abort("Uninitialized attribute %s", "@mmmodule", LOCATE_native_interface___frontier, 284);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2291,7 +2312,7 @@ void native_interface___frontier___FrontierVisitor___mmmodule__eq(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 282;
+  fra.me.line = 284;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___mmmodule__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2299,7 +2320,7 @@ void native_interface___frontier___FrontierVisitor___mmmodule__eq(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:282 */
+  /* ./native_interface//frontier.nit:284 */
   ATTR_native_interface___frontier___FrontierVisitor_____atmmmodule(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2310,17 +2331,17 @@ val_t native_interface___frontier___FrontierVisitor___cprogram(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 284;
+  fra.me.line = 286;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___cprogram;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:284 */
+  /* ./native_interface//frontier.nit:286 */
   REGB0 = TAG_Bool(ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "@cprogram", LOCATE_native_interface___frontier, 284);
+    nit_abort("Uninitialized attribute %s", "@cprogram", LOCATE_native_interface___frontier, 286);
   }
   fra.me.REG[0] = ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2331,7 +2352,7 @@ void native_interface___frontier___FrontierVisitor___cprogram__eq(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 284;
+  fra.me.line = 286;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___cprogram__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2339,7 +2360,7 @@ void native_interface___frontier___FrontierVisitor___cprogram__eq(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:284 */
+  /* ./native_interface//frontier.nit:286 */
   ATTR_native_interface___frontier___FrontierVisitor_____atcprogram(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2349,20 +2370,20 @@ void native_interface___frontier___FrontierVisitor___compile_cached(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 286;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___compile_cached;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:289 */
+  /* ./native_interface//frontier.nit:291 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___types(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_1));
-  /* ./native_interface//frontier.nit:292 */
+  /* ./native_interface//frontier.nit:294 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___friendlys(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_2));
-  /* ./native_interface//frontier.nit:295 */
+  /* ./native_interface//frontier.nit:297 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___casts(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_native_interface___frontier___FrontierVisitor___compile_cached_3));
   stack_frame_head = fra.me.prev;
@@ -2435,7 +2456,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 298;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_native_interface___frontier___FrontierVisitor___write_to_files;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2447,7 +2468,7 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:300 */
+  /* ./native_interface//frontier.nit:302 */
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2470,17 +2491,17 @@ void native_interface___frontier___FrontierVisitor___write_to_files(val_t p0, va
   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]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:301 */
+  /* ./native_interface//frontier.nit:303 */
   fra.me.REG[3] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:302 */
+  /* ./native_interface//frontier.nit:304 */
   fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:303 */
+  /* ./native_interface//frontier.nit:305 */
   fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:304 */
-  CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
   /* ./native_interface//frontier.nit:306 */
+  CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./native_interface//frontier.nit:308 */
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_3) {
@@ -2504,13 +2525,13 @@ void native_interface___frontier___FrontierVisitor___write_to_files(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]);
   fra.me.REG[2] = fra.me.REG[4];
-  /* ./native_interface//frontier.nit:307 */
+  /* ./native_interface//frontier.nit:309 */
   fra.me.REG[2] = NEW_OFStream_standard___file___OFStream___open(fra.me.REG[2]);
   fra.me.REG[3] = fra.me.REG[2];
-  /* ./native_interface//frontier.nit:308 */
+  /* ./native_interface//frontier.nit:310 */
   fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[0])(fra.me.REG[0]);
   CALL_compiling___compiling_writer___Writer___write_to_stream(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:309 */
+  /* ./native_interface//frontier.nit:311 */
   CALL_standard___stream___IOS___close(fra.me.REG[3])(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2548,7 +2569,7 @@ val_t native_interface___frontier___String___path_from_parent(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_native_interface___frontier;
-  fra.me.line = 314;
+  fra.me.line = 316;
   fra.me.meth = LOCATE_native_interface___frontier___String___path_from_parent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2557,24 +2578,24 @@ val_t native_interface___frontier___String___path_from_parent(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:318 */
+  /* ./native_interface//frontier.nit:320 */
   REGB0 = TAG_Int(0);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  REGB0 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
   REGB1 = TAG_Char('/');
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:350 */
+    /* ./../lib/standard//kernel.nit:378 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./native_interface//frontier.nit:318 */
+    /* ./native_interface//frontier.nit:320 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./native_interface//frontier.nit:320 */
+    /* ./native_interface//frontier.nit:322 */
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   } else {
-    /* ./native_interface//frontier.nit:322 */
+    /* ./native_interface//frontier.nit:324 */
     REGB2 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_2) {
@@ -2633,7 +2654,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   static val_t once_value_22; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 329;
+  fra.me.line = 331;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_to_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2644,7 +2665,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:333 */
+  /* ./native_interface//frontier.nit:335 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = CALL_metamodel___static_type___MMImportedCast___is_not_null_to_nullable(fra.me.REG[0])(fra.me.REG[0]);
@@ -2654,7 +2675,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:334 */
+    /* ./native_interface//frontier.nit:336 */
     fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2693,7 +2714,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:335 */
+    /* ./native_interface//frontier.nit:337 */
     fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2720,7 +2741,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    /* ./native_interface//frontier.nit:337 */
+    /* ./native_interface//frontier.nit:339 */
     fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2746,7 +2767,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:338 */
+    /* ./native_interface//frontier.nit:340 */
     fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(5);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2784,7 +2805,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-    /* ./native_interface//frontier.nit:339 */
+    /* ./native_interface//frontier.nit:341 */
     fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
     if (!once_value_11) {
       fra.me.REG[3] = BOX_NativeString("#endif\n");
@@ -2795,15 +2816,15 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
     } else fra.me.REG[3] = once_value_11;
     fra.me.REG[3] = fra.me.REG[3];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:341 */
+    /* ./native_interface//frontier.nit:343 */
     fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = CALL_native_interface___frontier___MMImportedCast___compile_is(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:342 */
+    /* ./native_interface//frontier.nit:344 */
     fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[3])(fra.me.REG[3]);
     CALL_compiling___compiling_writer___Writer___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./native_interface//frontier.nit:346 */
+  /* ./native_interface//frontier.nit:348 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2842,7 +2863,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:347 */
+  /* ./native_interface//frontier.nit:349 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2869,7 +2890,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:349 */
+  /* ./native_interface//frontier.nit:351 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2895,7 +2916,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:350 */
+  /* ./native_interface//frontier.nit:352 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -2933,7 +2954,7 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:351 */
+  /* ./native_interface//frontier.nit:353 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_22) {
     fra.me.REG[2] = BOX_NativeString("#endif\n");
@@ -2944,10 +2965,10 @@ void native_interface___frontier___MMImportedCast___compile_to_frontier(val_t p0
   } else fra.me.REG[2] = once_value_22;
   fra.me.REG[2] = fra.me.REG[2];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:353 */
+  /* ./native_interface//frontier.nit:355 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_native_interface___frontier___MMImportedCast___compile_as(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:354 */
+  /* ./native_interface//frontier.nit:356 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
@@ -2973,7 +2994,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   static val_t once_value_13; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 357;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_as;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -2987,10 +3008,10 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:361 */
+  /* ./native_interface//frontier.nit:363 */
   fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMImportedCast___as_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   fra.me.REG[1] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[1]);
-  /* ./native_interface//frontier.nit:363 */
+  /* ./native_interface//frontier.nit:365 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("out");
     REGB0 = TAG_Int(3);
@@ -2999,7 +3020,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
-  /* ./native_interface//frontier.nit:364 */
+  /* ./native_interface//frontier.nit:366 */
   if (!once_value_2) {
     fra.me.REG[3] = BOX_NativeString("temp");
     REGB0 = TAG_Int(4);
@@ -3008,7 +3029,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
     register_static_object(&once_value_2);
   } else fra.me.REG[3] = once_value_2;
   fra.me.REG[3] = fra.me.REG[3];
-  /* ./native_interface//frontier.nit:366 */
+  /* ./native_interface//frontier.nit:368 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3033,7 +3054,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   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]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:367 */
+  /* ./native_interface//frontier.nit:369 */
   fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3070,7 +3091,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   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___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:369 */
+  /* ./native_interface//frontier.nit:371 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3098,23 +3119,23 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:372 */
+  /* ./native_interface//frontier.nit:374 */
   fra.me.REG[5] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[5])(fra.me.REG[5]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:373 */
+    /* ./native_interface//frontier.nit:375 */
     CALL_native_interface___frontier___MMImportedCast___compile_check_is_not_null(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./native_interface//frontier.nit:377 */
+  /* ./native_interface//frontier.nit:379 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:378 */
+    /* ./native_interface//frontier.nit:380 */
     fra.me.REG[5] = CALL_metamodel___static_type___MMImportedCast___to(fra.me.REG[0])(fra.me.REG[0]);
     CALL_native_interface___frontier___MMType___compile_check_isa(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./native_interface//frontier.nit:381 */
+  /* ./native_interface//frontier.nit:383 */
   fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3141,7 +3162,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   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_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:383 */
+  /* ./native_interface//frontier.nit:385 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3166,7 +3187,7 @@ val_t native_interface___frontier___MMImportedCast___compile_as(val_t p0, val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
   fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  /* ./native_interface//frontier.nit:385 */
+  /* ./native_interface//frontier.nit:387 */
   goto label14;
   label14: while(0);
   stack_frame_head = fra.me.prev;
@@ -3190,7 +3211,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   static val_t once_value_12; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 388;
+  fra.me.line = 390;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_is;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -3203,10 +3224,10 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:392 */
+  /* ./native_interface//frontier.nit:394 */
   fra.me.REG[1] = CALL_native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   fra.me.REG[1] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[1]);
-  /* ./native_interface//frontier.nit:394 */
+  /* ./native_interface//frontier.nit:396 */
   if (!once_value_1) {
     fra.me.REG[2] = BOX_NativeString("temp");
     REGB0 = TAG_Int(4);
@@ -3215,7 +3236,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
     register_static_object(&once_value_1);
   } else fra.me.REG[2] = once_value_1;
   fra.me.REG[2] = fra.me.REG[2];
-  /* ./native_interface//frontier.nit:395 */
+  /* ./native_interface//frontier.nit:397 */
   fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3240,7 +3261,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:397 */
+  /* ./native_interface//frontier.nit:399 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3268,13 +3289,13 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:399 */
+  /* ./native_interface//frontier.nit:401 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_nullable_to_not_null(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:400 */
+    /* ./native_interface//frontier.nit:402 */
     REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:401 */
+      /* ./native_interface//frontier.nit:403 */
       fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3300,7 +3321,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
     } else {
-      /* ./native_interface//frontier.nit:403 */
+      /* ./native_interface//frontier.nit:405 */
       fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3327,11 +3348,11 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
     }
   }
-  /* ./native_interface//frontier.nit:407 */
+  /* ./native_interface//frontier.nit:409 */
   REGB0 = CALL_metamodel___static_type___MMImportedCast___is_about_nullable_only(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:408 */
+    /* ./native_interface//frontier.nit:410 */
     fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3359,7 +3380,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
-  /* ./native_interface//frontier.nit:411 */
+  /* ./native_interface//frontier.nit:413 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_12) {
     fra.me.REG[3] = BOX_NativeString("return 1;\n");
@@ -3370,7 +3391,7 @@ val_t native_interface___frontier___MMImportedCast___compile_is(val_t p0, val_t
   } else fra.me.REG[3] = once_value_12;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:413 */
+  /* ./native_interface//frontier.nit:415 */
   goto label13;
   label13: while(0);
   stack_frame_head = fra.me.prev;
@@ -3389,7 +3410,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 416;
+  fra.me.line = 418;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___compile_check_is_not_null;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3402,7 +3423,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//frontier.nit:420 */
+  /* ./native_interface//frontier.nit:422 */
   fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3427,7 +3448,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:421 */
+  /* ./native_interface//frontier.nit:423 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3466,7 +3487,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   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_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:422 */
+  /* ./native_interface//frontier.nit:424 */
   fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("\tabort();\n");
@@ -3477,7 +3498,7 @@ void native_interface___frontier___MMImportedCast___compile_check_is_not_null(va
   } else fra.me.REG[4] = once_value_6;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:423 */
+  /* ./native_interface//frontier.nit:425 */
   fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("}");
@@ -3498,7 +3519,7 @@ val_t native_interface___frontier___MMImportedCast_____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_native_interface___frontier;
-  fra.me.line = 426;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3508,13 +3529,13 @@ val_t native_interface___frontier___MMImportedCast_____eqeq(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:428 */
+  /* ./native_interface//frontier.nit:430 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___static_type___MMImportedCast, ID_metamodel___static_type___MMImportedCast)) /*cast MMImportedCast*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:429 */
+    /* ./native_interface//frontier.nit:431 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 429);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 431);
     }
     fra.me.REG[2] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[3] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
@@ -3525,15 +3546,15 @@ val_t native_interface___frontier___MMImportedCast_____eqeq(val_t p0, val_t p1){
       REGB0 = REGB1;
     }
   } else {
-    /* ./native_interface//frontier.nit:428 */
+    /* ./native_interface//frontier.nit:430 */
     REGB1 = TAG_Bool(false);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:429 */
+    /* ./native_interface//frontier.nit:431 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 429);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 431);
     }
     fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___to(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]);
@@ -3544,7 +3565,7 @@ val_t native_interface___frontier___MMImportedCast_____eqeq(val_t p0, val_t p1){
       REGB0 = REGB1;
     }
   } else {
-    /* ./native_interface//frontier.nit:428 */
+    /* ./native_interface//frontier.nit:430 */
     REGB1 = TAG_Bool(false);
     REGB0 = REGB1;
   }
@@ -3560,21 +3581,21 @@ val_t native_interface___frontier___MMImportedCast___hash(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 431;
+  fra.me.line = 433;
   fra.me.meth = LOCATE_native_interface___frontier___MMImportedCast___hash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:433 */
+  /* ./native_interface//frontier.nit:435 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMImportedCast___from(fra.me.REG[0])(fra.me.REG[0]);
   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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./native_interface//frontier.nit:433 */
+  /* ./native_interface//frontier.nit:435 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3593,7 +3614,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 438;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_check_isa;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3606,7 +3627,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./native_interface//frontier.nit:444 */
+  /* ./native_interface//frontier.nit:446 */
   fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3632,7 +3653,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
   fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:445 */
+  /* ./native_interface//frontier.nit:447 */
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3669,7 +3690,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   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_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:446 */
+  /* ./native_interface//frontier.nit:448 */
   fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_6) {
     fra.me.REG[4] = BOX_NativeString("\tabort();\n");
@@ -3680,7 +3701,7 @@ void native_interface___frontier___MMType___compile_check_isa(val_t p0, val_t p1
   } else fra.me.REG[4] = once_value_6;
   fra.me.REG[4] = fra.me.REG[4];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:447 */
+  /* ./native_interface//frontier.nit:449 */
   fra.me.REG[1] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_7) {
     fra.me.REG[4] = BOX_NativeString("}");
@@ -3706,7 +3727,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 450;
+  fra.me.line = 452;
   fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_condition_isa;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3716,7 +3737,7 @@ val_t native_interface___frontier___MMType___compile_condition_isa(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:454 */
+  /* ./native_interface//frontier.nit:456 */
   REGB0 = TAG_Int(11);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -3830,7 +3851,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       static val_t once_value_35; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 457;
+  fra.me.line = 459;
   fra.me.meth = LOCATE_native_interface___frontier___MMType___compile_to_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -3843,10 +3864,10 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:461 */
+  /* ./native_interface//frontier.nit:463 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_primitive_info___MMLocalClass___primitive_info(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:462 */
+  /* ./native_interface//frontier.nit:464 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3866,9 +3887,9 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:463 */
+    /* ./native_interface//frontier.nit:465 */
     fra.me.REG[2] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./native_interface//frontier.nit:464 */
+    /* ./native_interface//frontier.nit:466 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -3893,7 +3914,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     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]);
-    /* ./native_interface//frontier.nit:467 */
+    /* ./native_interface//frontier.nit:469 */
     fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3918,7 +3939,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     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]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:468 */
+    /* ./native_interface//frontier.nit:470 */
     fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3943,7 +3964,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     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_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    /* ./native_interface//frontier.nit:469 */
+    /* ./native_interface//frontier.nit:471 */
     fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -3968,7 +3989,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:470 */
+    /* ./native_interface//frontier.nit:472 */
     fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     if (!once_value_9) {
       fra.me.REG[4] = BOX_NativeString("\tval_t v;\n");
@@ -3979,7 +4000,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     } else fra.me.REG[4] = once_value_9;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    /* ./native_interface//frontier.nit:471 */
+    /* ./native_interface//frontier.nit:473 */
     fra.me.REG[4] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4004,7 +4025,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:472 */
+    /* ./native_interface//frontier.nit:474 */
     fra.me.REG[5] = CALL_native_interface___frontier___FrontierVisitor___header_top(fra.me.REG[1])(fra.me.REG[1]);
     if (!once_value_12) {
       fra.me.REG[4] = BOX_NativeString("#endif\n\n");
@@ -4015,10 +4036,10 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
     } else fra.me.REG[4] = once_value_12;
     fra.me.REG[4] = fra.me.REG[4];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    /* ./native_interface//frontier.nit:475 */
+    /* ./native_interface//frontier.nit:477 */
     REGB0 = CALL_metamodel___static_type___MMType___is_nullable(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:476 */
+      /* ./native_interface//frontier.nit:478 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_13) {
@@ -4043,7 +4064,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       fra.me.REG[5] = fra.me.REG[5];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./native_interface//frontier.nit:477 */
+      /* ./native_interface//frontier.nit:479 */
       REGB0 = TAG_Int(5);
       fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_15) {
@@ -4078,7 +4099,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       fra.me.REG[0] = fra.me.REG[0];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
       fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./native_interface//frontier.nit:479 */
+      /* ./native_interface//frontier.nit:481 */
       fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(5);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4113,7 +4134,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./native_interface//frontier.nit:481 */
+      /* ./native_interface//frontier.nit:483 */
       fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(3);
       fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4138,7 +4159,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
       fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./native_interface//frontier.nit:482 */
+      /* ./native_interface//frontier.nit:484 */
       fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(5);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4173,7 +4194,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       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_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./native_interface//frontier.nit:483 */
+      /* ./native_interface//frontier.nit:485 */
       fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_26) {
         fra.me.REG[0] = BOX_NativeString("#endif\n\n");
@@ -4184,7 +4205,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       } else fra.me.REG[0] = once_value_26;
       fra.me.REG[0] = fra.me.REG[0];
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./native_interface//frontier.nit:485 */
+      /* ./native_interface//frontier.nit:487 */
       fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(5);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4219,7 +4240,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./native_interface//frontier.nit:486 */
+      /* ./native_interface//frontier.nit:488 */
       fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_30) {
         fra.me.REG[0] = BOX_NativeString("{\n");
@@ -4230,7 +4251,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       } else fra.me.REG[0] = once_value_30;
       fra.me.REG[0] = fra.me.REG[0];
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./native_interface//frontier.nit:487 */
+      /* ./native_interface//frontier.nit:489 */
       fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4255,7 +4276,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
       fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./native_interface//frontier.nit:488 */
+      /* ./native_interface//frontier.nit:490 */
       fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_33) {
         fra.me.REG[0] = BOX_NativeString("\tn.v = NIT_NULL;\n");
@@ -4266,7 +4287,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       } else fra.me.REG[0] = once_value_33;
       fra.me.REG[0] = fra.me.REG[0];
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./native_interface//frontier.nit:489 */
+      /* ./native_interface//frontier.nit:491 */
       fra.me.REG[0] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_34) {
         fra.me.REG[3] = BOX_NativeString("\treturn n;\n");
@@ -4277,7 +4298,7 @@ void native_interface___frontier___MMType___compile_to_frontier(val_t p0, val_t
       } else fra.me.REG[3] = once_value_34;
       fra.me.REG[3] = fra.me.REG[3];
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./native_interface//frontier.nit:490 */
+      /* ./native_interface//frontier.nit:492 */
       fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_35) {
         fra.me.REG[3] = BOX_NativeString("}\n\n");
@@ -4297,6 +4318,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -4342,7 +4364,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     static val_t once_value_43; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 497;
+  fra.me.line = 499;
   fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport___compile_friendly_to_frontier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -4359,7 +4381,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:500 */
+  /* ./native_interface//frontier.nit:502 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4386,7 +4408,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   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_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:501 */
+  /* ./native_interface//frontier.nit:503 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4415,7 +4437,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:505 */
+  /* ./native_interface//frontier.nit:507 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4430,7 +4452,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[5] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   if (!once_value_6) {
     fra.me.REG[5] = BOX_NativeString("\n");
@@ -4443,7 +4465,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:506 */
+  /* ./native_interface//frontier.nit:508 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4458,7 +4480,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[6] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  fra.me.REG[6] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   if (!once_value_8) {
     fra.me.REG[6] = BOX_NativeString(" ");
@@ -4485,7 +4507,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:507 */
+  /* ./native_interface//frontier.nit:509 */
   fra.me.REG[2] = CALL_native_interface___frontier___FrontierVisitor___header(fra.me.REG[1])(fra.me.REG[1]);
   if (!once_value_10) {
     fra.me.REG[3] = BOX_NativeString("#endif\n");
@@ -4496,7 +4518,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   } else fra.me.REG[3] = once_value_10;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-  /* ./native_interface//frontier.nit:510 */
+  /* ./native_interface//frontier.nit:512 */
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(3);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4523,20 +4545,20 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:512 */
+  /* ./native_interface//frontier.nit:514 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_native_interface___frontier___FrontierVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_native_interface___ni_metamodel___MMMethod___frontier_csignature_from(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   fra.me.REG[4] = NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init(fra.me.REG[4]);
-  /* ./native_interface//frontier.nit:515 */
+  /* ./native_interface//frontier.nit:517 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./native_interface//frontier.nit:518 */
+  /* ./native_interface//frontier.nit:520 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:519 */
+    /* ./native_interface//frontier.nit:521 */
     if (!once_value_13) {
       fra.me.REG[2] = BOX_NativeString("recv___nit");
       REGB0 = TAG_Int(10);
@@ -4545,7 +4567,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       register_static_object(&once_value_13);
     } else fra.me.REG[2] = once_value_13;
     fra.me.REG[2] = fra.me.REG[2];
-    /* ./native_interface//frontier.nit:520 */
+    /* ./native_interface//frontier.nit:522 */
     fra.me.REG[5] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4570,7 +4592,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     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]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./native_interface//frontier.nit:521 */
+    /* ./native_interface//frontier.nit:523 */
     fra.me.REG[6] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4606,44 +4628,49 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-    /* ./native_interface//frontier.nit:522 */
+    /* ./native_interface//frontier.nit:524 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   }
-  /* ./native_interface//frontier.nit:525 */
+  /* ./native_interface//frontier.nit:527 */
   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]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./native_interface//frontier.nit:526 */
+      /* ./native_interface//frontier.nit:528 */
       REGB1 = TAG_Int(3);
       fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_19) {
@@ -4668,7 +4695,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       fra.me.REG[7] = fra.me.REG[7];
       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]);
-      /* ./native_interface//frontier.nit:527 */
+      /* ./native_interface//frontier.nit:529 */
       fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Int(3);
       fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -4693,7 +4720,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
-      /* ./native_interface//frontier.nit:528 */
+      /* ./native_interface//frontier.nit:530 */
       fra.me.REG[9] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Int(3);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -4722,28 +4749,28 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
       fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
       CALL_compiling___compiling_writer___Writer___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[7]);
-      /* ./native_interface//frontier.nit:529 */
+      /* ./native_interface//frontier.nit:531 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label25;
     }
   }
   label25: while(0);
-  /* ./native_interface//frontier.nit:533 */
+  /* ./native_interface//frontier.nit:535 */
   fra.me.REG[5] = NIT_NULL;
-  /* ./native_interface//frontier.nit:536 */
+  /* ./native_interface//frontier.nit:538 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   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_native_interface___frontier, 536);
+    nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 538);
   }
   fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -4760,30 +4787,30 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:537 */
+    /* ./native_interface//frontier.nit:539 */
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
     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_native_interface___frontier, 537);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 539);
     }
     fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[5] = fra.me.REG[2];
   } else {
-    /* ./native_interface//frontier.nit:538 */
+    /* ./native_interface//frontier.nit:540 */
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./native_interface//frontier.nit:539 */
+      /* ./native_interface//frontier.nit:541 */
       fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[5] = fra.me.REG[2];
     }
   }
-  /* ./native_interface//frontier.nit:542 */
+  /* ./native_interface//frontier.nit:544 */
   fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./native_interface//frontier.nit:543 */
+  /* ./native_interface//frontier.nit:545 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4798,7 +4825,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:544 */
+    /* ./native_interface//frontier.nit:546 */
     fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -4813,7 +4840,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 544);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 546);
     }
     fra.me.REG[9] = CALL_native_interface___ni_metamodel___MMType___friendly_extern_name(fra.me.REG[5])(fra.me.REG[5]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
@@ -4828,7 +4855,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
     fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-    /* ./native_interface//frontier.nit:545 */
+    /* ./native_interface//frontier.nit:547 */
     fra.me.REG[7] = CALL_native_interface___ni_tools___FunctionCompiler___decls(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_28) {
       fra.me.REG[8] = BOX_NativeString("val_t result___nit;\n");
@@ -4839,7 +4866,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     } else fra.me.REG[8] = once_value_28;
     fra.me.REG[8] = fra.me.REG[8];
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
-    /* ./native_interface//frontier.nit:546 */
+    /* ./native_interface//frontier.nit:548 */
     if (!once_value_29) {
       fra.me.REG[8] = BOX_NativeString("result___nit = ");
       REGB0 = TAG_Int(15);
@@ -4850,11 +4877,11 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     fra.me.REG[8] = fra.me.REG[8];
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
-  /* ./native_interface//frontier.nit:550 */
+  /* ./native_interface//frontier.nit:552 */
   fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:551 */
+    /* ./native_interface//frontier.nit:553 */
     REGB0 = TAG_Int(5);
     fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_30) {
@@ -4895,7 +4922,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   } else {
-    /* ./native_interface//frontier.nit:553 */
+    /* ./native_interface//frontier.nit:555 */
     REGB0 = TAG_Int(3);
     fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_33) {
@@ -4923,7 +4950,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
-  /* ./native_interface//frontier.nit:556 */
+  /* ./native_interface//frontier.nit:558 */
   REGB0 = TAG_Int(3);
   fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_35) {
@@ -4956,11 +4983,11 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
   fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
-  /* ./native_interface//frontier.nit:558 */
+  /* ./native_interface//frontier.nit:560 */
   fra.me.REG[8] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   CALL_compiling___compiling_writer___Writer___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[2]);
-  /* ./native_interface//frontier.nit:561 */
+  /* ./native_interface//frontier.nit:563 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4975,7 +5002,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:562 */
+    /* ./native_interface//frontier.nit:564 */
     if (!once_value_38) {
       fra.me.REG[2] = BOX_NativeString("result___nitni");
       REGB0 = TAG_Int(14);
@@ -4984,7 +5011,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       register_static_object(&once_value_38);
     } else fra.me.REG[2] = once_value_38;
     fra.me.REG[2] = fra.me.REG[2];
-    /* ./native_interface//frontier.nit:563 */
+    /* ./native_interface//frontier.nit:565 */
     if (!once_value_39) {
       fra.me.REG[8] = BOX_NativeString("result___nit");
       REGB0 = TAG_Int(12);
@@ -4993,7 +5020,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
       register_static_object(&once_value_39);
     } else fra.me.REG[8] = once_value_39;
     fra.me.REG[8] = fra.me.REG[8];
-    /* ./native_interface//frontier.nit:565 */
+    /* ./native_interface//frontier.nit:567 */
     fra.me.REG[0] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -5008,7 +5035,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 565);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 567);
     }
     fra.me.REG[8] = CALL_native_interface___ni_metamodel___MMType___assign_to_friendly(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2], fra.me.REG[8]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
@@ -5023,7 +5050,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./native_interface//frontier.nit:566 */
+    /* ./native_interface//frontier.nit:568 */
     fra.me.REG[3] = CALL_native_interface___ni_tools___FunctionCompiler___exprs(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -5049,7 +5076,7 @@ void native_interface___frontier___MMExplicitImport___compile_friendly_to_fronti
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_compiling___compiling_writer___Writer___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   }
-  /* ./native_interface//frontier.nit:569 */
+  /* ./native_interface//frontier.nit:571 */
   fra.me.REG[1] = CALL_native_interface___frontier___FrontierVisitor___body(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = CALL_native_interface___ni_tools___FunctionCompiler___to_writer(fra.me.REG[4])(fra.me.REG[4]);
   CALL_compiling___compiling_writer___Writer___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
@@ -5063,14 +5090,14 @@ val_t native_interface___frontier___MMExplicitImport___hash(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_native_interface___frontier;
-  fra.me.line = 572;
+  fra.me.line = 574;
   fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport___hash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:574 */
+  /* ./native_interface//frontier.nit:576 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
@@ -5078,9 +5105,9 @@ 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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./native_interface//frontier.nit:574 */
+  /* ./native_interface//frontier.nit:576 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -5093,7 +5120,7 @@ val_t native_interface___frontier___MMExplicitImport_____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_native_interface___frontier;
-  fra.me.line = 576;
+  fra.me.line = 578;
   fra.me.meth = LOCATE_native_interface___frontier___MMExplicitImport_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5103,14 +5130,14 @@ val_t native_interface___frontier___MMExplicitImport_____eqeq(val_t p0, val_t p1
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./native_interface//frontier.nit:578 */
+  /* ./native_interface//frontier.nit:580 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_metamodel___abstractmetamodel___MMExplicitImport, ID_metamodel___abstractmetamodel___MMExplicitImport)) /*cast MMExplicitImport*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:579 */
+    /* ./native_interface//frontier.nit:581 */
     fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(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_native_interface___frontier, 579);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 581);
     }
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
@@ -5120,16 +5147,16 @@ val_t native_interface___frontier___MMExplicitImport_____eqeq(val_t p0, val_t p1
       REGB0 = REGB1;
     }
   } else {
-    /* ./native_interface//frontier.nit:578 */
+    /* ./native_interface//frontier.nit:580 */
     REGB1 = TAG_Bool(false);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./native_interface//frontier.nit:579 */
+    /* ./native_interface//frontier.nit:581 */
     fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(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_native_interface___frontier, 579);
+      nit_abort("Reciever is null", NULL, LOCATE_native_interface___frontier, 581);
     }
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMExplicitImport___local_class(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
@@ -5139,7 +5166,7 @@ val_t native_interface___frontier___MMExplicitImport_____eqeq(val_t p0, val_t p1
       REGB0 = REGB1;
     }
   } else {
-    /* ./native_interface//frontier.nit:578 */
+    /* ./native_interface//frontier.nit:580 */
     REGB1 = TAG_Bool(false);
     REGB0 = REGB1;
   }
index dc6ad2e..23dc9a4 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/native_interface/frontier. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./native_interface/frontier. */
 #ifndef native_interface___frontier_sep
 #define native_interface___frontier_sep
 #include "native_interface___ni_tools._sep.h"
index 80000d1..6ddf230 100644 (file)
@@ -530,7 +530,7 @@ val_t native_interface___ni_metamodel___MMMethod___local_friendly_name_from(val_
   } else fra.me.REG[1] = once_value_2;
   fra.me.REG[1] = fra.me.REG[1];
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[2] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString("");
@@ -576,7 +576,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_super_cname(val_t p0
   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[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[2] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString("___super");
@@ -656,6 +656,7 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -679,7 +680,8 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
   /* ./native_interface//ni_metamodel.nit:100 */
   fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
   /* ./native_interface//ni_metamodel.nit:102 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./native_interface//ni_metamodel.nit:103 */
@@ -716,36 +718,41 @@ val_t native_interface___ni_metamodel___MMMethod___friendly_cparams(val_t p0, va
     nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 106);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* ./native_interface//ni_metamodel.nit:107 */
       REGB1 = TAG_Int(5);
@@ -785,14 +792,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
@@ -836,7 +843,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_suffix(val_t
   } else fra.me.REG[4] = once_value_1;
   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[4] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[4] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   if (!once_value_2) {
     fra.me.REG[4] = BOX_NativeString("");
@@ -953,7 +960,8 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   } else {
     /* ./native_interface//ni_metamodel.nit:127 */
-    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
       /* ./native_interface//ni_metamodel.nit:128 */
       REGB0 = TAG_Int(3);
@@ -1009,7 +1017,7 @@ val_t native_interface___ni_metamodel___MMMethod___csignature_with_name(val_t p0
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./native_interface//ni_metamodel.nit:135 */
-    fra.me.REG[4] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+    fra.me.REG[4] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   } else {
     /* ./native_interface//ni_metamodel.nit:137 */
@@ -1189,6 +1197,7 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
       static val_t once_value_2; /* Once value */
@@ -1209,7 +1218,8 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
   /* ./native_interface//ni_metamodel.nit:176 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
   /* ./native_interface//ni_metamodel.nit:178 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./native_interface//ni_metamodel.nit:179 */
@@ -1230,36 +1240,41 @@ val_t native_interface___ni_metamodel___MMMethod___cparams(val_t p0){
     nit_abort("Reciever is null", NULL, LOCATE_native_interface___ni_metamodel, 182);
   }
   fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ./native_interface//ni_metamodel.nit:183 */
       REGB1 = TAG_Int(3);
@@ -1287,14 +1302,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label4;
     }
   }
@@ -1356,7 +1371,8 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(true);
   } else {
-    REGB1 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
@@ -1383,7 +1399,8 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   /* ./native_interface//ni_metamodel.nit:201 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
   if (UNTAG_Bool(REGB0)) {
     /* ./native_interface//ni_metamodel.nit:202 */
     REGB0 = TAG_Int(5);
@@ -1436,7 +1453,7 @@ val_t native_interface___ni_metamodel___MMMethod___out_csignature(val_t p0){
     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]);
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[3] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+    fra.me.REG[3] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_7) {
       fra.me.REG[3] = BOX_NativeString("___out");
@@ -2222,7 +2239,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ./native_interface//ni_metamodel.nit:284 */
   goto label1;
index 5d571de..962cd56 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/native_interface/ni_metamodel. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./native_interface/ni_metamodel. */
 #ifndef native_interface___ni_metamodel_sep
 #define native_interface___ni_metamodel_sep
 #include "compiling._sep.h"
index 95aa342..242899b 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/native_interface/ni_tools. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./native_interface/ni_tools. */
 #ifndef native_interface___ni_tools_sep
 #define native_interface___ni_tools_sep
 #include "compiling._sep.h"
index 3a7e766..36e4bb7 100644 (file)
@@ -15,8 +15,8 @@ val_t nit_version___Object___nit_version(val_t p0){
   fra.me.REG[0] = p0;
   /* ./nit_version.nit:3 */
   if (!once_value_1) {
-    fra.me.REG[0] = BOX_NativeString("v0.4-67-g64c1f4f");
-    REGB0 = TAG_Int(16);
+    fra.me.REG[0] = BOX_NativeString("v0.4-150-g10f302c_nc3");
+    REGB0 = TAG_Int(21);
     fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
     once_value_1 = fra.me.REG[0];
     register_static_object(&once_value_1);
index 5791f7b..a0188f4 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/nit_version. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./nit_version. */
 #ifndef nit_version_sep
 #define nit_version_sep
 #include "standard._sep.h"
index 0c0e4fc..ba056db 100755 (executable)
@@ -1,5 +1,5 @@
 #!/bin/sh
-# This shell script is generated by NIT to compile the program nitc.
+# This shell script is generated by NIT to compile the program ./nitc.
 CLIBDIR="clib"
 ./../bin/gccx -v -d . -I $CLIBDIR -I . -o nitc -O "$@" \
   $CLIBDIR/nit_main.c\
@@ -58,6 +58,7 @@ CLIBDIR="clib"
   ./metamodel___partial_order._sep.c\
   ./metamodel___virtualtype._sep.c\
   ./opts._sep.c\
+  ./primitive_info._sep.c\
   ./syntax___icode_generation._sep.c\
   ./icode._sep.c\
   ./icode___icode_tools._sep.c\
@@ -66,7 +67,6 @@ CLIBDIR="clib"
   ./syntax___typing._sep.c\
   ./syntax___scope._sep.c\
   ./syntax___flow._sep.c\
-  ./primitive_info._sep.c\
   ./nit_version._sep.c\
   ./separate_options._sep.c\
   ./native_interface._sep.c\
index 466b9b1..b0403a3 100644 (file)
@@ -892,6 +892,7 @@ void nitc___NitCompiler___perform_work(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
@@ -906,36 +907,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
       /* ./nitc.nit:119 */
       fra.me.REG[3] = NEW_Program_program___Program___init(fra.me.REG[3], fra.me.REG[0]);
@@ -972,14 +978,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:133 */
       CALL_compiling___Program___compile_prog(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
index 92c39c3..4eeabf0 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/nitc. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./nitc. */
 #ifndef nitc_sep
 #define nitc_sep
 #include "abstracttool._sep.h"
index 57fd525..891ad2c 100644 (file)
@@ -39,6 +39,7 @@
 #include "metamodel___partial_order._sep.h"
 #include "metamodel___virtualtype._sep.h"
 #include "opts._sep.h"
+#include "primitive_info._sep.h"
 #include "syntax___icode_generation._sep.h"
 #include "icode._sep.h"
 #include "icode___icode_tools._sep.h"
@@ -47,7 +48,6 @@
 #include "syntax___typing._sep.h"
 #include "syntax___scope._sep.h"
 #include "syntax___flow._sep.h"
-#include "primitive_info._sep.h"
 #include "nit_version._sep.h"
 #include "separate_options._sep.h"
 #include "native_interface._sep.h"
@@ -120,6 +120,26 @@ typedef void (*CHECKNEW_standard___collection___abstract_collection___ContainerI
 static const char * const LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init = "new ContainerIterator abstract_collection::ContainerIterator::init";
 val_t NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(val_t p0);
 typedef val_t (*NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator = "init var of MapKeysIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator_t)(val_t p0);
+val_t NEW_standard___collection___abstract_collection___MapKeysIterator(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___MapKeysIterator = "check new MapKeysIterator";
+void CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(val_t p0);
+typedef void (*CHECKNEW_standard___collection___abstract_collection___MapKeysIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init = "new MapKeysIterator abstract_collection::MapKeysIterator::init";
+val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(val_t p0);
+typedef val_t (*NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator = "init var of MapValuesIterator";
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator_t)(val_t p0);
+val_t NEW_standard___collection___abstract_collection___MapValuesIterator(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___abstract_collection___MapValuesIterator = "check new MapValuesIterator";
+void CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(val_t p0);
+typedef void (*CHECKNEW_standard___collection___abstract_collection___MapValuesIterator_t)(val_t p0);
+static const char * const LOCATE_NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init = "new MapValuesIterator abstract_collection::MapValuesIterator::init";
+val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(val_t p0);
+typedef val_t (*NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator = "init var of CoupleMapIterator";
 void INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___abstract_collection___CoupleMapIterator_t)(val_t p0);
@@ -281,6 +301,26 @@ typedef void (*CHECKNEW_standard___collection___array___ArrayMap_t)(val_t p0);
 static const char * const LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init = "new ArrayMap array::ArrayMap::init";
 val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void);
 typedef val_t (*NEW_ArrayMap_standard___collection___array___ArrayMap___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys = "init var of ArrayMapKeys";
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys_t)(val_t p0);
+val_t NEW_standard___collection___array___ArrayMapKeys(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayMapKeys = "check new ArrayMapKeys";
+void CHECKNEW_standard___collection___array___ArrayMapKeys(val_t p0);
+typedef void (*CHECKNEW_standard___collection___array___ArrayMapKeys_t)(val_t p0);
+static const char * const LOCATE_NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init = "new ArrayMapKeys array::ArrayMapKeys::init";
+val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(val_t p0);
+typedef val_t (*NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues = "init var of ArrayMapValues";
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues_t)(val_t p0);
+val_t NEW_standard___collection___array___ArrayMapValues(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___array___ArrayMapValues = "check new ArrayMapValues";
+void CHECKNEW_standard___collection___array___ArrayMapValues(val_t p0);
+typedef void (*CHECKNEW_standard___collection___array___ArrayMapValues_t)(val_t p0);
+static const char * const LOCATE_NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init = "new ArrayMapValues array::ArrayMapValues::init";
+val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(val_t p0);
+typedef val_t (*NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter = "init var of AbstractSorter";
 void INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___sorter___AbstractSorter_t)(val_t p0);
@@ -331,6 +371,26 @@ typedef void (*CHECKNEW_standard___collection___hash_collection___HashMap_t)(val
 static const char * const LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init = "new HashMap hash_collection::HashMap::init";
 val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init(void);
 typedef val_t (*NEW_HashMap_standard___collection___hash_collection___HashMap___init_t)(void);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys = "init var of HashMapKeys";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys_t)(val_t p0);
+val_t NEW_standard___collection___hash_collection___HashMapKeys(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapKeys = "check new HashMapKeys";
+void CHECKNEW_standard___collection___hash_collection___HashMapKeys(val_t p0);
+typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapKeys_t)(val_t p0);
+static const char * const LOCATE_NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init = "new HashMapKeys hash_collection::HashMapKeys::init";
+val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(val_t p0);
+typedef val_t (*NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues = "init var of HashMapValues";
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(val_t p0);
+typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues_t)(val_t p0);
+val_t NEW_standard___collection___hash_collection___HashMapValues(void);
+static const char * const LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapValues = "check new HashMapValues";
+void CHECKNEW_standard___collection___hash_collection___HashMapValues(val_t p0);
+typedef void (*CHECKNEW_standard___collection___hash_collection___HashMapValues_t)(val_t p0);
+static const char * const LOCATE_NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init = "new HashMapValues hash_collection::HashMapValues::init";
+val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(val_t p0);
+typedef val_t (*NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode = "init var of HashMapNode";
 void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(val_t p0);
 typedef void (*INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode_t)(val_t p0);
@@ -9667,6 +9727,16 @@ typedef val_t (*NEW_ASendReassignExpr_parser___parser_prod___ASendExpr___init_as
 static const char * const LOCATE_NEW_ASendReassignExpr_parser___parser_nodes___ANode___init = "new ASendReassignExpr parser_nodes::ANode::init";
 val_t NEW_ASendReassignExpr_parser___parser_nodes___ANode___init(val_t p0);
 typedef val_t (*NEW_ASendReassignExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo = "init var of PrimitiveInfo";
+void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0);
+typedef void (*INIT_ATTRIBUTES__primitive_info___PrimitiveInfo_t)(val_t p0);
+val_t NEW_primitive_info___PrimitiveInfo(void);
+static const char * const LOCATE_CHECKNEW_primitive_info___PrimitiveInfo = "check new PrimitiveInfo";
+void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0);
+typedef void (*CHECKNEW_primitive_info___PrimitiveInfo_t)(val_t p0);
+static const char * const LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init = "new PrimitiveInfo primitive_info::PrimitiveInfo::init";
+val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter = "init var of CSHSorter";
 void INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter_t)(val_t p0);
@@ -10055,8 +10125,8 @@ static const char * const LOCATE_CHECKNEW_icode___icode_base___ITypeCheck = "che
 void CHECKNEW_icode___icode_base___ITypeCheck(val_t p0);
 typedef void (*CHECKNEW_icode___icode_base___ITypeCheck_t)(val_t p0);
 static const char * const LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init = "new ITypeCheck icode_base::ITypeCheck::init";
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1);
-typedef val_t (*NEW_ITypeCheck_icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1);
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2);
+typedef val_t (*NEW_ITypeCheck_icode___icode_base___ITypeCheck___init_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_INIT_ATTRIBUTES__icode___icode_base___IIs = "init var of IIs";
 void INIT_ATTRIBUTES__icode___icode_base___IIs(val_t p0);
 typedef void (*INIT_ATTRIBUTES__icode___icode_base___IIs_t)(val_t p0);
@@ -10257,16 +10327,6 @@ typedef void (*CHECKNEW_syntax___typing___ATypeCheckExpr_t)(val_t p0);
 static const char * const LOCATE_NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init = "new ATypeCheckExpr parser_nodes::ANode::init";
 val_t NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init(val_t p0);
 typedef val_t (*NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init_t)(val_t p0);
-static const char * const LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo = "init var of PrimitiveInfo";
-void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0);
-typedef void (*INIT_ATTRIBUTES__primitive_info___PrimitiveInfo_t)(val_t p0);
-val_t NEW_primitive_info___PrimitiveInfo(void);
-static const char * const LOCATE_CHECKNEW_primitive_info___PrimitiveInfo = "check new PrimitiveInfo";
-void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0);
-typedef void (*CHECKNEW_primitive_info___PrimitiveInfo_t)(val_t p0);
-static const char * const LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init = "new PrimitiveInfo primitive_info::PrimitiveInfo::init";
-val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(val_t p0, val_t p1, val_t p2);
-typedef val_t (*NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_INIT_ATTRIBUTES__syntax___icode_generation___A2IContext = "init var of A2IContext";
 void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0);
 typedef void (*INIT_ATTRIBUTES__syntax___icode_generation___A2IContext_t)(val_t p0);
@@ -10697,6 +10757,26 @@ typedef void (*CHECKNEW_compiling___table_computation___TableEltMeth_t)(val_t p0
 static const char * const LOCATE_NEW_TableEltMeth_compiling___table_computation___TableEltProp___init = "new TableEltMeth table_computation::TableEltProp::init";
 val_t NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(val_t p0);
 typedef val_t (*NEW_TableEltMeth_compiling___table_computation___TableEltProp___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor = "init var of TableEltVTClassColor";
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(val_t p0);
+typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor_t)(val_t p0);
+val_t NEW_compiling___table_computation___TableEltVTClassColor(void);
+static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassColor = "check new TableEltVTClassColor";
+void CHECKNEW_compiling___table_computation___TableEltVTClassColor(val_t p0);
+typedef void (*CHECKNEW_compiling___table_computation___TableEltVTClassColor_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init = "new TableEltVTClassColor table_computation::TableEltProp::init";
+val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0);
+typedef val_t (*NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init_t)(val_t p0);
+static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId = "init var of TableEltVTClassId";
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(val_t p0);
+typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId_t)(val_t p0);
+val_t NEW_compiling___table_computation___TableEltVTClassId(void);
+static const char * const LOCATE_CHECKNEW_compiling___table_computation___TableEltVTClassId = "check new TableEltVTClassId";
+void CHECKNEW_compiling___table_computation___TableEltVTClassId(val_t p0);
+typedef void (*CHECKNEW_compiling___table_computation___TableEltVTClassId_t)(val_t p0);
+static const char * const LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init = "new TableEltVTClassId table_computation::TableEltProp::init";
+val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0);
+typedef val_t (*NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init_t)(val_t p0);
 static const char * const LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper = "init var of TableEltSuper";
 void INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(val_t p0);
 typedef void (*INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper_t)(val_t p0);
@@ -10857,2661 +10937,2660 @@ typedef void (*CHECKNEW_native_interface___frontier___FrontierVisitor_t)(val_t p
 static const char * const LOCATE_NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init = "new FrontierVisitor frontier::FrontierVisitor::init";
 val_t NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init(val_t p0, val_t p1);
 typedef val_t (*NEW_FrontierVisitor_native_interface___frontier___FrontierVisitor___init_t)(val_t p0, val_t p1);
-const char *LOCATE_abstracttool = "src/abstracttool.nit";
+const char *LOCATE_abstracttool = "./abstracttool.nit";
 const int SFT_abstracttool[6] = {
-  2995 /* Id of AbstractCompiler */,
+  3035 /* Id of AbstractCompiler */,
   6 /* Color of AbstractCompiler */,
   51 /* Group of ? */,
-  135 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
+  134 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_syntax = "src/syntax//syntax.nit";
+const char *LOCATE_syntax = "./syntax//syntax.nit";
 const int SFT_syntax[6] = {
-  339 /* Id of SrcModuleLoader */,
+  347 /* Id of SrcModuleLoader */,
   5 /* Color of SrcModuleLoader */,
   58 /* Group of ? */,
-  90 /* Group of ? */,
+  88 /* Group of ? */,
   15 /* Group of ? */,
-  77 /* Group of ? */,
+  76 /* Group of ? */,
 };
-const char *LOCATE_syntax___mmbuilder = "src/syntax//mmbuilder.nit";
-const int SFT_syntax___mmbuilder[69] = {
-  2323 /* Id of CSHSorter */,
+const char *LOCATE_syntax___mmbuilder = "./syntax//mmbuilder.nit";
+const int SFT_syntax___mmbuilder[68] = {
+  2351 /* Id of CSHSorter */,
   5 /* Color of CSHSorter */,
-  56 /* Group of ? */,
-  92 /* Group of ? */,
-  50 /* Group of ? */,
-  124 /* Group of ? */,
-  49 /* Group of ? */,
+  54 /* Group of ? */,
+  90 /* Group of ? */,
+  48 /* Group of ? */,
+  122 /* Group of ? */,
+  47 /* Group of ? */,
   18 /* Group of ? */,
-  2147 /* Id of MMSrcAncestor */,
+  2163 /* Id of MMSrcAncestor */,
   5 /* Color of MMSrcAncestor */,
   4 /* Group of ? */,
-  59 /* Group of ? */,
-  2975 /* Id of ClassBuilderVisitor */,
+  57 /* Group of ? */,
+  3003 /* Id of ClassBuilderVisitor */,
   6 /* Color of ClassBuilderVisitor */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
-  2971 /* Id of ClassSpecializationBuilderVisitor */,
+  81 /* Group of ? */,
+  2999 /* Id of ClassSpecializationBuilderVisitor */,
   6 /* Color of ClassSpecializationBuilderVisitor */,
-  83 /* Group of ? */,
-  2979 /* Id of ClassAncestorBuilder */,
+  81 /* Group of ? */,
+  3007 /* Id of ClassAncestorBuilder */,
   6 /* Color of ClassAncestorBuilder */,
-  83 /* Group of ? */,
-  2967 /* Id of ClassVerifierVisitor */,
+  81 /* Group of ? */,
+  2995 /* Id of ClassVerifierVisitor */,
   6 /* Color of ClassVerifierVisitor */,
-  83 /* Group of ? */,
-  2763 /* Id of PropertyBuilderVisitor */,
+  81 /* Group of ? */,
+  2787 /* Id of PropertyBuilderVisitor */,
   6 /* Color of PropertyBuilderVisitor */,
-  83 /* Group of ? */,
-  2759 /* Id of PropertyVerifierVisitor */,
+  81 /* Group of ? */,
+  2783 /* Id of PropertyVerifierVisitor */,
   6 /* Color of PropertyVerifierVisitor */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
+  81 /* Group of ? */,
   51 /* Id of SignatureBuilder */,
   4 /* Color of SignatureBuilder */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
-  87 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
+  85 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
   8 /* Group of ? */,
-  81 /* Group of ? */,
+  79 /* Group of ? */,
   8 /* Group of ? */,
-  81 /* Group of ? */,
-  96 /* Group of ? */,
-  85 /* Group of ? */,
+  79 /* Group of ? */,
+  94 /* Group of ? */,
   8 /* Group of ? */,
-  81 /* Group of ? */,
-  2107 /* Id of MethidAccumulator */,
+  79 /* Group of ? */,
+  2119 /* Id of MethidAccumulator */,
   5 /* Color of MethidAccumulator */,
   3 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
 };
-const char *LOCATE_syntax___syntax_base = "src/syntax//syntax_base.nit";
+const char *LOCATE_syntax___syntax_base = "./syntax//syntax_base.nit";
 const int SFT_syntax___syntax_base[100] = {
-  2143 /* Id of MMSrcModule */,
+  2159 /* Id of MMSrcModule */,
   5 /* Color of MMSrcModule */,
   21 /* Group of ? */,
-  94 /* Group of ? */,
-  50 /* Group of ? */,
-  49 /* Group of ? */,
-  2823 /* Id of MMSrcLocalClass */,
+  92 /* Group of ? */,
+  48 /* Group of ? */,
+  47 /* Group of ? */,
+  2843 /* Id of MMSrcLocalClass */,
   6 /* Color of MMSrcLocalClass */,
   28 /* Group of ? */,
-  126 /* Group of ? */,
-  49 /* Group of ? */,
-  50 /* Group of ? */,
-  2827 /* Id of MMSrcAttribute */,
+  124 /* Group of ? */,
+  47 /* Group of ? */,
+  48 /* Group of ? */,
+  2847 /* Id of MMSrcAttribute */,
   6 /* Color of MMSrcAttribute */,
-  75 /* Group of ? */,
-  2819 /* Id of MMSrcMethod */,
+  73 /* Group of ? */,
+  2839 /* Id of MMSrcMethod */,
   6 /* Color of MMSrcMethod */,
-  102 /* Group of ? */,
-  3147 /* Id of MMAttrImplementationMethod */,
+  100 /* Group of ? */,
+  3199 /* Id of MMAttrImplementationMethod */,
   7 /* Color of MMAttrImplementationMethod */,
-  103 /* Group of ? */,
-  3503 /* Id of MMReadImplementationMethod */,
+  101 /* Group of ? */,
+  3547 /* Id of MMReadImplementationMethod */,
   8 /* Color of MMReadImplementationMethod */,
-  105 /* Group of ? */,
-  3499 /* Id of MMWriteImplementationMethod */,
+  103 /* Group of ? */,
+  3543 /* Id of MMWriteImplementationMethod */,
   8 /* Color of MMWriteImplementationMethod */,
-  105 /* Group of ? */,
-  3143 /* Id of MMMethSrcMethod */,
+  103 /* Group of ? */,
+  3195 /* Id of MMMethSrcMethod */,
   7 /* Color of MMMethSrcMethod */,
   11 /* Group of ? */,
-  103 /* Group of ? */,
-  2815 /* Id of MMSrcTypeProperty */,
+  101 /* Group of ? */,
+  2835 /* Id of MMSrcTypeProperty */,
   6 /* Color of MMSrcTypeProperty */,
-  74 /* Group of ? */,
-  3507 /* Id of MMImplicitInit */,
+  72 /* Group of ? */,
+  3551 /* Id of MMImplicitInit */,
   8 /* Color of MMImplicitInit */,
   19 /* Group of ? */,
-  106 /* Group of ? */,
+  104 /* Group of ? */,
   19 /* Id of Variable */,
   4 /* Color of Variable */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  315 /* Id of VarVariable */,
+  48 /* Group of ? */,
+  323 /* Id of VarVariable */,
   5 /* Color of VarVariable */,
-  57 /* Group of ? */,
-  2075 /* Id of ParamVariable */,
+  55 /* Group of ? */,
+  2087 /* Id of ParamVariable */,
   5 /* Color of ParamVariable */,
-  57 /* Group of ? */,
-  2331 /* Id of AutoVariable */,
+  55 /* Group of ? */,
+  2359 /* Id of AutoVariable */,
   5 /* Color of AutoVariable */,
-  57 /* Group of ? */,
-  2311 /* Id of ClosureVariable */,
+  55 /* Group of ? */,
+  2339 /* Id of ClosureVariable */,
   5 /* Color of ClosureVariable */,
   5 /* Group of ? */,
-  57 /* Group of ? */,
-  2343 /* Id of AbsSyntaxVisitor */,
+  55 /* Group of ? */,
+  2371 /* Id of AbsSyntaxVisitor */,
   5 /* Color of AbsSyntaxVisitor */,
   3 /* Group of ? */,
-  54 /* Group of ? */,
-  55 /* Group of ? */,
+  52 /* Group of ? */,
+  53 /* Group of ? */,
   4 /* Group of ? */,
-  69 /* Group of ? */,
+  67 /* Group of ? */,
   7 /* Group of ? */,
+  80 /* Group of ? */,
+  76 /* Group of ? */,
   82 /* Group of ? */,
-  78 /* Group of ? */,
-  84 /* Group of ? */,
   16 /* Group of ? */,
-  104 /* Group of ? */,
-  85 /* Group of ? */,
-  84 /* Group of ? */,
-  78 /* Group of ? */,
-  75 /* Group of ? */,
+  102 /* Group of ? */,
+  83 /* Group of ? */,
+  82 /* Group of ? */,
+  76 /* Group of ? */,
+  73 /* Group of ? */,
   6 /* Group of ? */,
-  75 /* Group of ? */,
-  74 /* Group of ? */,
-  3487 /* Id of AAbsAbsSendExpr */,
+  73 /* Group of ? */,
+  72 /* Group of ? */,
+  3527 /* Id of AAbsAbsSendExpr */,
   5 /* Color of AAbsAbsSendExpr */,
-  96 /* Group of ? */,
-  3703 /* Id of AAbsSendExpr */,
+  94 /* Group of ? */,
+  3739 /* Id of AAbsSendExpr */,
   9 /* Color of AAbsSendExpr */,
-  102 /* Group of ? */,
-  3719 /* Id of ASuperInitCall */,
+  100 /* Group of ? */,
+  3751 /* Id of ASuperInitCall */,
   10 /* Color of ASuperInitCall */,
-  70 /* Group of ? */,
+  68 /* Group of ? */,
+  103 /* Group of ? */,
   105 /* Group of ? */,
-  107 /* Group of ? */,
-  88 /* Group of ? */,
-  3755 /* Id of ASendReassignExpr */,
+  86 /* Group of ? */,
+  3787 /* Id of ASendReassignExpr */,
   12 /* Color of ASendReassignExpr */,
-  84 /* Group of ? */,
-  93 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  89 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  99 /* Group of ? */,
+  82 /* Group of ? */,
+  91 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  87 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  97 /* Group of ? */,
   11 /* Group of ? */,
-  78 /* Group of ? */,
-  75 /* Group of ? */,
+  76 /* Group of ? */,
+  73 /* Group of ? */,
 };
-const char *LOCATE_parser = "src/parser//parser.nit";
+const char *LOCATE_parser = "./parser//parser.nit";
 const int SFT_parser[1280] = {
   39 /* Id of State */,
   4 /* Color of State */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2071 /* Id of Parser */,
+  47 /* Group of ? */,
+  2083 /* Id of Parser */,
   5 /* Color of Parser */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   4 /* Group of ? */,
-  2299 /* Id of ComputeProdLocationVisitor */,
+  2327 /* Id of ComputeProdLocationVisitor */,
   5 /* Color of ComputeProdLocationVisitor */,
   3 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   67 /* Id of ReduceAction */,
   4 /* Color of ReduceAction */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2039 /* Id of ReduceAction0 */,
+  47 /* Group of ? */,
+  2051 /* Id of ReduceAction0 */,
   5 /* Color of ReduceAction0 */,
-  53 /* Group of ? */,
-  2035 /* Id of ReduceAction1 */,
+  51 /* Group of ? */,
+  2047 /* Id of ReduceAction1 */,
   5 /* Color of ReduceAction1 */,
-  53 /* Group of ? */,
-  1591 /* Id of ReduceAction2 */,
+  51 /* Group of ? */,
+  1603 /* Id of ReduceAction2 */,
   5 /* Color of ReduceAction2 */,
-  53 /* Group of ? */,
-  1187 /* Id of ReduceAction3 */,
+  51 /* Group of ? */,
+  1199 /* Id of ReduceAction3 */,
   5 /* Color of ReduceAction3 */,
-  53 /* Group of ? */,
-  835 /* Id of ReduceAction4 */,
+  51 /* Group of ? */,
+  847 /* Id of ReduceAction4 */,
   5 /* Color of ReduceAction4 */,
-  53 /* Group of ? */,
-  699 /* Id of ReduceAction5 */,
+  51 /* Group of ? */,
+  711 /* Id of ReduceAction5 */,
   5 /* Color of ReduceAction5 */,
-  53 /* Group of ? */,
-  655 /* Id of ReduceAction6 */,
+  51 /* Group of ? */,
+  667 /* Id of ReduceAction6 */,
   5 /* Color of ReduceAction6 */,
-  53 /* Group of ? */,
-  595 /* Id of ReduceAction7 */,
+  51 /* Group of ? */,
+  607 /* Id of ReduceAction7 */,
   5 /* Color of ReduceAction7 */,
-  53 /* Group of ? */,
-  443 /* Id of ReduceAction8 */,
+  51 /* Group of ? */,
+  455 /* Id of ReduceAction8 */,
   5 /* Color of ReduceAction8 */,
-  53 /* Group of ? */,
-  399 /* Id of ReduceAction9 */,
+  51 /* Group of ? */,
+  411 /* Id of ReduceAction9 */,
   5 /* Color of ReduceAction9 */,
-  53 /* Group of ? */,
-  2031 /* Id of ReduceAction10 */,
+  51 /* Group of ? */,
+  2043 /* Id of ReduceAction10 */,
   5 /* Color of ReduceAction10 */,
-  53 /* Group of ? */,
-  1987 /* Id of ReduceAction11 */,
+  51 /* Group of ? */,
+  1999 /* Id of ReduceAction11 */,
   5 /* Color of ReduceAction11 */,
-  53 /* Group of ? */,
-  1943 /* Id of ReduceAction12 */,
+  51 /* Group of ? */,
+  1955 /* Id of ReduceAction12 */,
   5 /* Color of ReduceAction12 */,
-  53 /* Group of ? */,
-  1899 /* Id of ReduceAction13 */,
+  51 /* Group of ? */,
+  1911 /* Id of ReduceAction13 */,
   5 /* Color of ReduceAction13 */,
-  53 /* Group of ? */,
-  1855 /* Id of ReduceAction14 */,
+  51 /* Group of ? */,
+  1867 /* Id of ReduceAction14 */,
   5 /* Color of ReduceAction14 */,
-  53 /* Group of ? */,
-  1811 /* Id of ReduceAction15 */,
+  51 /* Group of ? */,
+  1823 /* Id of ReduceAction15 */,
   5 /* Color of ReduceAction15 */,
-  53 /* Group of ? */,
-  1767 /* Id of ReduceAction16 */,
+  51 /* Group of ? */,
+  1779 /* Id of ReduceAction16 */,
   5 /* Color of ReduceAction16 */,
-  53 /* Group of ? */,
-  1723 /* Id of ReduceAction17 */,
+  51 /* Group of ? */,
+  1735 /* Id of ReduceAction17 */,
   5 /* Color of ReduceAction17 */,
-  53 /* Group of ? */,
-  1679 /* Id of ReduceAction18 */,
+  51 /* Group of ? */,
+  1691 /* Id of ReduceAction18 */,
   5 /* Color of ReduceAction18 */,
-  53 /* Group of ? */,
-  1635 /* Id of ReduceAction19 */,
+  51 /* Group of ? */,
+  1647 /* Id of ReduceAction19 */,
   5 /* Color of ReduceAction19 */,
-  53 /* Group of ? */,
-  1587 /* Id of ReduceAction20 */,
+  51 /* Group of ? */,
+  1599 /* Id of ReduceAction20 */,
   5 /* Color of ReduceAction20 */,
-  53 /* Group of ? */,
-  1543 /* Id of ReduceAction21 */,
+  51 /* Group of ? */,
+  1555 /* Id of ReduceAction21 */,
   5 /* Color of ReduceAction21 */,
-  53 /* Group of ? */,
-  1503 /* Id of ReduceAction22 */,
+  51 /* Group of ? */,
+  1515 /* Id of ReduceAction22 */,
   5 /* Color of ReduceAction22 */,
-  53 /* Group of ? */,
-  1459 /* Id of ReduceAction23 */,
+  51 /* Group of ? */,
+  1471 /* Id of ReduceAction23 */,
   5 /* Color of ReduceAction23 */,
-  53 /* Group of ? */,
-  1419 /* Id of ReduceAction24 */,
+  51 /* Group of ? */,
+  1431 /* Id of ReduceAction24 */,
   5 /* Color of ReduceAction24 */,
-  53 /* Group of ? */,
-  1383 /* Id of ReduceAction25 */,
+  51 /* Group of ? */,
+  1395 /* Id of ReduceAction25 */,
   5 /* Color of ReduceAction25 */,
-  53 /* Group of ? */,
-  1351 /* Id of ReduceAction26 */,
+  51 /* Group of ? */,
+  1363 /* Id of ReduceAction26 */,
   5 /* Color of ReduceAction26 */,
-  53 /* Group of ? */,
-  1319 /* Id of ReduceAction27 */,
+  51 /* Group of ? */,
+  1331 /* Id of ReduceAction27 */,
   5 /* Color of ReduceAction27 */,
-  53 /* Group of ? */,
-  1275 /* Id of ReduceAction28 */,
+  51 /* Group of ? */,
+  1287 /* Id of ReduceAction28 */,
   5 /* Color of ReduceAction28 */,
-  53 /* Group of ? */,
-  1231 /* Id of ReduceAction29 */,
+  51 /* Group of ? */,
+  1243 /* Id of ReduceAction29 */,
   5 /* Color of ReduceAction29 */,
-  53 /* Group of ? */,
-  1183 /* Id of ReduceAction30 */,
+  51 /* Group of ? */,
+  1195 /* Id of ReduceAction30 */,
   5 /* Color of ReduceAction30 */,
-  53 /* Group of ? */,
-  1139 /* Id of ReduceAction31 */,
+  51 /* Group of ? */,
+  1151 /* Id of ReduceAction31 */,
   5 /* Color of ReduceAction31 */,
-  53 /* Group of ? */,
-  1103 /* Id of ReduceAction32 */,
+  51 /* Group of ? */,
+  1115 /* Id of ReduceAction32 */,
   5 /* Color of ReduceAction32 */,
-  53 /* Group of ? */,
-  1059 /* Id of ReduceAction33 */,
+  51 /* Group of ? */,
+  1071 /* Id of ReduceAction33 */,
   5 /* Color of ReduceAction33 */,
-  53 /* Group of ? */,
-  1035 /* Id of ReduceAction34 */,
+  51 /* Group of ? */,
+  1047 /* Id of ReduceAction34 */,
   5 /* Color of ReduceAction34 */,
-  53 /* Group of ? */,
-  999 /* Id of ReduceAction35 */,
+  51 /* Group of ? */,
+  1011 /* Id of ReduceAction35 */,
   5 /* Color of ReduceAction35 */,
-  53 /* Group of ? */,
-  963 /* Id of ReduceAction36 */,
+  51 /* Group of ? */,
+  975 /* Id of ReduceAction36 */,
   5 /* Color of ReduceAction36 */,
-  53 /* Group of ? */,
-  927 /* Id of ReduceAction37 */,
+  51 /* Group of ? */,
+  939 /* Id of ReduceAction37 */,
   5 /* Color of ReduceAction37 */,
-  53 /* Group of ? */,
-  871 /* Id of ReduceAction39 */,
+  51 /* Group of ? */,
+  883 /* Id of ReduceAction39 */,
   5 /* Color of ReduceAction39 */,
-  53 /* Group of ? */,
-  831 /* Id of ReduceAction40 */,
+  51 /* Group of ? */,
+  843 /* Id of ReduceAction40 */,
   5 /* Color of ReduceAction40 */,
-  53 /* Group of ? */,
-  811 /* Id of ReduceAction41 */,
+  51 /* Group of ? */,
+  823 /* Id of ReduceAction41 */,
   5 /* Color of ReduceAction41 */,
-  53 /* Group of ? */,
-  771 /* Id of ReduceAction42 */,
+  51 /* Group of ? */,
+  783 /* Id of ReduceAction42 */,
   5 /* Color of ReduceAction42 */,
-  53 /* Group of ? */,
-  735 /* Id of ReduceAction43 */,
+  51 /* Group of ? */,
+  747 /* Id of ReduceAction43 */,
   5 /* Color of ReduceAction43 */,
-  53 /* Group of ? */,
-  723 /* Id of ReduceAction44 */,
+  51 /* Group of ? */,
+  735 /* Id of ReduceAction44 */,
   5 /* Color of ReduceAction44 */,
-  53 /* Group of ? */,
-  719 /* Id of ReduceAction45 */,
+  51 /* Group of ? */,
+  731 /* Id of ReduceAction45 */,
   5 /* Color of ReduceAction45 */,
-  53 /* Group of ? */,
-  715 /* Id of ReduceAction46 */,
+  51 /* Group of ? */,
+  727 /* Id of ReduceAction46 */,
   5 /* Color of ReduceAction46 */,
-  53 /* Group of ? */,
-  711 /* Id of ReduceAction47 */,
+  51 /* Group of ? */,
+  723 /* Id of ReduceAction47 */,
   5 /* Color of ReduceAction47 */,
-  53 /* Group of ? */,
-  707 /* Id of ReduceAction48 */,
+  51 /* Group of ? */,
+  719 /* Id of ReduceAction48 */,
   5 /* Color of ReduceAction48 */,
-  53 /* Group of ? */,
-  703 /* Id of ReduceAction49 */,
+  51 /* Group of ? */,
+  715 /* Id of ReduceAction49 */,
   5 /* Color of ReduceAction49 */,
-  53 /* Group of ? */,
-  695 /* Id of ReduceAction50 */,
+  51 /* Group of ? */,
+  707 /* Id of ReduceAction50 */,
   5 /* Color of ReduceAction50 */,
-  53 /* Group of ? */,
-  691 /* Id of ReduceAction51 */,
+  51 /* Group of ? */,
+  703 /* Id of ReduceAction51 */,
   5 /* Color of ReduceAction51 */,
-  53 /* Group of ? */,
-  687 /* Id of ReduceAction52 */,
+  51 /* Group of ? */,
+  699 /* Id of ReduceAction52 */,
   5 /* Color of ReduceAction52 */,
-  53 /* Group of ? */,
-  683 /* Id of ReduceAction53 */,
+  51 /* Group of ? */,
+  695 /* Id of ReduceAction53 */,
   5 /* Color of ReduceAction53 */,
-  53 /* Group of ? */,
-  679 /* Id of ReduceAction54 */,
+  51 /* Group of ? */,
+  691 /* Id of ReduceAction54 */,
   5 /* Color of ReduceAction54 */,
-  53 /* Group of ? */,
-  675 /* Id of ReduceAction55 */,
+  51 /* Group of ? */,
+  687 /* Id of ReduceAction55 */,
   5 /* Color of ReduceAction55 */,
-  53 /* Group of ? */,
-  671 /* Id of ReduceAction56 */,
+  51 /* Group of ? */,
+  683 /* Id of ReduceAction56 */,
   5 /* Color of ReduceAction56 */,
-  53 /* Group of ? */,
-  667 /* Id of ReduceAction57 */,
+  51 /* Group of ? */,
+  679 /* Id of ReduceAction57 */,
   5 /* Color of ReduceAction57 */,
-  53 /* Group of ? */,
-  663 /* Id of ReduceAction58 */,
+  51 /* Group of ? */,
+  675 /* Id of ReduceAction58 */,
   5 /* Color of ReduceAction58 */,
-  53 /* Group of ? */,
-  659 /* Id of ReduceAction59 */,
+  51 /* Group of ? */,
+  671 /* Id of ReduceAction59 */,
   5 /* Color of ReduceAction59 */,
-  53 /* Group of ? */,
-  651 /* Id of ReduceAction60 */,
+  51 /* Group of ? */,
+  663 /* Id of ReduceAction60 */,
   5 /* Color of ReduceAction60 */,
-  53 /* Group of ? */,
-  647 /* Id of ReduceAction61 */,
+  51 /* Group of ? */,
+  659 /* Id of ReduceAction61 */,
   5 /* Color of ReduceAction61 */,
-  53 /* Group of ? */,
-  643 /* Id of ReduceAction62 */,
+  51 /* Group of ? */,
+  655 /* Id of ReduceAction62 */,
   5 /* Color of ReduceAction62 */,
-  53 /* Group of ? */,
-  639 /* Id of ReduceAction63 */,
+  51 /* Group of ? */,
+  651 /* Id of ReduceAction63 */,
   5 /* Color of ReduceAction63 */,
-  53 /* Group of ? */,
-  635 /* Id of ReduceAction64 */,
+  51 /* Group of ? */,
+  647 /* Id of ReduceAction64 */,
   5 /* Color of ReduceAction64 */,
-  53 /* Group of ? */,
-  631 /* Id of ReduceAction65 */,
+  51 /* Group of ? */,
+  643 /* Id of ReduceAction65 */,
   5 /* Color of ReduceAction65 */,
-  53 /* Group of ? */,
-  627 /* Id of ReduceAction66 */,
+  51 /* Group of ? */,
+  639 /* Id of ReduceAction66 */,
   5 /* Color of ReduceAction66 */,
-  53 /* Group of ? */,
-  623 /* Id of ReduceAction67 */,
+  51 /* Group of ? */,
+  635 /* Id of ReduceAction67 */,
   5 /* Color of ReduceAction67 */,
-  53 /* Group of ? */,
-  619 /* Id of ReduceAction68 */,
+  51 /* Group of ? */,
+  631 /* Id of ReduceAction68 */,
   5 /* Color of ReduceAction68 */,
-  53 /* Group of ? */,
-  607 /* Id of ReduceAction69 */,
+  51 /* Group of ? */,
+  619 /* Id of ReduceAction69 */,
   5 /* Color of ReduceAction69 */,
-  53 /* Group of ? */,
-  591 /* Id of ReduceAction70 */,
+  51 /* Group of ? */,
+  603 /* Id of ReduceAction70 */,
   5 /* Color of ReduceAction70 */,
-  53 /* Group of ? */,
-  579 /* Id of ReduceAction71 */,
+  51 /* Group of ? */,
+  591 /* Id of ReduceAction71 */,
   5 /* Color of ReduceAction71 */,
-  53 /* Group of ? */,
-  551 /* Id of ReduceAction72 */,
+  51 /* Group of ? */,
+  563 /* Id of ReduceAction72 */,
   5 /* Color of ReduceAction72 */,
-  53 /* Group of ? */,
-  515 /* Id of ReduceAction73 */,
+  51 /* Group of ? */,
+  527 /* Id of ReduceAction73 */,
   5 /* Color of ReduceAction73 */,
-  53 /* Group of ? */,
-  487 /* Id of ReduceAction74 */,
+  51 /* Group of ? */,
+  499 /* Id of ReduceAction74 */,
   5 /* Color of ReduceAction74 */,
-  53 /* Group of ? */,
-  463 /* Id of ReduceAction75 */,
+  51 /* Group of ? */,
+  475 /* Id of ReduceAction75 */,
   5 /* Color of ReduceAction75 */,
-  53 /* Group of ? */,
-  459 /* Id of ReduceAction76 */,
+  51 /* Group of ? */,
+  471 /* Id of ReduceAction76 */,
   5 /* Color of ReduceAction76 */,
-  53 /* Group of ? */,
-  455 /* Id of ReduceAction77 */,
+  51 /* Group of ? */,
+  467 /* Id of ReduceAction77 */,
   5 /* Color of ReduceAction77 */,
-  53 /* Group of ? */,
-  451 /* Id of ReduceAction78 */,
+  51 /* Group of ? */,
+  463 /* Id of ReduceAction78 */,
   5 /* Color of ReduceAction78 */,
-  53 /* Group of ? */,
-  447 /* Id of ReduceAction79 */,
+  51 /* Group of ? */,
+  459 /* Id of ReduceAction79 */,
   5 /* Color of ReduceAction79 */,
-  53 /* Group of ? */,
-  439 /* Id of ReduceAction80 */,
+  51 /* Group of ? */,
+  451 /* Id of ReduceAction80 */,
   5 /* Color of ReduceAction80 */,
-  53 /* Group of ? */,
-  435 /* Id of ReduceAction81 */,
+  51 /* Group of ? */,
+  447 /* Id of ReduceAction81 */,
   5 /* Color of ReduceAction81 */,
-  53 /* Group of ? */,
-  431 /* Id of ReduceAction82 */,
+  51 /* Group of ? */,
+  443 /* Id of ReduceAction82 */,
   5 /* Color of ReduceAction82 */,
-  53 /* Group of ? */,
-  427 /* Id of ReduceAction83 */,
+  51 /* Group of ? */,
+  439 /* Id of ReduceAction83 */,
   5 /* Color of ReduceAction83 */,
-  53 /* Group of ? */,
-  423 /* Id of ReduceAction84 */,
+  51 /* Group of ? */,
+  435 /* Id of ReduceAction84 */,
   5 /* Color of ReduceAction84 */,
-  53 /* Group of ? */,
-  419 /* Id of ReduceAction85 */,
+  51 /* Group of ? */,
+  431 /* Id of ReduceAction85 */,
   5 /* Color of ReduceAction85 */,
-  53 /* Group of ? */,
-  415 /* Id of ReduceAction86 */,
+  51 /* Group of ? */,
+  427 /* Id of ReduceAction86 */,
   5 /* Color of ReduceAction86 */,
-  53 /* Group of ? */,
-  411 /* Id of ReduceAction87 */,
+  51 /* Group of ? */,
+  423 /* Id of ReduceAction87 */,
   5 /* Color of ReduceAction87 */,
-  53 /* Group of ? */,
-  407 /* Id of ReduceAction88 */,
+  51 /* Group of ? */,
+  419 /* Id of ReduceAction88 */,
   5 /* Color of ReduceAction88 */,
-  53 /* Group of ? */,
-  403 /* Id of ReduceAction89 */,
+  51 /* Group of ? */,
+  415 /* Id of ReduceAction89 */,
   5 /* Color of ReduceAction89 */,
-  53 /* Group of ? */,
-  395 /* Id of ReduceAction90 */,
+  51 /* Group of ? */,
+  407 /* Id of ReduceAction90 */,
   5 /* Color of ReduceAction90 */,
-  53 /* Group of ? */,
-  391 /* Id of ReduceAction91 */,
+  51 /* Group of ? */,
+  403 /* Id of ReduceAction91 */,
   5 /* Color of ReduceAction91 */,
-  53 /* Group of ? */,
-  387 /* Id of ReduceAction92 */,
+  51 /* Group of ? */,
+  399 /* Id of ReduceAction92 */,
   5 /* Color of ReduceAction92 */,
-  53 /* Group of ? */,
-  383 /* Id of ReduceAction93 */,
+  51 /* Group of ? */,
+  395 /* Id of ReduceAction93 */,
   5 /* Color of ReduceAction93 */,
-  53 /* Group of ? */,
-  379 /* Id of ReduceAction94 */,
+  51 /* Group of ? */,
+  391 /* Id of ReduceAction94 */,
   5 /* Color of ReduceAction94 */,
-  53 /* Group of ? */,
-  375 /* Id of ReduceAction95 */,
+  51 /* Group of ? */,
+  387 /* Id of ReduceAction95 */,
   5 /* Color of ReduceAction95 */,
-  53 /* Group of ? */,
-  371 /* Id of ReduceAction96 */,
+  51 /* Group of ? */,
+  383 /* Id of ReduceAction96 */,
   5 /* Color of ReduceAction96 */,
-  53 /* Group of ? */,
-  367 /* Id of ReduceAction97 */,
+  51 /* Group of ? */,
+  379 /* Id of ReduceAction97 */,
   5 /* Color of ReduceAction97 */,
-  53 /* Group of ? */,
-  363 /* Id of ReduceAction98 */,
+  51 /* Group of ? */,
+  375 /* Id of ReduceAction98 */,
   5 /* Color of ReduceAction98 */,
-  53 /* Group of ? */,
-  359 /* Id of ReduceAction99 */,
+  51 /* Group of ? */,
+  371 /* Id of ReduceAction99 */,
   5 /* Color of ReduceAction99 */,
-  53 /* Group of ? */,
-  2027 /* Id of ReduceAction100 */,
+  51 /* Group of ? */,
+  2039 /* Id of ReduceAction100 */,
   5 /* Color of ReduceAction100 */,
-  53 /* Group of ? */,
-  2023 /* Id of ReduceAction101 */,
+  51 /* Group of ? */,
+  2035 /* Id of ReduceAction101 */,
   5 /* Color of ReduceAction101 */,
-  53 /* Group of ? */,
-  2019 /* Id of ReduceAction102 */,
+  51 /* Group of ? */,
+  2031 /* Id of ReduceAction102 */,
   5 /* Color of ReduceAction102 */,
-  53 /* Group of ? */,
-  2015 /* Id of ReduceAction103 */,
+  51 /* Group of ? */,
+  2027 /* Id of ReduceAction103 */,
   5 /* Color of ReduceAction103 */,
-  53 /* Group of ? */,
-  2011 /* Id of ReduceAction104 */,
+  51 /* Group of ? */,
+  2023 /* Id of ReduceAction104 */,
   5 /* Color of ReduceAction104 */,
-  53 /* Group of ? */,
-  2007 /* Id of ReduceAction105 */,
+  51 /* Group of ? */,
+  2019 /* Id of ReduceAction105 */,
   5 /* Color of ReduceAction105 */,
-  53 /* Group of ? */,
-  2003 /* Id of ReduceAction106 */,
+  51 /* Group of ? */,
+  2015 /* Id of ReduceAction106 */,
   5 /* Color of ReduceAction106 */,
-  53 /* Group of ? */,
-  1999 /* Id of ReduceAction107 */,
+  51 /* Group of ? */,
+  2011 /* Id of ReduceAction107 */,
   5 /* Color of ReduceAction107 */,
-  53 /* Group of ? */,
-  1995 /* Id of ReduceAction108 */,
+  51 /* Group of ? */,
+  2007 /* Id of ReduceAction108 */,
   5 /* Color of ReduceAction108 */,
-  53 /* Group of ? */,
-  1991 /* Id of ReduceAction109 */,
+  51 /* Group of ? */,
+  2003 /* Id of ReduceAction109 */,
   5 /* Color of ReduceAction109 */,
-  53 /* Group of ? */,
-  1983 /* Id of ReduceAction110 */,
+  51 /* Group of ? */,
+  1995 /* Id of ReduceAction110 */,
   5 /* Color of ReduceAction110 */,
-  53 /* Group of ? */,
-  1979 /* Id of ReduceAction111 */,
+  51 /* Group of ? */,
+  1991 /* Id of ReduceAction111 */,
   5 /* Color of ReduceAction111 */,
-  53 /* Group of ? */,
-  1975 /* Id of ReduceAction112 */,
+  51 /* Group of ? */,
+  1987 /* Id of ReduceAction112 */,
   5 /* Color of ReduceAction112 */,
-  53 /* Group of ? */,
-  1971 /* Id of ReduceAction113 */,
+  51 /* Group of ? */,
+  1983 /* Id of ReduceAction113 */,
   5 /* Color of ReduceAction113 */,
-  53 /* Group of ? */,
-  1967 /* Id of ReduceAction114 */,
+  51 /* Group of ? */,
+  1979 /* Id of ReduceAction114 */,
   5 /* Color of ReduceAction114 */,
-  53 /* Group of ? */,
-  1963 /* Id of ReduceAction115 */,
+  51 /* Group of ? */,
+  1975 /* Id of ReduceAction115 */,
   5 /* Color of ReduceAction115 */,
-  53 /* Group of ? */,
-  1959 /* Id of ReduceAction116 */,
+  51 /* Group of ? */,
+  1971 /* Id of ReduceAction116 */,
   5 /* Color of ReduceAction116 */,
-  53 /* Group of ? */,
-  1955 /* Id of ReduceAction117 */,
+  51 /* Group of ? */,
+  1967 /* Id of ReduceAction117 */,
   5 /* Color of ReduceAction117 */,
-  53 /* Group of ? */,
-  1951 /* Id of ReduceAction118 */,
+  51 /* Group of ? */,
+  1963 /* Id of ReduceAction118 */,
   5 /* Color of ReduceAction118 */,
-  53 /* Group of ? */,
-  1947 /* Id of ReduceAction119 */,
+  51 /* Group of ? */,
+  1959 /* Id of ReduceAction119 */,
   5 /* Color of ReduceAction119 */,
-  53 /* Group of ? */,
-  1939 /* Id of ReduceAction120 */,
+  51 /* Group of ? */,
+  1951 /* Id of ReduceAction120 */,
   5 /* Color of ReduceAction120 */,
-  53 /* Group of ? */,
-  1935 /* Id of ReduceAction121 */,
+  51 /* Group of ? */,
+  1947 /* Id of ReduceAction121 */,
   5 /* Color of ReduceAction121 */,
-  53 /* Group of ? */,
-  1931 /* Id of ReduceAction122 */,
+  51 /* Group of ? */,
+  1943 /* Id of ReduceAction122 */,
   5 /* Color of ReduceAction122 */,
-  53 /* Group of ? */,
-  1927 /* Id of ReduceAction123 */,
+  51 /* Group of ? */,
+  1939 /* Id of ReduceAction123 */,
   5 /* Color of ReduceAction123 */,
-  53 /* Group of ? */,
-  1923 /* Id of ReduceAction124 */,
+  51 /* Group of ? */,
+  1935 /* Id of ReduceAction124 */,
   5 /* Color of ReduceAction124 */,
-  53 /* Group of ? */,
-  1919 /* Id of ReduceAction125 */,
+  51 /* Group of ? */,
+  1931 /* Id of ReduceAction125 */,
   5 /* Color of ReduceAction125 */,
-  53 /* Group of ? */,
-  1915 /* Id of ReduceAction126 */,
+  51 /* Group of ? */,
+  1927 /* Id of ReduceAction126 */,
   5 /* Color of ReduceAction126 */,
-  53 /* Group of ? */,
-  1911 /* Id of ReduceAction127 */,
+  51 /* Group of ? */,
+  1923 /* Id of ReduceAction127 */,
   5 /* Color of ReduceAction127 */,
-  53 /* Group of ? */,
-  1907 /* Id of ReduceAction128 */,
+  51 /* Group of ? */,
+  1919 /* Id of ReduceAction128 */,
   5 /* Color of ReduceAction128 */,
-  53 /* Group of ? */,
-  1903 /* Id of ReduceAction129 */,
+  51 /* Group of ? */,
+  1915 /* Id of ReduceAction129 */,
   5 /* Color of ReduceAction129 */,
-  53 /* Group of ? */,
-  1895 /* Id of ReduceAction130 */,
+  51 /* Group of ? */,
+  1907 /* Id of ReduceAction130 */,
   5 /* Color of ReduceAction130 */,
-  53 /* Group of ? */,
-  1891 /* Id of ReduceAction131 */,
+  51 /* Group of ? */,
+  1903 /* Id of ReduceAction131 */,
   5 /* Color of ReduceAction131 */,
-  53 /* Group of ? */,
-  1887 /* Id of ReduceAction132 */,
+  51 /* Group of ? */,
+  1899 /* Id of ReduceAction132 */,
   5 /* Color of ReduceAction132 */,
-  53 /* Group of ? */,
-  1883 /* Id of ReduceAction133 */,
+  51 /* Group of ? */,
+  1895 /* Id of ReduceAction133 */,
   5 /* Color of ReduceAction133 */,
-  53 /* Group of ? */,
-  1879 /* Id of ReduceAction134 */,
+  51 /* Group of ? */,
+  1891 /* Id of ReduceAction134 */,
   5 /* Color of ReduceAction134 */,
-  53 /* Group of ? */,
-  1875 /* Id of ReduceAction135 */,
+  51 /* Group of ? */,
+  1887 /* Id of ReduceAction135 */,
   5 /* Color of ReduceAction135 */,
-  53 /* Group of ? */,
-  1871 /* Id of ReduceAction136 */,
+  51 /* Group of ? */,
+  1883 /* Id of ReduceAction136 */,
   5 /* Color of ReduceAction136 */,
-  53 /* Group of ? */,
-  1867 /* Id of ReduceAction137 */,
+  51 /* Group of ? */,
+  1879 /* Id of ReduceAction137 */,
   5 /* Color of ReduceAction137 */,
-  53 /* Group of ? */,
-  1863 /* Id of ReduceAction138 */,
+  51 /* Group of ? */,
+  1875 /* Id of ReduceAction138 */,
   5 /* Color of ReduceAction138 */,
-  53 /* Group of ? */,
-  1859 /* Id of ReduceAction139 */,
+  51 /* Group of ? */,
+  1871 /* Id of ReduceAction139 */,
   5 /* Color of ReduceAction139 */,
-  53 /* Group of ? */,
-  1851 /* Id of ReduceAction140 */,
+  51 /* Group of ? */,
+  1863 /* Id of ReduceAction140 */,
   5 /* Color of ReduceAction140 */,
-  53 /* Group of ? */,
-  1847 /* Id of ReduceAction141 */,
+  51 /* Group of ? */,
+  1859 /* Id of ReduceAction141 */,
   5 /* Color of ReduceAction141 */,
-  53 /* Group of ? */,
-  1843 /* Id of ReduceAction142 */,
+  51 /* Group of ? */,
+  1855 /* Id of ReduceAction142 */,
   5 /* Color of ReduceAction142 */,
-  53 /* Group of ? */,
-  1839 /* Id of ReduceAction143 */,
+  51 /* Group of ? */,
+  1851 /* Id of ReduceAction143 */,
   5 /* Color of ReduceAction143 */,
-  53 /* Group of ? */,
-  1835 /* Id of ReduceAction144 */,
+  51 /* Group of ? */,
+  1847 /* Id of ReduceAction144 */,
   5 /* Color of ReduceAction144 */,
-  53 /* Group of ? */,
-  1831 /* Id of ReduceAction145 */,
+  51 /* Group of ? */,
+  1843 /* Id of ReduceAction145 */,
   5 /* Color of ReduceAction145 */,
-  53 /* Group of ? */,
-  1827 /* Id of ReduceAction146 */,
+  51 /* Group of ? */,
+  1839 /* Id of ReduceAction146 */,
   5 /* Color of ReduceAction146 */,
-  53 /* Group of ? */,
-  1823 /* Id of ReduceAction147 */,
+  51 /* Group of ? */,
+  1835 /* Id of ReduceAction147 */,
   5 /* Color of ReduceAction147 */,
-  53 /* Group of ? */,
-  1819 /* Id of ReduceAction148 */,
+  51 /* Group of ? */,
+  1831 /* Id of ReduceAction148 */,
   5 /* Color of ReduceAction148 */,
-  53 /* Group of ? */,
-  1815 /* Id of ReduceAction149 */,
+  51 /* Group of ? */,
+  1827 /* Id of ReduceAction149 */,
   5 /* Color of ReduceAction149 */,
-  53 /* Group of ? */,
-  1807 /* Id of ReduceAction150 */,
+  51 /* Group of ? */,
+  1819 /* Id of ReduceAction150 */,
   5 /* Color of ReduceAction150 */,
-  53 /* Group of ? */,
-  1803 /* Id of ReduceAction151 */,
+  51 /* Group of ? */,
+  1815 /* Id of ReduceAction151 */,
   5 /* Color of ReduceAction151 */,
-  53 /* Group of ? */,
-  1799 /* Id of ReduceAction152 */,
+  51 /* Group of ? */,
+  1811 /* Id of ReduceAction152 */,
   5 /* Color of ReduceAction152 */,
-  53 /* Group of ? */,
-  1795 /* Id of ReduceAction153 */,
+  51 /* Group of ? */,
+  1807 /* Id of ReduceAction153 */,
   5 /* Color of ReduceAction153 */,
-  53 /* Group of ? */,
-  1791 /* Id of ReduceAction154 */,
+  51 /* Group of ? */,
+  1803 /* Id of ReduceAction154 */,
   5 /* Color of ReduceAction154 */,
-  53 /* Group of ? */,
-  1787 /* Id of ReduceAction155 */,
+  51 /* Group of ? */,
+  1799 /* Id of ReduceAction155 */,
   5 /* Color of ReduceAction155 */,
-  53 /* Group of ? */,
-  1783 /* Id of ReduceAction156 */,
+  51 /* Group of ? */,
+  1795 /* Id of ReduceAction156 */,
   5 /* Color of ReduceAction156 */,
-  53 /* Group of ? */,
-  1779 /* Id of ReduceAction157 */,
+  51 /* Group of ? */,
+  1791 /* Id of ReduceAction157 */,
   5 /* Color of ReduceAction157 */,
-  53 /* Group of ? */,
-  1775 /* Id of ReduceAction158 */,
+  51 /* Group of ? */,
+  1787 /* Id of ReduceAction158 */,
   5 /* Color of ReduceAction158 */,
-  53 /* Group of ? */,
-  1771 /* Id of ReduceAction159 */,
+  51 /* Group of ? */,
+  1783 /* Id of ReduceAction159 */,
   5 /* Color of ReduceAction159 */,
-  53 /* Group of ? */,
-  1763 /* Id of ReduceAction160 */,
+  51 /* Group of ? */,
+  1775 /* Id of ReduceAction160 */,
   5 /* Color of ReduceAction160 */,
-  53 /* Group of ? */,
-  1759 /* Id of ReduceAction161 */,
+  51 /* Group of ? */,
+  1771 /* Id of ReduceAction161 */,
   5 /* Color of ReduceAction161 */,
-  53 /* Group of ? */,
-  1755 /* Id of ReduceAction162 */,
+  51 /* Group of ? */,
+  1767 /* Id of ReduceAction162 */,
   5 /* Color of ReduceAction162 */,
-  53 /* Group of ? */,
-  1751 /* Id of ReduceAction163 */,
+  51 /* Group of ? */,
+  1763 /* Id of ReduceAction163 */,
   5 /* Color of ReduceAction163 */,
-  53 /* Group of ? */,
-  1747 /* Id of ReduceAction164 */,
+  51 /* Group of ? */,
+  1759 /* Id of ReduceAction164 */,
   5 /* Color of ReduceAction164 */,
-  53 /* Group of ? */,
-  1743 /* Id of ReduceAction165 */,
+  51 /* Group of ? */,
+  1755 /* Id of ReduceAction165 */,
   5 /* Color of ReduceAction165 */,
-  53 /* Group of ? */,
-  1739 /* Id of ReduceAction166 */,
+  51 /* Group of ? */,
+  1751 /* Id of ReduceAction166 */,
   5 /* Color of ReduceAction166 */,
-  53 /* Group of ? */,
-  1735 /* Id of ReduceAction167 */,
+  51 /* Group of ? */,
+  1747 /* Id of ReduceAction167 */,
   5 /* Color of ReduceAction167 */,
-  53 /* Group of ? */,
-  1731 /* Id of ReduceAction168 */,
+  51 /* Group of ? */,
+  1743 /* Id of ReduceAction168 */,
   5 /* Color of ReduceAction168 */,
-  53 /* Group of ? */,
-  1727 /* Id of ReduceAction169 */,
+  51 /* Group of ? */,
+  1739 /* Id of ReduceAction169 */,
   5 /* Color of ReduceAction169 */,
-  53 /* Group of ? */,
-  1719 /* Id of ReduceAction170 */,
+  51 /* Group of ? */,
+  1731 /* Id of ReduceAction170 */,
   5 /* Color of ReduceAction170 */,
-  53 /* Group of ? */,
-  1715 /* Id of ReduceAction171 */,
+  51 /* Group of ? */,
+  1727 /* Id of ReduceAction171 */,
   5 /* Color of ReduceAction171 */,
-  53 /* Group of ? */,
-  1711 /* Id of ReduceAction172 */,
+  51 /* Group of ? */,
+  1723 /* Id of ReduceAction172 */,
   5 /* Color of ReduceAction172 */,
-  53 /* Group of ? */,
-  1707 /* Id of ReduceAction173 */,
+  51 /* Group of ? */,
+  1719 /* Id of ReduceAction173 */,
   5 /* Color of ReduceAction173 */,
-  53 /* Group of ? */,
-  1703 /* Id of ReduceAction174 */,
+  51 /* Group of ? */,
+  1715 /* Id of ReduceAction174 */,
   5 /* Color of ReduceAction174 */,
-  53 /* Group of ? */,
-  1699 /* Id of ReduceAction175 */,
+  51 /* Group of ? */,
+  1711 /* Id of ReduceAction175 */,
   5 /* Color of ReduceAction175 */,
-  53 /* Group of ? */,
-  1695 /* Id of ReduceAction176 */,
+  51 /* Group of ? */,
+  1707 /* Id of ReduceAction176 */,
   5 /* Color of ReduceAction176 */,
-  53 /* Group of ? */,
-  1691 /* Id of ReduceAction177 */,
+  51 /* Group of ? */,
+  1703 /* Id of ReduceAction177 */,
   5 /* Color of ReduceAction177 */,
-  53 /* Group of ? */,
-  1687 /* Id of ReduceAction178 */,
+  51 /* Group of ? */,
+  1699 /* Id of ReduceAction178 */,
   5 /* Color of ReduceAction178 */,
-  53 /* Group of ? */,
-  1683 /* Id of ReduceAction179 */,
+  51 /* Group of ? */,
+  1695 /* Id of ReduceAction179 */,
   5 /* Color of ReduceAction179 */,
-  53 /* Group of ? */,
-  1675 /* Id of ReduceAction180 */,
+  51 /* Group of ? */,
+  1687 /* Id of ReduceAction180 */,
   5 /* Color of ReduceAction180 */,
-  53 /* Group of ? */,
-  1671 /* Id of ReduceAction181 */,
+  51 /* Group of ? */,
+  1683 /* Id of ReduceAction181 */,
   5 /* Color of ReduceAction181 */,
-  53 /* Group of ? */,
-  1667 /* Id of ReduceAction182 */,
+  51 /* Group of ? */,
+  1679 /* Id of ReduceAction182 */,
   5 /* Color of ReduceAction182 */,
-  53 /* Group of ? */,
-  1663 /* Id of ReduceAction183 */,
+  51 /* Group of ? */,
+  1675 /* Id of ReduceAction183 */,
   5 /* Color of ReduceAction183 */,
-  53 /* Group of ? */,
-  1659 /* Id of ReduceAction184 */,
+  51 /* Group of ? */,
+  1671 /* Id of ReduceAction184 */,
   5 /* Color of ReduceAction184 */,
-  53 /* Group of ? */,
-  1655 /* Id of ReduceAction185 */,
+  51 /* Group of ? */,
+  1667 /* Id of ReduceAction185 */,
   5 /* Color of ReduceAction185 */,
-  53 /* Group of ? */,
-  1651 /* Id of ReduceAction186 */,
+  51 /* Group of ? */,
+  1663 /* Id of ReduceAction186 */,
   5 /* Color of ReduceAction186 */,
-  53 /* Group of ? */,
-  1647 /* Id of ReduceAction187 */,
+  51 /* Group of ? */,
+  1659 /* Id of ReduceAction187 */,
   5 /* Color of ReduceAction187 */,
-  53 /* Group of ? */,
-  1643 /* Id of ReduceAction188 */,
+  51 /* Group of ? */,
+  1655 /* Id of ReduceAction188 */,
   5 /* Color of ReduceAction188 */,
-  53 /* Group of ? */,
-  1639 /* Id of ReduceAction189 */,
+  51 /* Group of ? */,
+  1651 /* Id of ReduceAction189 */,
   5 /* Color of ReduceAction189 */,
-  53 /* Group of ? */,
-  1631 /* Id of ReduceAction190 */,
+  51 /* Group of ? */,
+  1643 /* Id of ReduceAction190 */,
   5 /* Color of ReduceAction190 */,
-  53 /* Group of ? */,
-  1627 /* Id of ReduceAction191 */,
+  51 /* Group of ? */,
+  1639 /* Id of ReduceAction191 */,
   5 /* Color of ReduceAction191 */,
-  53 /* Group of ? */,
-  1623 /* Id of ReduceAction192 */,
+  51 /* Group of ? */,
+  1635 /* Id of ReduceAction192 */,
   5 /* Color of ReduceAction192 */,
-  53 /* Group of ? */,
-  1619 /* Id of ReduceAction193 */,
+  51 /* Group of ? */,
+  1631 /* Id of ReduceAction193 */,
   5 /* Color of ReduceAction193 */,
-  53 /* Group of ? */,
-  1615 /* Id of ReduceAction194 */,
+  51 /* Group of ? */,
+  1627 /* Id of ReduceAction194 */,
   5 /* Color of ReduceAction194 */,
-  53 /* Group of ? */,
-  1611 /* Id of ReduceAction195 */,
+  51 /* Group of ? */,
+  1623 /* Id of ReduceAction195 */,
   5 /* Color of ReduceAction195 */,
-  53 /* Group of ? */,
-  1607 /* Id of ReduceAction196 */,
+  51 /* Group of ? */,
+  1619 /* Id of ReduceAction196 */,
   5 /* Color of ReduceAction196 */,
-  53 /* Group of ? */,
-  1603 /* Id of ReduceAction197 */,
+  51 /* Group of ? */,
+  1615 /* Id of ReduceAction197 */,
   5 /* Color of ReduceAction197 */,
-  53 /* Group of ? */,
-  1599 /* Id of ReduceAction198 */,
+  51 /* Group of ? */,
+  1611 /* Id of ReduceAction198 */,
   5 /* Color of ReduceAction198 */,
-  53 /* Group of ? */,
-  1595 /* Id of ReduceAction199 */,
+  51 /* Group of ? */,
+  1607 /* Id of ReduceAction199 */,
   5 /* Color of ReduceAction199 */,
-  53 /* Group of ? */,
-  1583 /* Id of ReduceAction200 */,
+  51 /* Group of ? */,
+  1595 /* Id of ReduceAction200 */,
   5 /* Color of ReduceAction200 */,
-  53 /* Group of ? */,
-  1579 /* Id of ReduceAction201 */,
+  51 /* Group of ? */,
+  1591 /* Id of ReduceAction201 */,
   5 /* Color of ReduceAction201 */,
-  53 /* Group of ? */,
-  1575 /* Id of ReduceAction202 */,
+  51 /* Group of ? */,
+  1587 /* Id of ReduceAction202 */,
   5 /* Color of ReduceAction202 */,
-  53 /* Group of ? */,
-  1571 /* Id of ReduceAction203 */,
+  51 /* Group of ? */,
+  1583 /* Id of ReduceAction203 */,
   5 /* Color of ReduceAction203 */,
-  53 /* Group of ? */,
-  1567 /* Id of ReduceAction204 */,
+  51 /* Group of ? */,
+  1579 /* Id of ReduceAction204 */,
   5 /* Color of ReduceAction204 */,
-  53 /* Group of ? */,
-  1563 /* Id of ReduceAction205 */,
+  51 /* Group of ? */,
+  1575 /* Id of ReduceAction205 */,
   5 /* Color of ReduceAction205 */,
-  53 /* Group of ? */,
-  1559 /* Id of ReduceAction206 */,
+  51 /* Group of ? */,
+  1571 /* Id of ReduceAction206 */,
   5 /* Color of ReduceAction206 */,
-  53 /* Group of ? */,
-  1555 /* Id of ReduceAction207 */,
+  51 /* Group of ? */,
+  1567 /* Id of ReduceAction207 */,
   5 /* Color of ReduceAction207 */,
-  53 /* Group of ? */,
-  1551 /* Id of ReduceAction208 */,
+  51 /* Group of ? */,
+  1563 /* Id of ReduceAction208 */,
   5 /* Color of ReduceAction208 */,
-  53 /* Group of ? */,
-  1547 /* Id of ReduceAction209 */,
+  51 /* Group of ? */,
+  1559 /* Id of ReduceAction209 */,
   5 /* Color of ReduceAction209 */,
-  53 /* Group of ? */,
-  1539 /* Id of ReduceAction210 */,
+  51 /* Group of ? */,
+  1551 /* Id of ReduceAction210 */,
   5 /* Color of ReduceAction210 */,
-  53 /* Group of ? */,
-  1535 /* Id of ReduceAction211 */,
+  51 /* Group of ? */,
+  1547 /* Id of ReduceAction211 */,
   5 /* Color of ReduceAction211 */,
-  53 /* Group of ? */,
-  1531 /* Id of ReduceAction212 */,
+  51 /* Group of ? */,
+  1543 /* Id of ReduceAction212 */,
   5 /* Color of ReduceAction212 */,
-  53 /* Group of ? */,
-  1527 /* Id of ReduceAction213 */,
+  51 /* Group of ? */,
+  1539 /* Id of ReduceAction213 */,
   5 /* Color of ReduceAction213 */,
-  53 /* Group of ? */,
-  1523 /* Id of ReduceAction214 */,
+  51 /* Group of ? */,
+  1535 /* Id of ReduceAction214 */,
   5 /* Color of ReduceAction214 */,
-  53 /* Group of ? */,
-  1519 /* Id of ReduceAction215 */,
+  51 /* Group of ? */,
+  1531 /* Id of ReduceAction215 */,
   5 /* Color of ReduceAction215 */,
-  53 /* Group of ? */,
-  1515 /* Id of ReduceAction216 */,
+  51 /* Group of ? */,
+  1527 /* Id of ReduceAction216 */,
   5 /* Color of ReduceAction216 */,
-  53 /* Group of ? */,
-  1511 /* Id of ReduceAction217 */,
+  51 /* Group of ? */,
+  1523 /* Id of ReduceAction217 */,
   5 /* Color of ReduceAction217 */,
-  53 /* Group of ? */,
-  1507 /* Id of ReduceAction218 */,
+  51 /* Group of ? */,
+  1519 /* Id of ReduceAction218 */,
   5 /* Color of ReduceAction218 */,
-  53 /* Group of ? */,
-  1499 /* Id of ReduceAction220 */,
+  51 /* Group of ? */,
+  1511 /* Id of ReduceAction220 */,
   5 /* Color of ReduceAction220 */,
-  53 /* Group of ? */,
-  1495 /* Id of ReduceAction221 */,
+  51 /* Group of ? */,
+  1507 /* Id of ReduceAction221 */,
   5 /* Color of ReduceAction221 */,
-  53 /* Group of ? */,
-  1491 /* Id of ReduceAction222 */,
+  51 /* Group of ? */,
+  1503 /* Id of ReduceAction222 */,
   5 /* Color of ReduceAction222 */,
-  53 /* Group of ? */,
-  1487 /* Id of ReduceAction223 */,
+  51 /* Group of ? */,
+  1499 /* Id of ReduceAction223 */,
   5 /* Color of ReduceAction223 */,
-  53 /* Group of ? */,
-  1483 /* Id of ReduceAction224 */,
+  51 /* Group of ? */,
+  1495 /* Id of ReduceAction224 */,
   5 /* Color of ReduceAction224 */,
-  53 /* Group of ? */,
-  1479 /* Id of ReduceAction225 */,
+  51 /* Group of ? */,
+  1491 /* Id of ReduceAction225 */,
   5 /* Color of ReduceAction225 */,
-  53 /* Group of ? */,
-  1475 /* Id of ReduceAction226 */,
+  51 /* Group of ? */,
+  1487 /* Id of ReduceAction226 */,
   5 /* Color of ReduceAction226 */,
-  53 /* Group of ? */,
-  1471 /* Id of ReduceAction227 */,
+  51 /* Group of ? */,
+  1483 /* Id of ReduceAction227 */,
   5 /* Color of ReduceAction227 */,
-  53 /* Group of ? */,
-  1467 /* Id of ReduceAction228 */,
+  51 /* Group of ? */,
+  1479 /* Id of ReduceAction228 */,
   5 /* Color of ReduceAction228 */,
-  53 /* Group of ? */,
-  1463 /* Id of ReduceAction229 */,
+  51 /* Group of ? */,
+  1475 /* Id of ReduceAction229 */,
   5 /* Color of ReduceAction229 */,
-  53 /* Group of ? */,
-  1455 /* Id of ReduceAction230 */,
+  51 /* Group of ? */,
+  1467 /* Id of ReduceAction230 */,
   5 /* Color of ReduceAction230 */,
-  53 /* Group of ? */,
-  1451 /* Id of ReduceAction231 */,
+  51 /* Group of ? */,
+  1463 /* Id of ReduceAction231 */,
   5 /* Color of ReduceAction231 */,
-  53 /* Group of ? */,
-  1447 /* Id of ReduceAction232 */,
+  51 /* Group of ? */,
+  1459 /* Id of ReduceAction232 */,
   5 /* Color of ReduceAction232 */,
-  53 /* Group of ? */,
-  1443 /* Id of ReduceAction233 */,
+  51 /* Group of ? */,
+  1455 /* Id of ReduceAction233 */,
   5 /* Color of ReduceAction233 */,
-  53 /* Group of ? */,
-  1439 /* Id of ReduceAction235 */,
+  51 /* Group of ? */,
+  1451 /* Id of ReduceAction235 */,
   5 /* Color of ReduceAction235 */,
-  53 /* Group of ? */,
-  1435 /* Id of ReduceAction236 */,
+  51 /* Group of ? */,
+  1447 /* Id of ReduceAction236 */,
   5 /* Color of ReduceAction236 */,
-  53 /* Group of ? */,
-  1431 /* Id of ReduceAction237 */,
+  51 /* Group of ? */,
+  1443 /* Id of ReduceAction237 */,
   5 /* Color of ReduceAction237 */,
-  53 /* Group of ? */,
-  1427 /* Id of ReduceAction238 */,
+  51 /* Group of ? */,
+  1439 /* Id of ReduceAction238 */,
   5 /* Color of ReduceAction238 */,
-  53 /* Group of ? */,
-  1423 /* Id of ReduceAction239 */,
+  51 /* Group of ? */,
+  1435 /* Id of ReduceAction239 */,
   5 /* Color of ReduceAction239 */,
-  53 /* Group of ? */,
-  1415 /* Id of ReduceAction240 */,
+  51 /* Group of ? */,
+  1427 /* Id of ReduceAction240 */,
   5 /* Color of ReduceAction240 */,
-  53 /* Group of ? */,
-  1411 /* Id of ReduceAction241 */,
+  51 /* Group of ? */,
+  1423 /* Id of ReduceAction241 */,
   5 /* Color of ReduceAction241 */,
-  53 /* Group of ? */,
-  1407 /* Id of ReduceAction242 */,
+  51 /* Group of ? */,
+  1419 /* Id of ReduceAction242 */,
   5 /* Color of ReduceAction242 */,
-  53 /* Group of ? */,
-  1403 /* Id of ReduceAction243 */,
+  51 /* Group of ? */,
+  1415 /* Id of ReduceAction243 */,
   5 /* Color of ReduceAction243 */,
-  53 /* Group of ? */,
-  1399 /* Id of ReduceAction246 */,
+  51 /* Group of ? */,
+  1411 /* Id of ReduceAction246 */,
   5 /* Color of ReduceAction246 */,
-  53 /* Group of ? */,
-  1395 /* Id of ReduceAction247 */,
+  51 /* Group of ? */,
+  1407 /* Id of ReduceAction247 */,
   5 /* Color of ReduceAction247 */,
-  53 /* Group of ? */,
-  1391 /* Id of ReduceAction248 */,
+  51 /* Group of ? */,
+  1403 /* Id of ReduceAction248 */,
   5 /* Color of ReduceAction248 */,
-  53 /* Group of ? */,
-  1387 /* Id of ReduceAction249 */,
+  51 /* Group of ? */,
+  1399 /* Id of ReduceAction249 */,
   5 /* Color of ReduceAction249 */,
-  53 /* Group of ? */,
-  1379 /* Id of ReduceAction250 */,
+  51 /* Group of ? */,
+  1391 /* Id of ReduceAction250 */,
   5 /* Color of ReduceAction250 */,
-  53 /* Group of ? */,
-  1375 /* Id of ReduceAction251 */,
+  51 /* Group of ? */,
+  1387 /* Id of ReduceAction251 */,
   5 /* Color of ReduceAction251 */,
-  53 /* Group of ? */,
-  1371 /* Id of ReduceAction252 */,
+  51 /* Group of ? */,
+  1383 /* Id of ReduceAction252 */,
   5 /* Color of ReduceAction252 */,
-  53 /* Group of ? */,
-  1367 /* Id of ReduceAction253 */,
+  51 /* Group of ? */,
+  1379 /* Id of ReduceAction253 */,
   5 /* Color of ReduceAction253 */,
-  53 /* Group of ? */,
-  1363 /* Id of ReduceAction254 */,
+  51 /* Group of ? */,
+  1375 /* Id of ReduceAction254 */,
   5 /* Color of ReduceAction254 */,
-  53 /* Group of ? */,
-  1359 /* Id of ReduceAction255 */,
+  51 /* Group of ? */,
+  1371 /* Id of ReduceAction255 */,
   5 /* Color of ReduceAction255 */,
-  53 /* Group of ? */,
-  1355 /* Id of ReduceAction256 */,
+  51 /* Group of ? */,
+  1367 /* Id of ReduceAction256 */,
   5 /* Color of ReduceAction256 */,
-  53 /* Group of ? */,
-  1347 /* Id of ReduceAction263 */,
+  51 /* Group of ? */,
+  1359 /* Id of ReduceAction263 */,
   5 /* Color of ReduceAction263 */,
-  53 /* Group of ? */,
-  1343 /* Id of ReduceAction264 */,
+  51 /* Group of ? */,
+  1355 /* Id of ReduceAction264 */,
   5 /* Color of ReduceAction264 */,
-  53 /* Group of ? */,
-  1339 /* Id of ReduceAction265 */,
+  51 /* Group of ? */,
+  1351 /* Id of ReduceAction265 */,
   5 /* Color of ReduceAction265 */,
-  53 /* Group of ? */,
-  1335 /* Id of ReduceAction266 */,
+  51 /* Group of ? */,
+  1347 /* Id of ReduceAction266 */,
   5 /* Color of ReduceAction266 */,
-  53 /* Group of ? */,
-  1331 /* Id of ReduceAction267 */,
+  51 /* Group of ? */,
+  1343 /* Id of ReduceAction267 */,
   5 /* Color of ReduceAction267 */,
-  53 /* Group of ? */,
-  1327 /* Id of ReduceAction268 */,
+  51 /* Group of ? */,
+  1339 /* Id of ReduceAction268 */,
   5 /* Color of ReduceAction268 */,
-  53 /* Group of ? */,
-  1323 /* Id of ReduceAction269 */,
+  51 /* Group of ? */,
+  1335 /* Id of ReduceAction269 */,
   5 /* Color of ReduceAction269 */,
-  53 /* Group of ? */,
-  1315 /* Id of ReduceAction270 */,
+  51 /* Group of ? */,
+  1327 /* Id of ReduceAction270 */,
   5 /* Color of ReduceAction270 */,
-  53 /* Group of ? */,
-  1311 /* Id of ReduceAction271 */,
+  51 /* Group of ? */,
+  1323 /* Id of ReduceAction271 */,
   5 /* Color of ReduceAction271 */,
-  53 /* Group of ? */,
-  1307 /* Id of ReduceAction272 */,
+  51 /* Group of ? */,
+  1319 /* Id of ReduceAction272 */,
   5 /* Color of ReduceAction272 */,
-  53 /* Group of ? */,
-  1303 /* Id of ReduceAction273 */,
+  51 /* Group of ? */,
+  1315 /* Id of ReduceAction273 */,
   5 /* Color of ReduceAction273 */,
-  53 /* Group of ? */,
-  1299 /* Id of ReduceAction274 */,
+  51 /* Group of ? */,
+  1311 /* Id of ReduceAction274 */,
   5 /* Color of ReduceAction274 */,
-  53 /* Group of ? */,
-  1295 /* Id of ReduceAction275 */,
+  51 /* Group of ? */,
+  1307 /* Id of ReduceAction275 */,
   5 /* Color of ReduceAction275 */,
-  53 /* Group of ? */,
-  1291 /* Id of ReduceAction276 */,
+  51 /* Group of ? */,
+  1303 /* Id of ReduceAction276 */,
   5 /* Color of ReduceAction276 */,
-  53 /* Group of ? */,
-  1287 /* Id of ReduceAction277 */,
+  51 /* Group of ? */,
+  1299 /* Id of ReduceAction277 */,
   5 /* Color of ReduceAction277 */,
-  53 /* Group of ? */,
-  1283 /* Id of ReduceAction278 */,
+  51 /* Group of ? */,
+  1295 /* Id of ReduceAction278 */,
   5 /* Color of ReduceAction278 */,
-  53 /* Group of ? */,
-  1279 /* Id of ReduceAction279 */,
+  51 /* Group of ? */,
+  1291 /* Id of ReduceAction279 */,
   5 /* Color of ReduceAction279 */,
-  53 /* Group of ? */,
-  1271 /* Id of ReduceAction280 */,
+  51 /* Group of ? */,
+  1283 /* Id of ReduceAction280 */,
   5 /* Color of ReduceAction280 */,
-  53 /* Group of ? */,
-  1267 /* Id of ReduceAction281 */,
+  51 /* Group of ? */,
+  1279 /* Id of ReduceAction281 */,
   5 /* Color of ReduceAction281 */,
-  53 /* Group of ? */,
-  1263 /* Id of ReduceAction282 */,
+  51 /* Group of ? */,
+  1275 /* Id of ReduceAction282 */,
   5 /* Color of ReduceAction282 */,
-  53 /* Group of ? */,
-  1259 /* Id of ReduceAction283 */,
+  51 /* Group of ? */,
+  1271 /* Id of ReduceAction283 */,
   5 /* Color of ReduceAction283 */,
-  53 /* Group of ? */,
-  1255 /* Id of ReduceAction284 */,
+  51 /* Group of ? */,
+  1267 /* Id of ReduceAction284 */,
   5 /* Color of ReduceAction284 */,
-  53 /* Group of ? */,
-  1251 /* Id of ReduceAction285 */,
+  51 /* Group of ? */,
+  1263 /* Id of ReduceAction285 */,
   5 /* Color of ReduceAction285 */,
-  53 /* Group of ? */,
-  1247 /* Id of ReduceAction286 */,
+  51 /* Group of ? */,
+  1259 /* Id of ReduceAction286 */,
   5 /* Color of ReduceAction286 */,
-  53 /* Group of ? */,
-  1243 /* Id of ReduceAction287 */,
+  51 /* Group of ? */,
+  1255 /* Id of ReduceAction287 */,
   5 /* Color of ReduceAction287 */,
-  53 /* Group of ? */,
-  1239 /* Id of ReduceAction288 */,
+  51 /* Group of ? */,
+  1251 /* Id of ReduceAction288 */,
   5 /* Color of ReduceAction288 */,
-  53 /* Group of ? */,
-  1235 /* Id of ReduceAction289 */,
+  51 /* Group of ? */,
+  1247 /* Id of ReduceAction289 */,
   5 /* Color of ReduceAction289 */,
-  53 /* Group of ? */,
-  1227 /* Id of ReduceAction290 */,
+  51 /* Group of ? */,
+  1239 /* Id of ReduceAction290 */,
   5 /* Color of ReduceAction290 */,
-  53 /* Group of ? */,
-  1223 /* Id of ReduceAction291 */,
+  51 /* Group of ? */,
+  1235 /* Id of ReduceAction291 */,
   5 /* Color of ReduceAction291 */,
-  53 /* Group of ? */,
-  1219 /* Id of ReduceAction292 */,
+  51 /* Group of ? */,
+  1231 /* Id of ReduceAction292 */,
   5 /* Color of ReduceAction292 */,
-  53 /* Group of ? */,
-  1215 /* Id of ReduceAction293 */,
+  51 /* Group of ? */,
+  1227 /* Id of ReduceAction293 */,
   5 /* Color of ReduceAction293 */,
-  53 /* Group of ? */,
-  1211 /* Id of ReduceAction294 */,
+  51 /* Group of ? */,
+  1223 /* Id of ReduceAction294 */,
   5 /* Color of ReduceAction294 */,
-  53 /* Group of ? */,
-  1207 /* Id of ReduceAction295 */,
+  51 /* Group of ? */,
+  1219 /* Id of ReduceAction295 */,
   5 /* Color of ReduceAction295 */,
-  53 /* Group of ? */,
-  1203 /* Id of ReduceAction296 */,
+  51 /* Group of ? */,
+  1215 /* Id of ReduceAction296 */,
   5 /* Color of ReduceAction296 */,
-  53 /* Group of ? */,
-  1199 /* Id of ReduceAction297 */,
+  51 /* Group of ? */,
+  1211 /* Id of ReduceAction297 */,
   5 /* Color of ReduceAction297 */,
-  53 /* Group of ? */,
-  1195 /* Id of ReduceAction298 */,
+  51 /* Group of ? */,
+  1207 /* Id of ReduceAction298 */,
   5 /* Color of ReduceAction298 */,
-  53 /* Group of ? */,
-  1191 /* Id of ReduceAction299 */,
+  51 /* Group of ? */,
+  1203 /* Id of ReduceAction299 */,
   5 /* Color of ReduceAction299 */,
-  53 /* Group of ? */,
-  1179 /* Id of ReduceAction300 */,
+  51 /* Group of ? */,
+  1191 /* Id of ReduceAction300 */,
   5 /* Color of ReduceAction300 */,
-  53 /* Group of ? */,
-  1175 /* Id of ReduceAction301 */,
+  51 /* Group of ? */,
+  1187 /* Id of ReduceAction301 */,
   5 /* Color of ReduceAction301 */,
-  53 /* Group of ? */,
-  1171 /* Id of ReduceAction302 */,
+  51 /* Group of ? */,
+  1183 /* Id of ReduceAction302 */,
   5 /* Color of ReduceAction302 */,
-  53 /* Group of ? */,
-  1167 /* Id of ReduceAction303 */,
+  51 /* Group of ? */,
+  1179 /* Id of ReduceAction303 */,
   5 /* Color of ReduceAction303 */,
-  53 /* Group of ? */,
-  1163 /* Id of ReduceAction304 */,
+  51 /* Group of ? */,
+  1175 /* Id of ReduceAction304 */,
   5 /* Color of ReduceAction304 */,
-  53 /* Group of ? */,
-  1159 /* Id of ReduceAction305 */,
+  51 /* Group of ? */,
+  1171 /* Id of ReduceAction305 */,
   5 /* Color of ReduceAction305 */,
-  53 /* Group of ? */,
-  1155 /* Id of ReduceAction306 */,
+  51 /* Group of ? */,
+  1167 /* Id of ReduceAction306 */,
   5 /* Color of ReduceAction306 */,
-  53 /* Group of ? */,
-  1151 /* Id of ReduceAction307 */,
+  51 /* Group of ? */,
+  1163 /* Id of ReduceAction307 */,
   5 /* Color of ReduceAction307 */,
-  53 /* Group of ? */,
-  1147 /* Id of ReduceAction308 */,
+  51 /* Group of ? */,
+  1159 /* Id of ReduceAction308 */,
   5 /* Color of ReduceAction308 */,
-  53 /* Group of ? */,
-  1143 /* Id of ReduceAction309 */,
+  51 /* Group of ? */,
+  1155 /* Id of ReduceAction309 */,
   5 /* Color of ReduceAction309 */,
-  53 /* Group of ? */,
-  1135 /* Id of ReduceAction310 */,
+  51 /* Group of ? */,
+  1147 /* Id of ReduceAction310 */,
   5 /* Color of ReduceAction310 */,
-  53 /* Group of ? */,
-  1131 /* Id of ReduceAction311 */,
+  51 /* Group of ? */,
+  1143 /* Id of ReduceAction311 */,
   5 /* Color of ReduceAction311 */,
-  53 /* Group of ? */,
-  1127 /* Id of ReduceAction312 */,
+  51 /* Group of ? */,
+  1139 /* Id of ReduceAction312 */,
   5 /* Color of ReduceAction312 */,
-  53 /* Group of ? */,
-  1123 /* Id of ReduceAction313 */,
+  51 /* Group of ? */,
+  1135 /* Id of ReduceAction313 */,
   5 /* Color of ReduceAction313 */,
-  53 /* Group of ? */,
-  1119 /* Id of ReduceAction314 */,
+  51 /* Group of ? */,
+  1131 /* Id of ReduceAction314 */,
   5 /* Color of ReduceAction314 */,
-  53 /* Group of ? */,
-  1115 /* Id of ReduceAction317 */,
+  51 /* Group of ? */,
+  1127 /* Id of ReduceAction317 */,
   5 /* Color of ReduceAction317 */,
-  53 /* Group of ? */,
-  1111 /* Id of ReduceAction318 */,
+  51 /* Group of ? */,
+  1123 /* Id of ReduceAction318 */,
   5 /* Color of ReduceAction318 */,
-  53 /* Group of ? */,
-  1107 /* Id of ReduceAction319 */,
+  51 /* Group of ? */,
+  1119 /* Id of ReduceAction319 */,
   5 /* Color of ReduceAction319 */,
-  53 /* Group of ? */,
-  1099 /* Id of ReduceAction320 */,
+  51 /* Group of ? */,
+  1111 /* Id of ReduceAction320 */,
   5 /* Color of ReduceAction320 */,
-  53 /* Group of ? */,
-  1095 /* Id of ReduceAction321 */,
+  51 /* Group of ? */,
+  1107 /* Id of ReduceAction321 */,
   5 /* Color of ReduceAction321 */,
-  53 /* Group of ? */,
-  1091 /* Id of ReduceAction322 */,
+  51 /* Group of ? */,
+  1103 /* Id of ReduceAction322 */,
   5 /* Color of ReduceAction322 */,
-  53 /* Group of ? */,
-  1087 /* Id of ReduceAction323 */,
+  51 /* Group of ? */,
+  1099 /* Id of ReduceAction323 */,
   5 /* Color of ReduceAction323 */,
-  53 /* Group of ? */,
-  1083 /* Id of ReduceAction324 */,
+  51 /* Group of ? */,
+  1095 /* Id of ReduceAction324 */,
   5 /* Color of ReduceAction324 */,
-  53 /* Group of ? */,
-  1079 /* Id of ReduceAction325 */,
+  51 /* Group of ? */,
+  1091 /* Id of ReduceAction325 */,
   5 /* Color of ReduceAction325 */,
-  53 /* Group of ? */,
-  1075 /* Id of ReduceAction326 */,
+  51 /* Group of ? */,
+  1087 /* Id of ReduceAction326 */,
   5 /* Color of ReduceAction326 */,
-  53 /* Group of ? */,
-  1071 /* Id of ReduceAction327 */,
+  51 /* Group of ? */,
+  1083 /* Id of ReduceAction327 */,
   5 /* Color of ReduceAction327 */,
-  53 /* Group of ? */,
-  1067 /* Id of ReduceAction328 */,
+  51 /* Group of ? */,
+  1079 /* Id of ReduceAction328 */,
   5 /* Color of ReduceAction328 */,
-  53 /* Group of ? */,
-  1063 /* Id of ReduceAction329 */,
+  51 /* Group of ? */,
+  1075 /* Id of ReduceAction329 */,
   5 /* Color of ReduceAction329 */,
-  53 /* Group of ? */,
-  1055 /* Id of ReduceAction333 */,
+  51 /* Group of ? */,
+  1067 /* Id of ReduceAction333 */,
   5 /* Color of ReduceAction333 */,
-  53 /* Group of ? */,
-  1051 /* Id of ReduceAction335 */,
+  51 /* Group of ? */,
+  1063 /* Id of ReduceAction335 */,
   5 /* Color of ReduceAction335 */,
-  53 /* Group of ? */,
-  1047 /* Id of ReduceAction337 */,
+  51 /* Group of ? */,
+  1059 /* Id of ReduceAction337 */,
   5 /* Color of ReduceAction337 */,
-  53 /* Group of ? */,
-  1043 /* Id of ReduceAction338 */,
+  51 /* Group of ? */,
+  1055 /* Id of ReduceAction338 */,
   5 /* Color of ReduceAction338 */,
-  53 /* Group of ? */,
-  1039 /* Id of ReduceAction339 */,
+  51 /* Group of ? */,
+  1051 /* Id of ReduceAction339 */,
   5 /* Color of ReduceAction339 */,
-  53 /* Group of ? */,
-  1031 /* Id of ReduceAction341 */,
+  51 /* Group of ? */,
+  1043 /* Id of ReduceAction341 */,
   5 /* Color of ReduceAction341 */,
-  53 /* Group of ? */,
-  1027 /* Id of ReduceAction343 */,
+  51 /* Group of ? */,
+  1039 /* Id of ReduceAction343 */,
   5 /* Color of ReduceAction343 */,
-  53 /* Group of ? */,
-  1023 /* Id of ReduceAction344 */,
+  51 /* Group of ? */,
+  1035 /* Id of ReduceAction344 */,
   5 /* Color of ReduceAction344 */,
-  53 /* Group of ? */,
-  1019 /* Id of ReduceAction345 */,
+  51 /* Group of ? */,
+  1031 /* Id of ReduceAction345 */,
   5 /* Color of ReduceAction345 */,
-  53 /* Group of ? */,
-  1015 /* Id of ReduceAction346 */,
+  51 /* Group of ? */,
+  1027 /* Id of ReduceAction346 */,
   5 /* Color of ReduceAction346 */,
-  53 /* Group of ? */,
-  1011 /* Id of ReduceAction347 */,
+  51 /* Group of ? */,
+  1023 /* Id of ReduceAction347 */,
   5 /* Color of ReduceAction347 */,
-  53 /* Group of ? */,
-  1007 /* Id of ReduceAction348 */,
+  51 /* Group of ? */,
+  1019 /* Id of ReduceAction348 */,
   5 /* Color of ReduceAction348 */,
-  53 /* Group of ? */,
-  1003 /* Id of ReduceAction349 */,
+  51 /* Group of ? */,
+  1015 /* Id of ReduceAction349 */,
   5 /* Color of ReduceAction349 */,
-  53 /* Group of ? */,
-  995 /* Id of ReduceAction350 */,
+  51 /* Group of ? */,
+  1007 /* Id of ReduceAction350 */,
   5 /* Color of ReduceAction350 */,
-  53 /* Group of ? */,
-  991 /* Id of ReduceAction351 */,
+  51 /* Group of ? */,
+  1003 /* Id of ReduceAction351 */,
   5 /* Color of ReduceAction351 */,
-  53 /* Group of ? */,
-  987 /* Id of ReduceAction352 */,
+  51 /* Group of ? */,
+  999 /* Id of ReduceAction352 */,
   5 /* Color of ReduceAction352 */,
-  53 /* Group of ? */,
-  983 /* Id of ReduceAction353 */,
+  51 /* Group of ? */,
+  995 /* Id of ReduceAction353 */,
   5 /* Color of ReduceAction353 */,
-  53 /* Group of ? */,
-  979 /* Id of ReduceAction355 */,
+  51 /* Group of ? */,
+  991 /* Id of ReduceAction355 */,
   5 /* Color of ReduceAction355 */,
-  53 /* Group of ? */,
-  975 /* Id of ReduceAction356 */,
+  51 /* Group of ? */,
+  987 /* Id of ReduceAction356 */,
   5 /* Color of ReduceAction356 */,
-  53 /* Group of ? */,
-  971 /* Id of ReduceAction358 */,
+  51 /* Group of ? */,
+  983 /* Id of ReduceAction358 */,
   5 /* Color of ReduceAction358 */,
-  53 /* Group of ? */,
-  967 /* Id of ReduceAction359 */,
+  51 /* Group of ? */,
+  979 /* Id of ReduceAction359 */,
   5 /* Color of ReduceAction359 */,
-  53 /* Group of ? */,
-  959 /* Id of ReduceAction360 */,
+  51 /* Group of ? */,
+  971 /* Id of ReduceAction360 */,
   5 /* Color of ReduceAction360 */,
-  53 /* Group of ? */,
-  955 /* Id of ReduceAction362 */,
+  51 /* Group of ? */,
+  967 /* Id of ReduceAction362 */,
   5 /* Color of ReduceAction362 */,
-  53 /* Group of ? */,
-  951 /* Id of ReduceAction363 */,
+  51 /* Group of ? */,
+  963 /* Id of ReduceAction363 */,
   5 /* Color of ReduceAction363 */,
-  53 /* Group of ? */,
-  947 /* Id of ReduceAction365 */,
+  51 /* Group of ? */,
+  959 /* Id of ReduceAction365 */,
   5 /* Color of ReduceAction365 */,
-  53 /* Group of ? */,
-  943 /* Id of ReduceAction366 */,
+  51 /* Group of ? */,
+  955 /* Id of ReduceAction366 */,
   5 /* Color of ReduceAction366 */,
-  53 /* Group of ? */,
-  939 /* Id of ReduceAction367 */,
+  51 /* Group of ? */,
+  951 /* Id of ReduceAction367 */,
   5 /* Color of ReduceAction367 */,
-  53 /* Group of ? */,
-  935 /* Id of ReduceAction368 */,
+  51 /* Group of ? */,
+  947 /* Id of ReduceAction368 */,
   5 /* Color of ReduceAction368 */,
-  53 /* Group of ? */,
-  931 /* Id of ReduceAction369 */,
+  51 /* Group of ? */,
+  943 /* Id of ReduceAction369 */,
   5 /* Color of ReduceAction369 */,
-  53 /* Group of ? */,
-  923 /* Id of ReduceAction376 */,
+  51 /* Group of ? */,
+  935 /* Id of ReduceAction376 */,
   5 /* Color of ReduceAction376 */,
-  53 /* Group of ? */,
-  919 /* Id of ReduceAction377 */,
+  51 /* Group of ? */,
+  931 /* Id of ReduceAction377 */,
   5 /* Color of ReduceAction377 */,
-  53 /* Group of ? */,
-  915 /* Id of ReduceAction378 */,
+  51 /* Group of ? */,
+  927 /* Id of ReduceAction378 */,
   5 /* Color of ReduceAction378 */,
-  53 /* Group of ? */,
-  911 /* Id of ReduceAction379 */,
+  51 /* Group of ? */,
+  923 /* Id of ReduceAction379 */,
   5 /* Color of ReduceAction379 */,
-  53 /* Group of ? */,
-  907 /* Id of ReduceAction380 */,
+  51 /* Group of ? */,
+  919 /* Id of ReduceAction380 */,
   5 /* Color of ReduceAction380 */,
-  53 /* Group of ? */,
-  903 /* Id of ReduceAction381 */,
+  51 /* Group of ? */,
+  915 /* Id of ReduceAction381 */,
   5 /* Color of ReduceAction381 */,
-  53 /* Group of ? */,
-  899 /* Id of ReduceAction382 */,
+  51 /* Group of ? */,
+  911 /* Id of ReduceAction382 */,
   5 /* Color of ReduceAction382 */,
-  53 /* Group of ? */,
-  895 /* Id of ReduceAction383 */,
+  51 /* Group of ? */,
+  907 /* Id of ReduceAction383 */,
   5 /* Color of ReduceAction383 */,
-  53 /* Group of ? */,
-  891 /* Id of ReduceAction384 */,
+  51 /* Group of ? */,
+  903 /* Id of ReduceAction384 */,
   5 /* Color of ReduceAction384 */,
-  53 /* Group of ? */,
-  887 /* Id of ReduceAction385 */,
+  51 /* Group of ? */,
+  899 /* Id of ReduceAction385 */,
   5 /* Color of ReduceAction385 */,
-  53 /* Group of ? */,
-  883 /* Id of ReduceAction386 */,
+  51 /* Group of ? */,
+  895 /* Id of ReduceAction386 */,
   5 /* Color of ReduceAction386 */,
-  53 /* Group of ? */,
-  879 /* Id of ReduceAction387 */,
+  51 /* Group of ? */,
+  891 /* Id of ReduceAction387 */,
   5 /* Color of ReduceAction387 */,
-  53 /* Group of ? */,
-  875 /* Id of ReduceAction388 */,
+  51 /* Group of ? */,
+  887 /* Id of ReduceAction388 */,
   5 /* Color of ReduceAction388 */,
-  53 /* Group of ? */,
-  867 /* Id of ReduceAction391 */,
+  51 /* Group of ? */,
+  879 /* Id of ReduceAction391 */,
   5 /* Color of ReduceAction391 */,
-  53 /* Group of ? */,
-  863 /* Id of ReduceAction392 */,
+  51 /* Group of ? */,
+  875 /* Id of ReduceAction392 */,
   5 /* Color of ReduceAction392 */,
-  53 /* Group of ? */,
-  859 /* Id of ReduceAction393 */,
+  51 /* Group of ? */,
+  871 /* Id of ReduceAction393 */,
   5 /* Color of ReduceAction393 */,
-  53 /* Group of ? */,
-  855 /* Id of ReduceAction394 */,
+  51 /* Group of ? */,
+  867 /* Id of ReduceAction394 */,
   5 /* Color of ReduceAction394 */,
-  53 /* Group of ? */,
-  851 /* Id of ReduceAction395 */,
+  51 /* Group of ? */,
+  863 /* Id of ReduceAction395 */,
   5 /* Color of ReduceAction395 */,
-  53 /* Group of ? */,
-  847 /* Id of ReduceAction396 */,
+  51 /* Group of ? */,
+  859 /* Id of ReduceAction396 */,
   5 /* Color of ReduceAction396 */,
-  53 /* Group of ? */,
-  843 /* Id of ReduceAction398 */,
+  51 /* Group of ? */,
+  855 /* Id of ReduceAction398 */,
   5 /* Color of ReduceAction398 */,
-  53 /* Group of ? */,
-  839 /* Id of ReduceAction399 */,
+  51 /* Group of ? */,
+  851 /* Id of ReduceAction399 */,
   5 /* Color of ReduceAction399 */,
-  53 /* Group of ? */,
-  827 /* Id of ReduceAction400 */,
+  51 /* Group of ? */,
+  839 /* Id of ReduceAction400 */,
   5 /* Color of ReduceAction400 */,
-  53 /* Group of ? */,
-  823 /* Id of ReduceAction401 */,
+  51 /* Group of ? */,
+  835 /* Id of ReduceAction401 */,
   5 /* Color of ReduceAction401 */,
-  53 /* Group of ? */,
-  819 /* Id of ReduceAction403 */,
+  51 /* Group of ? */,
+  831 /* Id of ReduceAction403 */,
   5 /* Color of ReduceAction403 */,
-  53 /* Group of ? */,
-  815 /* Id of ReduceAction406 */,
+  51 /* Group of ? */,
+  827 /* Id of ReduceAction406 */,
   5 /* Color of ReduceAction406 */,
-  53 /* Group of ? */,
-  807 /* Id of ReduceAction411 */,
+  51 /* Group of ? */,
+  819 /* Id of ReduceAction411 */,
   5 /* Color of ReduceAction411 */,
-  53 /* Group of ? */,
-  803 /* Id of ReduceAction412 */,
+  51 /* Group of ? */,
+  815 /* Id of ReduceAction412 */,
   5 /* Color of ReduceAction412 */,
-  53 /* Group of ? */,
-  799 /* Id of ReduceAction413 */,
+  51 /* Group of ? */,
+  811 /* Id of ReduceAction413 */,
   5 /* Color of ReduceAction413 */,
-  53 /* Group of ? */,
-  795 /* Id of ReduceAction414 */,
+  51 /* Group of ? */,
+  807 /* Id of ReduceAction414 */,
   5 /* Color of ReduceAction414 */,
-  53 /* Group of ? */,
-  791 /* Id of ReduceAction415 */,
+  51 /* Group of ? */,
+  803 /* Id of ReduceAction415 */,
   5 /* Color of ReduceAction415 */,
-  53 /* Group of ? */,
-  787 /* Id of ReduceAction416 */,
+  51 /* Group of ? */,
+  799 /* Id of ReduceAction416 */,
   5 /* Color of ReduceAction416 */,
-  53 /* Group of ? */,
-  783 /* Id of ReduceAction417 */,
+  51 /* Group of ? */,
+  795 /* Id of ReduceAction417 */,
   5 /* Color of ReduceAction417 */,
-  53 /* Group of ? */,
-  779 /* Id of ReduceAction418 */,
+  51 /* Group of ? */,
+  791 /* Id of ReduceAction418 */,
   5 /* Color of ReduceAction418 */,
-  53 /* Group of ? */,
-  775 /* Id of ReduceAction419 */,
+  51 /* Group of ? */,
+  787 /* Id of ReduceAction419 */,
   5 /* Color of ReduceAction419 */,
-  53 /* Group of ? */,
-  767 /* Id of ReduceAction420 */,
+  51 /* Group of ? */,
+  779 /* Id of ReduceAction420 */,
   5 /* Color of ReduceAction420 */,
-  53 /* Group of ? */,
-  763 /* Id of ReduceAction421 */,
+  51 /* Group of ? */,
+  775 /* Id of ReduceAction421 */,
   5 /* Color of ReduceAction421 */,
-  53 /* Group of ? */,
-  759 /* Id of ReduceAction422 */,
+  51 /* Group of ? */,
+  771 /* Id of ReduceAction422 */,
   5 /* Color of ReduceAction422 */,
-  53 /* Group of ? */,
-  755 /* Id of ReduceAction423 */,
+  51 /* Group of ? */,
+  767 /* Id of ReduceAction423 */,
   5 /* Color of ReduceAction423 */,
-  53 /* Group of ? */,
-  751 /* Id of ReduceAction425 */,
+  51 /* Group of ? */,
+  763 /* Id of ReduceAction425 */,
   5 /* Color of ReduceAction425 */,
-  53 /* Group of ? */,
-  747 /* Id of ReduceAction426 */,
+  51 /* Group of ? */,
+  759 /* Id of ReduceAction426 */,
   5 /* Color of ReduceAction426 */,
-  53 /* Group of ? */,
-  743 /* Id of ReduceAction428 */,
+  51 /* Group of ? */,
+  755 /* Id of ReduceAction428 */,
   5 /* Color of ReduceAction428 */,
-  53 /* Group of ? */,
-  739 /* Id of ReduceAction429 */,
+  51 /* Group of ? */,
+  751 /* Id of ReduceAction429 */,
   5 /* Color of ReduceAction429 */,
-  53 /* Group of ? */,
-  731 /* Id of ReduceAction430 */,
+  51 /* Group of ? */,
+  743 /* Id of ReduceAction430 */,
   5 /* Color of ReduceAction430 */,
-  53 /* Group of ? */,
-  727 /* Id of ReduceAction431 */,
+  51 /* Group of ? */,
+  739 /* Id of ReduceAction431 */,
   5 /* Color of ReduceAction431 */,
-  53 /* Group of ? */,
-  615 /* Id of ReduceAction688 */,
+  51 /* Group of ? */,
+  627 /* Id of ReduceAction688 */,
   5 /* Color of ReduceAction688 */,
-  53 /* Group of ? */,
-  611 /* Id of ReduceAction689 */,
+  51 /* Group of ? */,
+  623 /* Id of ReduceAction689 */,
   5 /* Color of ReduceAction689 */,
-  53 /* Group of ? */,
-  603 /* Id of ReduceAction690 */,
+  51 /* Group of ? */,
+  615 /* Id of ReduceAction690 */,
   5 /* Color of ReduceAction690 */,
-  53 /* Group of ? */,
-  599 /* Id of ReduceAction693 */,
+  51 /* Group of ? */,
+  611 /* Id of ReduceAction693 */,
   5 /* Color of ReduceAction693 */,
-  53 /* Group of ? */,
-  587 /* Id of ReduceAction706 */,
+  51 /* Group of ? */,
+  599 /* Id of ReduceAction706 */,
   5 /* Color of ReduceAction706 */,
-  53 /* Group of ? */,
-  583 /* Id of ReduceAction707 */,
+  51 /* Group of ? */,
+  595 /* Id of ReduceAction707 */,
   5 /* Color of ReduceAction707 */,
-  53 /* Group of ? */,
-  575 /* Id of ReduceAction714 */,
+  51 /* Group of ? */,
+  587 /* Id of ReduceAction714 */,
   5 /* Color of ReduceAction714 */,
-  53 /* Group of ? */,
-  571 /* Id of ReduceAction715 */,
+  51 /* Group of ? */,
+  583 /* Id of ReduceAction715 */,
   5 /* Color of ReduceAction715 */,
-  53 /* Group of ? */,
-  567 /* Id of ReduceAction716 */,
+  51 /* Group of ? */,
+  579 /* Id of ReduceAction716 */,
   5 /* Color of ReduceAction716 */,
-  53 /* Group of ? */,
-  563 /* Id of ReduceAction717 */,
+  51 /* Group of ? */,
+  575 /* Id of ReduceAction717 */,
   5 /* Color of ReduceAction717 */,
-  53 /* Group of ? */,
-  559 /* Id of ReduceAction718 */,
+  51 /* Group of ? */,
+  571 /* Id of ReduceAction718 */,
   5 /* Color of ReduceAction718 */,
-  53 /* Group of ? */,
-  555 /* Id of ReduceAction719 */,
+  51 /* Group of ? */,
+  567 /* Id of ReduceAction719 */,
   5 /* Color of ReduceAction719 */,
-  53 /* Group of ? */,
-  547 /* Id of ReduceAction720 */,
+  51 /* Group of ? */,
+  559 /* Id of ReduceAction720 */,
   5 /* Color of ReduceAction720 */,
-  53 /* Group of ? */,
-  543 /* Id of ReduceAction721 */,
+  51 /* Group of ? */,
+  555 /* Id of ReduceAction721 */,
   5 /* Color of ReduceAction721 */,
-  53 /* Group of ? */,
-  539 /* Id of ReduceAction724 */,
+  51 /* Group of ? */,
+  551 /* Id of ReduceAction724 */,
   5 /* Color of ReduceAction724 */,
-  53 /* Group of ? */,
-  535 /* Id of ReduceAction725 */,
+  51 /* Group of ? */,
+  547 /* Id of ReduceAction725 */,
   5 /* Color of ReduceAction725 */,
-  53 /* Group of ? */,
-  531 /* Id of ReduceAction726 */,
+  51 /* Group of ? */,
+  543 /* Id of ReduceAction726 */,
   5 /* Color of ReduceAction726 */,
-  53 /* Group of ? */,
-  527 /* Id of ReduceAction727 */,
+  51 /* Group of ? */,
+  539 /* Id of ReduceAction727 */,
   5 /* Color of ReduceAction727 */,
-  53 /* Group of ? */,
-  523 /* Id of ReduceAction728 */,
+  51 /* Group of ? */,
+  535 /* Id of ReduceAction728 */,
   5 /* Color of ReduceAction728 */,
-  53 /* Group of ? */,
-  519 /* Id of ReduceAction729 */,
+  51 /* Group of ? */,
+  531 /* Id of ReduceAction729 */,
   5 /* Color of ReduceAction729 */,
-  53 /* Group of ? */,
-  511 /* Id of ReduceAction730 */,
+  51 /* Group of ? */,
+  523 /* Id of ReduceAction730 */,
   5 /* Color of ReduceAction730 */,
-  53 /* Group of ? */,
-  507 /* Id of ReduceAction731 */,
+  51 /* Group of ? */,
+  519 /* Id of ReduceAction731 */,
   5 /* Color of ReduceAction731 */,
-  53 /* Group of ? */,
-  503 /* Id of ReduceAction733 */,
+  51 /* Group of ? */,
+  515 /* Id of ReduceAction733 */,
   5 /* Color of ReduceAction733 */,
-  53 /* Group of ? */,
-  499 /* Id of ReduceAction735 */,
+  51 /* Group of ? */,
+  511 /* Id of ReduceAction735 */,
   5 /* Color of ReduceAction735 */,
-  53 /* Group of ? */,
-  495 /* Id of ReduceAction736 */,
+  51 /* Group of ? */,
+  507 /* Id of ReduceAction736 */,
   5 /* Color of ReduceAction736 */,
-  53 /* Group of ? */,
-  491 /* Id of ReduceAction737 */,
+  51 /* Group of ? */,
+  503 /* Id of ReduceAction737 */,
   5 /* Color of ReduceAction737 */,
-  53 /* Group of ? */,
-  483 /* Id of ReduceAction741 */,
+  51 /* Group of ? */,
+  495 /* Id of ReduceAction741 */,
   5 /* Color of ReduceAction741 */,
-  53 /* Group of ? */,
-  479 /* Id of ReduceAction742 */,
+  51 /* Group of ? */,
+  491 /* Id of ReduceAction742 */,
   5 /* Color of ReduceAction742 */,
-  53 /* Group of ? */,
-  475 /* Id of ReduceAction743 */,
+  51 /* Group of ? */,
+  487 /* Id of ReduceAction743 */,
   5 /* Color of ReduceAction743 */,
-  53 /* Group of ? */,
-  471 /* Id of ReduceAction744 */,
+  51 /* Group of ? */,
+  483 /* Id of ReduceAction744 */,
   5 /* Color of ReduceAction744 */,
-  53 /* Group of ? */,
-  467 /* Id of ReduceAction745 */,
+  51 /* Group of ? */,
+  479 /* Id of ReduceAction745 */,
   5 /* Color of ReduceAction745 */,
-  53 /* Group of ? */,
+  51 /* Group of ? */,
 };
-const char *LOCATE_parser___parser_prod = "src/parser//parser_prod.nit";
+const char *LOCATE_parser___parser_prod = "./parser//parser_prod.nit";
 const int SFT_parser___parser_prod[152] = {
   2 /* Group of ? */,
-  56 /* Group of ? */,
-  71 /* Group of ? */,
+  54 /* Group of ? */,
+  69 /* Group of ? */,
   15 /* Id of Visitor */,
   4 /* Color of Visitor */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
+  73 /* Group of ? */,
+  72 /* Group of ? */,
+  75 /* Group of ? */,
   75 /* Group of ? */,
   74 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  76 /* Group of ? */,
-  76 /* Group of ? */,
-  76 /* Group of ? */,
-  76 /* Group of ? */,
-  89 /* Group of ? */,
-  87 /* Group of ? */,
-  87 /* Group of ? */,
-  79 /* Group of ? */,
-  79 /* Group of ? */,
-  79 /* Group of ? */,
-  79 /* Group of ? */,
-  79 /* Group of ? */,
-  76 /* Group of ? */,
-  78 /* Group of ? */,
+  74 /* Group of ? */,
+  74 /* Group of ? */,
+  74 /* Group of ? */,
   87 /* Group of ? */,
-  86 /* Group of ? */,
-  96 /* Group of ? */,
-  96 /* Group of ? */,
-  100 /* Group of ? */,
-  97 /* Group of ? */,
-  106 /* Group of ? */,
-  102 /* Group of ? */,
-  102 /* Group of ? */,
+  85 /* Group of ? */,
   85 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
   77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  77 /* Group of ? */,
-  76 /* Group of ? */,
-  80 /* Group of ? */,
-  77 /* Group of ? */,
-  81 /* Group of ? */,
   74 /* Group of ? */,
-  84 /* Group of ? */,
+  76 /* Group of ? */,
   85 /* Group of ? */,
   84 /* Group of ? */,
+  94 /* Group of ? */,
+  94 /* Group of ? */,
+  99 /* Group of ? */,
+  95 /* Group of ? */,
+  104 /* Group of ? */,
+  101 /* Group of ? */,
+  100 /* Group of ? */,
+  83 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  75 /* Group of ? */,
+  74 /* Group of ? */,
+  78 /* Group of ? */,
+  75 /* Group of ? */,
+  79 /* Group of ? */,
+  72 /* Group of ? */,
+  82 /* Group of ? */,
+  83 /* Group of ? */,
+  82 /* Group of ? */,
+  86 /* Group of ? */,
+  82 /* Group of ? */,
+  86 /* Group of ? */,
+  86 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  86 /* Group of ? */,
+  86 /* Group of ? */,
   88 /* Group of ? */,
-  84 /* Group of ? */,
-  88 /* Group of ? */,
-  88 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  88 /* Group of ? */,
-  88 /* Group of ? */,
-  90 /* Group of ? */,
-  84 /* Group of ? */,
-  87 /* Group of ? */,
-  108 /* Group of ? */,
-  113 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  119 /* Group of ? */,
-  85 /* Group of ? */,
-  119 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
+  82 /* Group of ? */,
   85 /* Group of ? */,
+  106 /* Group of ? */,
+  111 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
   117 /* Group of ? */,
+  83 /* Group of ? */,
   117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  113 /* Group of ? */,
-  105 /* Group of ? */,
-  98 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  118 /* Group of ? */,
-  84 /* Group of ? */,
-  118 /* Group of ? */,
-  106 /* Group of ? */,
-  113 /* Group of ? */,
   115 /* Group of ? */,
-  84 /* Group of ? */,
   115 /* Group of ? */,
-  100 /* Group of ? */,
-  87 /* Group of ? */,
-  90 /* Group of ? */,
-  92 /* Group of ? */,
-  84 /* Group of ? */,
-  89 /* Group of ? */,
-  89 /* Group of ? */,
-  85 /* Group of ? */,
-  85 /* Group of ? */,
-  89 /* Group of ? */,
-  85 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  83 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  111 /* Group of ? */,
+  103 /* Group of ? */,
+  96 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  116 /* Group of ? */,
+  82 /* Group of ? */,
+  116 /* Group of ? */,
+  104 /* Group of ? */,
+  111 /* Group of ? */,
+  113 /* Group of ? */,
+  82 /* Group of ? */,
+  113 /* Group of ? */,
+  98 /* Group of ? */,
   85 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  84 /* Group of ? */,
-  87 /* Group of ? */,
+  88 /* Group of ? */,
+  90 /* Group of ? */,
+  82 /* Group of ? */,
   87 /* Group of ? */,
   87 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
   87 /* Group of ? */,
+  83 /* Group of ? */,
+  83 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
   85 /* Group of ? */,
-  86 /* Group of ? */,
-  84 /* Group of ? */,
+  85 /* Group of ? */,
+  85 /* Group of ? */,
+  85 /* Group of ? */,
+  83 /* Group of ? */,
   84 /* Group of ? */,
-  98 /* Group of ? */,
-  76 /* Group of ? */,
-  76 /* Group of ? */,
-  81 /* Group of ? */,
-  76 /* Group of ? */,
-  76 /* Group of ? */,
+  82 /* Group of ? */,
+  82 /* Group of ? */,
+  96 /* Group of ? */,
   74 /* Group of ? */,
   74 /* Group of ? */,
-  76 /* Group of ? */,
   79 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  80 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
-  82 /* Group of ? */,
   74 /* Group of ? */,
   74 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
   74 /* Group of ? */,
+  77 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  78 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  80 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
+  72 /* Group of ? */,
 };
-const char *LOCATE_parser___lexer = "src/parser//lexer.nit";
+const char *LOCATE_parser___lexer = "./parser//lexer.nit";
 const int SFT_parser___lexer[98] = {
   5 /* Group of ? */,
-  70 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
-  73 /* Group of ? */,
+  68 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
+  71 /* Group of ? */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  2187 /* Id of Lexer */,
+  74 /* Group of ? */,
+  2203 /* Id of Lexer */,
   5 /* Color of Lexer */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
 };
-const char *LOCATE_parser___parser_nodes = "src/parser//parser_nodes.nit";
+const char *LOCATE_parser___parser_nodes = "./parser//parser_nodes.nit";
 const int SFT_parser___parser_nodes[913] = {
-  299 /* Id of ANode */,
+  307 /* Id of ANode */,
   4 /* Color of ANode */,
   3 /* Group of ? */,
-  62 /* Group of ? */,
-  323 /* Id of Token */,
+  60 /* Group of ? */,
+  331 /* Id of Token */,
   5 /* Color of Token */,
-  72 /* Group of ? */,
-  2063 /* Id of Prod */,
+  70 /* Group of ? */,
+  2075 /* Id of Prod */,
   6 /* Color of Prod */,
-  72 /* Group of ? */,
-  2687 /* Id of TEol */,
+  70 /* Group of ? */,
+  2715 /* Id of TEol */,
   6 /* Color of TEol */,
-  74 /* Group of ? */,
-  2711 /* Id of TComment */,
+  72 /* Group of ? */,
+  2739 /* Id of TComment */,
   6 /* Color of TComment */,
-  74 /* Group of ? */,
-  2547 /* Id of TKwmodule */,
+  72 /* Group of ? */,
+  2575 /* Id of TKwmodule */,
   6 /* Color of TKwmodule */,
-  74 /* Group of ? */,
-  2595 /* Id of TKwimport */,
+  72 /* Group of ? */,
+  2623 /* Id of TKwimport */,
   6 /* Color of TKwimport */,
-  74 /* Group of ? */,
-  2635 /* Id of TKwclass */,
+  72 /* Group of ? */,
+  2663 /* Id of TKwclass */,
   6 /* Color of TKwclass */,
-  74 /* Group of ? */,
-  2655 /* Id of TKwabstract */,
+  72 /* Group of ? */,
+  2683 /* Id of TKwabstract */,
   6 /* Color of TKwabstract */,
-  74 /* Group of ? */,
-  2583 /* Id of TKwinterface */,
+  72 /* Group of ? */,
+  2611 /* Id of TKwinterface */,
   6 /* Color of TKwinterface */,
-  74 /* Group of ? */,
-  2615 /* Id of TKwenum */,
+  72 /* Group of ? */,
+  2643 /* Id of TKwenum */,
   6 /* Color of TKwenum */,
-  74 /* Group of ? */,
-  2495 /* Id of TKwspecial */,
+  72 /* Group of ? */,
+  2523 /* Id of TKwspecial */,
   6 /* Color of TKwspecial */,
-  74 /* Group of ? */,
-  2619 /* Id of TKwend */,
+  72 /* Group of ? */,
+  2647 /* Id of TKwend */,
   6 /* Color of TKwend */,
-  74 /* Group of ? */,
-  2551 /* Id of TKwmeth */,
+  72 /* Group of ? */,
+  2579 /* Id of TKwmeth */,
   6 /* Color of TKwmeth */,
-  74 /* Group of ? */,
-  2479 /* Id of TKwtype */,
+  72 /* Group of ? */,
+  2507 /* Id of TKwtype */,
   6 /* Color of TKwtype */,
-  74 /* Group of ? */,
-  2587 /* Id of TKwinit */,
+  72 /* Group of ? */,
+  2615 /* Id of TKwinit */,
   6 /* Color of TKwinit */,
-  74 /* Group of ? */,
-  2507 /* Id of TKwredef */,
+  72 /* Group of ? */,
+  2535 /* Id of TKwredef */,
   6 /* Color of TKwredef */,
-  74 /* Group of ? */,
-  2571 /* Id of TKwis */,
+  72 /* Group of ? */,
+  2599 /* Id of TKwis */,
   6 /* Color of TKwis */,
-  74 /* Group of ? */,
-  2627 /* Id of TKwdo */,
+  72 /* Group of ? */,
+  2655 /* Id of TKwdo */,
   6 /* Color of TKwdo */,
-  74 /* Group of ? */,
-  2511 /* Id of TKwreadable */,
+  72 /* Group of ? */,
+  2539 /* Id of TKwreadable */,
   6 /* Color of TKwreadable */,
-  74 /* Group of ? */,
-  2467 /* Id of TKwwritable */,
+  72 /* Group of ? */,
+  2495 /* Id of TKwwritable */,
   6 /* Color of TKwwritable */,
-  74 /* Group of ? */,
-  2475 /* Id of TKwvar */,
+  72 /* Group of ? */,
+  2503 /* Id of TKwvar */,
   6 /* Color of TKwvar */,
-  74 /* Group of ? */,
-  2579 /* Id of TKwintern */,
+  72 /* Group of ? */,
+  2607 /* Id of TKwintern */,
   6 /* Color of TKwintern */,
-  74 /* Group of ? */,
-  2611 /* Id of TKwextern */,
+  72 /* Group of ? */,
+  2639 /* Id of TKwextern */,
   6 /* Color of TKwextern */,
-  74 /* Group of ? */,
-  2515 /* Id of TKwprotected */,
+  72 /* Group of ? */,
+  2543 /* Id of TKwprotected */,
   6 /* Color of TKwprotected */,
-  74 /* Group of ? */,
-  2519 /* Id of TKwprivate */,
+  72 /* Group of ? */,
+  2547 /* Id of TKwprivate */,
   6 /* Color of TKwprivate */,
-  74 /* Group of ? */,
-  2575 /* Id of TKwintrude */,
+  72 /* Group of ? */,
+  2603 /* Id of TKwintrude */,
   6 /* Color of TKwintrude */,
-  74 /* Group of ? */,
-  2599 /* Id of TKwif */,
+  72 /* Group of ? */,
+  2627 /* Id of TKwif */,
   6 /* Color of TKwif */,
-  74 /* Group of ? */,
-  2487 /* Id of TKwthen */,
+  72 /* Group of ? */,
+  2515 /* Id of TKwthen */,
   6 /* Color of TKwthen */,
-  74 /* Group of ? */,
-  2623 /* Id of TKwelse */,
+  72 /* Group of ? */,
+  2651 /* Id of TKwelse */,
   6 /* Color of TKwelse */,
-  74 /* Group of ? */,
-  2471 /* Id of TKwwhile */,
+  72 /* Group of ? */,
+  2499 /* Id of TKwwhile */,
   6 /* Color of TKwwhile */,
-  74 /* Group of ? */,
-  2555 /* Id of TKwloop */,
+  72 /* Group of ? */,
+  2583 /* Id of TKwloop */,
   6 /* Color of TKwloop */,
-  74 /* Group of ? */,
-  2603 /* Id of TKwfor */,
+  72 /* Group of ? */,
+  2631 /* Id of TKwfor */,
   6 /* Color of TKwfor */,
-  74 /* Group of ? */,
-  2591 /* Id of TKwin */,
+  72 /* Group of ? */,
+  2619 /* Id of TKwin */,
   6 /* Color of TKwin */,
-  74 /* Group of ? */,
-  2651 /* Id of TKwand */,
+  72 /* Group of ? */,
+  2679 /* Id of TKwand */,
   6 /* Color of TKwand */,
-  74 /* Group of ? */,
-  2523 /* Id of TKwor */,
+  72 /* Group of ? */,
+  2551 /* Id of TKwor */,
   6 /* Color of TKwor */,
-  74 /* Group of ? */,
-  2539 /* Id of TKwnot */,
+  72 /* Group of ? */,
+  2567 /* Id of TKwnot */,
   6 /* Color of TKwnot */,
-  74 /* Group of ? */,
-  2503 /* Id of TKwreturn */,
+  72 /* Group of ? */,
+  2531 /* Id of TKwreturn */,
   6 /* Color of TKwreturn */,
-  74 /* Group of ? */,
-  2631 /* Id of TKwcontinue */,
+  72 /* Group of ? */,
+  2659 /* Id of TKwcontinue */,
   6 /* Color of TKwcontinue */,
-  74 /* Group of ? */,
-  2639 /* Id of TKwbreak */,
+  72 /* Group of ? */,
+  2667 /* Id of TKwbreak */,
   6 /* Color of TKwbreak */,
-  74 /* Group of ? */,
-  2659 /* Id of TKwabort */,
+  72 /* Group of ? */,
+  2687 /* Id of TKwabort */,
   6 /* Color of TKwabort */,
-  74 /* Group of ? */,
-  2643 /* Id of TKwassert */,
+  72 /* Group of ? */,
+  2671 /* Id of TKwassert */,
   6 /* Color of TKwassert */,
-  74 /* Group of ? */,
-  2543 /* Id of TKwnew */,
+  72 /* Group of ? */,
+  2571 /* Id of TKwnew */,
   6 /* Color of TKwnew */,
-  74 /* Group of ? */,
-  2567 /* Id of TKwisa */,
+  72 /* Group of ? */,
+  2595 /* Id of TKwisa */,
   6 /* Color of TKwisa */,
-  74 /* Group of ? */,
-  2527 /* Id of TKwonce */,
+  72 /* Group of ? */,
+  2555 /* Id of TKwonce */,
   6 /* Color of TKwonce */,
-  74 /* Group of ? */,
-  2491 /* Id of TKwsuper */,
+  72 /* Group of ? */,
+  2519 /* Id of TKwsuper */,
   6 /* Color of TKwsuper */,
-  74 /* Group of ? */,
-  2499 /* Id of TKwself */,
+  72 /* Group of ? */,
+  2527 /* Id of TKwself */,
   6 /* Color of TKwself */,
-  74 /* Group of ? */,
-  2483 /* Id of TKwtrue */,
+  72 /* Group of ? */,
+  2511 /* Id of TKwtrue */,
   6 /* Color of TKwtrue */,
-  74 /* Group of ? */,
-  2607 /* Id of TKwfalse */,
+  72 /* Group of ? */,
+  2635 /* Id of TKwfalse */,
   6 /* Color of TKwfalse */,
-  74 /* Group of ? */,
-  2535 /* Id of TKwnull */,
+  72 /* Group of ? */,
+  2563 /* Id of TKwnull */,
   6 /* Color of TKwnull */,
-  74 /* Group of ? */,
-  2647 /* Id of TKwas */,
+  72 /* Group of ? */,
+  2675 /* Id of TKwas */,
   6 /* Color of TKwas */,
-  74 /* Group of ? */,
-  2531 /* Id of TKwnullable */,
+  72 /* Group of ? */,
+  2559 /* Id of TKwnullable */,
   6 /* Color of TKwnullable */,
-  74 /* Group of ? */,
-  2563 /* Id of TKwisset */,
+  72 /* Group of ? */,
+  2591 /* Id of TKwisset */,
   6 /* Color of TKwisset */,
-  74 /* Group of ? */,
-  2559 /* Id of TKwlabel */,
+  72 /* Group of ? */,
+  2587 /* Id of TKwlabel */,
   6 /* Color of TKwlabel */,
-  74 /* Group of ? */,
-  2427 /* Id of TOpar */,
+  72 /* Group of ? */,
+  2455 /* Id of TOpar */,
   6 /* Color of TOpar */,
-  74 /* Group of ? */,
-  2707 /* Id of TCpar */,
+  72 /* Group of ? */,
+  2735 /* Id of TCpar */,
   6 /* Color of TCpar */,
-  74 /* Group of ? */,
-  2431 /* Id of TObra */,
+  72 /* Group of ? */,
+  2459 /* Id of TObra */,
   6 /* Color of TObra */,
-  74 /* Group of ? */,
-  2731 /* Id of TCbra */,
+  72 /* Group of ? */,
+  2759 /* Id of TCbra */,
   6 /* Color of TCbra */,
-  74 /* Group of ? */,
-  2715 /* Id of TComma */,
+  72 /* Group of ? */,
+  2743 /* Id of TComma */,
   6 /* Color of TComma */,
-  74 /* Group of ? */,
-  2719 /* Id of TColumn */,
+  72 /* Group of ? */,
+  2747 /* Id of TColumn */,
   6 /* Color of TColumn */,
-  74 /* Group of ? */,
-  2411 /* Id of TQuad */,
+  72 /* Group of ? */,
+  2439 /* Id of TQuad */,
   6 /* Color of TQuad */,
-  74 /* Group of ? */,
-  2743 /* Id of TAssign */,
+  72 /* Group of ? */,
+  2771 /* Id of TAssign */,
   6 /* Color of TAssign */,
-  74 /* Group of ? */,
-  2415 /* Id of TPluseq */,
+  72 /* Group of ? */,
+  2443 /* Id of TPluseq */,
   6 /* Color of TPluseq */,
-  74 /* Group of ? */,
-  2443 /* Id of TMinuseq */,
+  72 /* Group of ? */,
+  2471 /* Id of TMinuseq */,
   6 /* Color of TMinuseq */,
-  74 /* Group of ? */,
-  2695 /* Id of TDotdotdot */,
+  72 /* Group of ? */,
+  2723 /* Id of TDotdotdot */,
   6 /* Color of TDotdotdot */,
-  74 /* Group of ? */,
-  2699 /* Id of TDotdot */,
+  72 /* Group of ? */,
+  2727 /* Id of TDotdot */,
   6 /* Color of TDotdot */,
-  74 /* Group of ? */,
-  2703 /* Id of TDot */,
+  72 /* Group of ? */,
+  2731 /* Id of TDot */,
   6 /* Color of TDot */,
-  74 /* Group of ? */,
-  2419 /* Id of TPlus */,
+  72 /* Group of ? */,
+  2447 /* Id of TPlus */,
   6 /* Color of TPlus */,
-  74 /* Group of ? */,
-  2447 /* Id of TMinus */,
+  72 /* Group of ? */,
+  2475 /* Id of TMinus */,
   6 /* Color of TMinus */,
-  74 /* Group of ? */,
-  2403 /* Id of TStar */,
+  72 /* Group of ? */,
+  2431 /* Id of TStar */,
   6 /* Color of TStar */,
-  74 /* Group of ? */,
-  2407 /* Id of TSlash */,
+  72 /* Group of ? */,
+  2435 /* Id of TSlash */,
   6 /* Color of TSlash */,
-  74 /* Group of ? */,
-  2423 /* Id of TPercent */,
+  72 /* Group of ? */,
+  2451 /* Id of TPercent */,
   6 /* Color of TPercent */,
-  74 /* Group of ? */,
-  2683 /* Id of TEq */,
+  72 /* Group of ? */,
+  2711 /* Id of TEq */,
   6 /* Color of TEq */,
-  74 /* Group of ? */,
-  2439 /* Id of TNe */,
+  72 /* Group of ? */,
+  2467 /* Id of TNe */,
   6 /* Color of TNe */,
-  74 /* Group of ? */,
-  2455 /* Id of TLt */,
+  72 /* Group of ? */,
+  2483 /* Id of TLt */,
   6 /* Color of TLt */,
-  74 /* Group of ? */,
-  2463 /* Id of TLe */,
+  72 /* Group of ? */,
+  2491 /* Id of TLe */,
   6 /* Color of TLe */,
-  74 /* Group of ? */,
-  2459 /* Id of TLl */,
+  72 /* Group of ? */,
+  2487 /* Id of TLl */,
   6 /* Color of TLl */,
-  74 /* Group of ? */,
-  2667 /* Id of TGt */,
+  72 /* Group of ? */,
+  2695 /* Id of TGt */,
   6 /* Color of TGt */,
-  74 /* Group of ? */,
-  2675 /* Id of TGe */,
+  72 /* Group of ? */,
+  2703 /* Id of TGe */,
   6 /* Color of TGe */,
-  74 /* Group of ? */,
-  2671 /* Id of TGg */,
+  72 /* Group of ? */,
+  2699 /* Id of TGg */,
   6 /* Color of TGg */,
-  74 /* Group of ? */,
-  2399 /* Id of TStarship */,
+  72 /* Group of ? */,
+  2427 /* Id of TStarship */,
   6 /* Color of TStarship */,
-  74 /* Group of ? */,
-  2735 /* Id of TBang */,
+  72 /* Group of ? */,
+  2763 /* Id of TBang */,
   6 /* Color of TBang */,
-  74 /* Group of ? */,
-  2723 /* Id of TClassid */,
+  72 /* Group of ? */,
+  2751 /* Id of TClassid */,
   6 /* Color of TClassid */,
-  74 /* Group of ? */,
-  2663 /* Id of TId */,
+  72 /* Group of ? */,
+  2691 /* Id of TId */,
   6 /* Color of TId */,
-  74 /* Group of ? */,
-  2739 /* Id of TAttrid */,
+  72 /* Group of ? */,
+  2767 /* Id of TAttrid */,
   6 /* Color of TAttrid */,
-  74 /* Group of ? */,
-  2435 /* Id of TNumber */,
+  72 /* Group of ? */,
+  2463 /* Id of TNumber */,
   6 /* Color of TNumber */,
-  74 /* Group of ? */,
-  2679 /* Id of TFloat */,
+  72 /* Group of ? */,
+  2707 /* Id of TFloat */,
   6 /* Color of TFloat */,
-  74 /* Group of ? */,
-  2727 /* Id of TChar */,
+  72 /* Group of ? */,
+  2755 /* Id of TChar */,
   6 /* Color of TChar */,
-  74 /* Group of ? */,
-  2391 /* Id of TString */,
+  72 /* Group of ? */,
+  2419 /* Id of TString */,
   6 /* Color of TString */,
-  74 /* Group of ? */,
-  2395 /* Id of TStartString */,
+  72 /* Group of ? */,
+  2423 /* Id of TStartString */,
   6 /* Color of TStartString */,
-  74 /* Group of ? */,
-  2451 /* Id of TMidString */,
+  72 /* Group of ? */,
+  2479 /* Id of TMidString */,
   6 /* Color of TMidString */,
-  74 /* Group of ? */,
-  2691 /* Id of TEndString */,
+  72 /* Group of ? */,
+  2719 /* Id of TEndString */,
   6 /* Color of TEndString */,
-  74 /* Group of ? */,
-  2959 /* Id of EOF */,
+  72 /* Group of ? */,
+  2987 /* Id of EOF */,
   6 /* Color of EOF */,
-  74 /* Group of ? */,
-  3403 /* Id of AError */,
+  72 /* Group of ? */,
+  3443 /* Id of AError */,
   7 /* Color of AError */,
-  78 /* Group of ? */,
-  3035 /* Id of AModule */,
+  76 /* Group of ? */,
+  3079 /* Id of AModule */,
   7 /* Color of AModule */,
   6 /* Group of ? */,
-  77 /* Group of ? */,
-  3027 /* Id of AModuledecl */,
+  75 /* Group of ? */,
+  3071 /* Id of AModuledecl */,
   7 /* Color of AModuledecl */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  3051 /* Id of AImport */,
+  74 /* Group of ? */,
+  3095 /* Id of AImport */,
   7 /* Color of AImport */,
-  76 /* Group of ? */,
-  3239 /* Id of AStdImport */,
+  74 /* Group of ? */,
+  3279 /* Id of AStdImport */,
   8 /* Color of AStdImport */,
   6 /* Group of ? */,
-  79 /* Group of ? */,
-  3319 /* Id of ANoImport */,
+  77 /* Group of ? */,
+  3359 /* Id of ANoImport */,
   8 /* Color of ANoImport */,
   6 /* Group of ? */,
-  79 /* Group of ? */,
-  2999 /* Id of AVisibility */,
+  77 /* Group of ? */,
+  3043 /* Id of AVisibility */,
   7 /* Color of AVisibility */,
-  75 /* Group of ? */,
-  3283 /* Id of APublicVisibility */,
+  73 /* Group of ? */,
+  3323 /* Id of APublicVisibility */,
   8 /* Color of APublicVisibility */,
-  78 /* Group of ? */,
-  3299 /* Id of APrivateVisibility */,
+  76 /* Group of ? */,
+  3339 /* Id of APrivateVisibility */,
   8 /* Color of APrivateVisibility */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3291 /* Id of AProtectedVisibility */,
+  76 /* Group of ? */,
+  3331 /* Id of AProtectedVisibility */,
   8 /* Color of AProtectedVisibility */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3355 /* Id of AIntrudeVisibility */,
+  76 /* Group of ? */,
+  3395 /* Id of AIntrudeVisibility */,
   8 /* Color of AIntrudeVisibility */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3087 /* Id of AClassdef */,
+  76 /* Group of ? */,
+  3131 /* Id of AClassdef */,
   7 /* Color of AClassdef */,
-  85 /* Group of ? */,
-  3243 /* Id of AStdClassdef */,
+  83 /* Group of ? */,
+  3283 /* Id of AStdClassdef */,
   8 /* Color of AStdClassdef */,
   8 /* Group of ? */,
-  91 /* Group of ? */,
-  3223 /* Id of ATopClassdef */,
+  89 /* Group of ? */,
+  3263 /* Id of ATopClassdef */,
   8 /* Color of ATopClassdef */,
   8 /* Group of ? */,
-  89 /* Group of ? */,
-  3339 /* Id of AMainClassdef */,
+  87 /* Group of ? */,
+  3379 /* Id of AMainClassdef */,
   8 /* Color of AMainClassdef */,
   8 /* Group of ? */,
-  89 /* Group of ? */,
-  3083 /* Id of AClasskind */,
+  87 /* Group of ? */,
+  3127 /* Id of AClasskind */,
   7 /* Color of AClasskind */,
-  78 /* Group of ? */,
-  3415 /* Id of AConcreteClasskind */,
+  76 /* Group of ? */,
+  3455 /* Id of AConcreteClasskind */,
   8 /* Color of AConcreteClasskind */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3479 /* Id of AAbstractClasskind */,
+  79 /* Group of ? */,
+  3519 /* Id of AAbstractClasskind */,
   8 /* Color of AAbstractClasskind */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3359 /* Id of AInterfaceClasskind */,
+  79 /* Group of ? */,
+  3399 /* Id of AInterfaceClasskind */,
   8 /* Color of AInterfaceClasskind */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3411 /* Id of AEnumClasskind */,
+  79 /* Group of ? */,
+  3451 /* Id of AEnumClasskind */,
   8 /* Color of AEnumClasskind */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3395 /* Id of AExternClasskind */,
+  79 /* Group of ? */,
+  3435 /* Id of AExternClasskind */,
   8 /* Color of AExternClasskind */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3055 /* Id of AFormaldef */,
+  79 /* Group of ? */,
+  3099 /* Id of AFormaldef */,
   7 /* Color of AFormaldef */,
   7 /* Group of ? */,
-  78 /* Group of ? */,
-  3007 /* Id of ASuperclass */,
+  76 /* Group of ? */,
+  3051 /* Id of ASuperclass */,
   7 /* Color of ASuperclass */,
   7 /* Group of ? */,
-  80 /* Group of ? */,
-  3019 /* Id of APropdef */,
+  78 /* Group of ? */,
+  3063 /* Id of APropdef */,
   7 /* Color of APropdef */,
   6 /* Group of ? */,
-  79 /* Group of ? */,
-  3451 /* Id of AAttrPropdef */,
+  77 /* Group of ? */,
+  3491 /* Id of AAttrPropdef */,
   8 /* Color of AAttrPropdef */,
   11 /* Group of ? */,
-  89 /* Group of ? */,
-  3335 /* Id of AMethPropdef */,
+  87 /* Group of ? */,
+  3375 /* Id of AMethPropdef */,
   8 /* Color of AMethPropdef */,
   10 /* Group of ? */,
-  88 /* Group of ? */,
-  3647 /* Id of ADeferredMethPropdef */,
+  86 /* Group of ? */,
+  3683 /* Id of ADeferredMethPropdef */,
   9 /* Color of ADeferredMethPropdef */,
   14 /* Group of ? */,
-  98 /* Group of ? */,
-  3607 /* Id of AInternMethPropdef */,
+  96 /* Group of ? */,
+  3643 /* Id of AInternMethPropdef */,
   9 /* Color of AInternMethPropdef */,
   14 /* Group of ? */,
-  98 /* Group of ? */,
-  3631 /* Id of AExternPropdef */,
+  96 /* Group of ? */,
+  3667 /* Id of AExternPropdef */,
   9 /* Color of AExternPropdef */,
   14 /* Group of ? */,
-  97 /* Group of ? */,
-  3731 /* Id of AExternMethPropdef */,
+  95 /* Group of ? */,
+  3763 /* Id of AExternMethPropdef */,
   10 /* Color of AExternMethPropdef */,
   16 /* Group of ? */,
-  102 /* Group of ? */,
-  3659 /* Id of AConcreteMethPropdef */,
+  101 /* Group of ? */,
+  3695 /* Id of AConcreteMethPropdef */,
   9 /* Color of AConcreteMethPropdef */,
   14 /* Group of ? */,
-  99 /* Group of ? */,
-  303 /* Id of AInitPropdef */,
+  97 /* Group of ? */,
+  311 /* Id of AInitPropdef */,
   5 /* Color of AInitPropdef */,
-  69 /* Group of ? */,
-  3739 /* Id of AConcreteInitPropdef */,
+  67 /* Group of ? */,
+  3771 /* Id of AConcreteInitPropdef */,
   10 /* Color of AConcreteInitPropdef */,
   18 /* Group of ? */,
-  108 /* Group of ? */,
-  3735 /* Id of AExternInitPropdef */,
+  106 /* Group of ? */,
+  3767 /* Id of AExternInitPropdef */,
   10 /* Color of AExternInitPropdef */,
   16 /* Group of ? */,
-  104 /* Group of ? */,
-  3727 /* Id of AMainMethPropdef */,
+  103 /* Group of ? */,
+  3759 /* Id of AMainMethPropdef */,
   10 /* Color of AMainMethPropdef */,
-  104 /* Group of ? */,
-  3059 /* Id of AExternCalls */,
+  102 /* Group of ? */,
+  3103 /* Id of AExternCalls */,
   7 /* Color of AExternCalls */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  3063 /* Id of AExternCall */,
+  74 /* Group of ? */,
+  3107 /* Id of AExternCall */,
   7 /* Color of AExternCall */,
-  78 /* Group of ? */,
-  3295 /* Id of APropExternCall */,
+  76 /* Group of ? */,
+  3335 /* Id of APropExternCall */,
   8 /* Color of APropExternCall */,
-  79 /* Group of ? */,
-  3595 /* Id of ALocalPropExternCall */,
+  77 /* Group of ? */,
+  3631 /* Id of ALocalPropExternCall */,
   9 /* Color of ALocalPropExternCall */,
   6 /* Group of ? */,
-  82 /* Group of ? */,
-  3619 /* Id of AFullPropExternCall */,
+  80 /* Group of ? */,
+  3655 /* Id of AFullPropExternCall */,
   9 /* Color of AFullPropExternCall */,
   6 /* Group of ? */,
-  82 /* Group of ? */,
-  3611 /* Id of AInitPropExternCall */,
+  80 /* Group of ? */,
+  3647 /* Id of AInitPropExternCall */,
   9 /* Color of AInitPropExternCall */,
   6 /* Group of ? */,
-  82 /* Group of ? */,
-  3231 /* Id of ASuperExternCall */,
+  80 /* Group of ? */,
+  3271 /* Id of ASuperExternCall */,
   8 /* Color of ASuperExternCall */,
   6 /* Group of ? */,
-  81 /* Group of ? */,
-  3427 /* Id of ACastExternCall */,
+  79 /* Group of ? */,
+  3467 /* Id of ACastExternCall */,
   8 /* Color of ACastExternCall */,
-  81 /* Group of ? */,
-  3667 /* Id of ACastAsExternCall */,
+  79 /* Group of ? */,
+  3703 /* Id of ACastAsExternCall */,
   9 /* Color of ACastAsExternCall */,
   6 /* Group of ? */,
-  84 /* Group of ? */,
-  3687 /* Id of AAsNullableExternCall */,
+  82 /* Group of ? */,
+  3723 /* Id of AAsNullableExternCall */,
   9 /* Color of AAsNullableExternCall */,
   6 /* Group of ? */,
-  84 /* Group of ? */,
-  3691 /* Id of AAsNotNullableExternCall */,
+  82 /* Group of ? */,
+  3727 /* Id of AAsNotNullableExternCall */,
   9 /* Color of AAsNotNullableExternCall */,
   6 /* Group of ? */,
-  84 /* Group of ? */,
-  3215 /* Id of ATypePropdef */,
+  82 /* Group of ? */,
+  3255 /* Id of ATypePropdef */,
   8 /* Color of ATypePropdef */,
   9 /* Group of ? */,
-  87 /* Group of ? */,
-  3095 /* Id of AAble */,
+  85 /* Group of ? */,
+  3139 /* Id of AAble */,
   7 /* Color of AAble */,
   6 /* Group of ? */,
-  74 /* Group of ? */,
-  3275 /* Id of AReadAble */,
+  72 /* Group of ? */,
+  3315 /* Id of AReadAble */,
   8 /* Color of AReadAble */,
   8 /* Group of ? */,
-  79 /* Group of ? */,
-  3203 /* Id of AWriteAble */,
+  77 /* Group of ? */,
+  3243 /* Id of AWriteAble */,
   8 /* Color of AWriteAble */,
   8 /* Group of ? */,
-  79 /* Group of ? */,
-  3039 /* Id of AMethid */,
+  77 /* Group of ? */,
+  3083 /* Id of AMethid */,
   7 /* Color of AMethid */,
-  76 /* Group of ? */,
-  3375 /* Id of AIdMethid */,
+  74 /* Group of ? */,
+  3415 /* Id of AIdMethid */,
   8 /* Color of AIdMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3303 /* Id of APlusMethid */,
+  77 /* Group of ? */,
+  3343 /* Id of APlusMethid */,
   8 /* Color of APlusMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3327 /* Id of AMinusMethid */,
+  77 /* Group of ? */,
+  3367 /* Id of AMinusMethid */,
   8 /* Color of AMinusMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3251 /* Id of AStarMethid */,
+  77 /* Group of ? */,
+  3291 /* Id of AStarMethid */,
   8 /* Color of AStarMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3255 /* Id of ASlashMethid */,
+  77 /* Group of ? */,
+  3295 /* Id of ASlashMethid */,
   8 /* Color of ASlashMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3311 /* Id of APercentMethid */,
+  77 /* Group of ? */,
+  3351 /* Id of APercentMethid */,
   8 /* Color of APercentMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3407 /* Id of AEqMethid */,
+  77 /* Group of ? */,
+  3447 /* Id of AEqMethid */,
   8 /* Color of AEqMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3323 /* Id of ANeMethid */,
+  77 /* Group of ? */,
+  3363 /* Id of ANeMethid */,
   8 /* Color of ANeMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3351 /* Id of ALeMethid */,
+  77 /* Group of ? */,
+  3391 /* Id of ALeMethid */,
   8 /* Color of ALeMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3387 /* Id of AGeMethid */,
+  77 /* Group of ? */,
+  3427 /* Id of AGeMethid */,
   8 /* Color of AGeMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3343 /* Id of ALtMethid */,
+  77 /* Group of ? */,
+  3383 /* Id of ALtMethid */,
   8 /* Color of ALtMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3379 /* Id of AGtMethid */,
+  77 /* Group of ? */,
+  3419 /* Id of AGtMethid */,
   8 /* Color of AGtMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3347 /* Id of ALlMethid */,
+  77 /* Group of ? */,
+  3387 /* Id of ALlMethid */,
   8 /* Color of ALlMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3383 /* Id of AGgMethid */,
+  77 /* Group of ? */,
+  3423 /* Id of AGgMethid */,
   8 /* Color of AGgMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3439 /* Id of ABraMethid */,
+  77 /* Group of ? */,
+  3479 /* Id of ABraMethid */,
   8 /* Color of ABraMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3247 /* Id of AStarshipMethid */,
+  77 /* Group of ? */,
+  3287 /* Id of AStarshipMethid */,
   8 /* Color of AStarshipMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3459 /* Id of AAssignMethid */,
+  77 /* Group of ? */,
+  3499 /* Id of AAssignMethid */,
   8 /* Color of AAssignMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3435 /* Id of ABraassignMethid */,
+  77 /* Group of ? */,
+  3475 /* Id of ABraassignMethid */,
   8 /* Color of ABraassignMethid */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
-  3011 /* Id of ASignature */,
+  77 /* Group of ? */,
+  3055 /* Id of ASignature */,
   7 /* Color of ASignature */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3023 /* Id of AParam */,
+  76 /* Group of ? */,
+  3067 /* Id of AParam */,
   7 /* Color of AParam */,
   9 /* Group of ? */,
-  82 /* Group of ? */,
-  3079 /* Id of AClosureDecl */,
+  80 /* Group of ? */,
+  3123 /* Id of AClosureDecl */,
   7 /* Color of AClosureDecl */,
   8 /* Group of ? */,
-  79 /* Group of ? */,
-  3003 /* Id of AType */,
+  77 /* Group of ? */,
+  3047 /* Id of AType */,
   7 /* Color of AType */,
   8 /* Group of ? */,
-  83 /* Group of ? */,
-  3047 /* Id of ALabel */,
+  81 /* Group of ? */,
+  3091 /* Id of ALabel */,
   7 /* Color of ALabel */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  3067 /* Id of AExpr */,
+  74 /* Group of ? */,
+  3111 /* Id of AExpr */,
   7 /* Color of AExpr */,
-  77 /* Group of ? */,
-  3447 /* Id of ABlockExpr */,
+  75 /* Group of ? */,
+  3487 /* Id of ABlockExpr */,
   8 /* Color of ABlockExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3207 /* Id of AVardeclExpr */,
+  84 /* Group of ? */,
+  3247 /* Id of AVardeclExpr */,
   8 /* Color of AVardeclExpr */,
   12 /* Group of ? */,
-  87 /* Group of ? */,
-  3267 /* Id of AReturnExpr */,
+  85 /* Group of ? */,
+  3307 /* Id of AReturnExpr */,
   8 /* Color of AReturnExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3043 /* Id of ALabelable */,
+  84 /* Group of ? */,
+  3087 /* Id of ALabelable */,
   5 /* Color of ALabelable */,
   6 /* Group of ? */,
-  69 /* Group of ? */,
-  3671 /* Id of ABreakExpr */,
+  67 /* Group of ? */,
+  3707 /* Id of ABreakExpr */,
   9 /* Color of ABreakExpr */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
-  3491 /* Id of AAbortExpr */,
+  88 /* Group of ? */,
+  3531 /* Id of AAbortExpr */,
   8 /* Color of AAbortExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3655 /* Id of AContinueExpr */,
+  84 /* Group of ? */,
+  3691 /* Id of AContinueExpr */,
   9 /* Color of AContinueExpr */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
-  3643 /* Id of ADoExpr */,
+  88 /* Group of ? */,
+  3679 /* Id of ADoExpr */,
   9 /* Color of ADoExpr */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
-  3371 /* Id of AIfExpr */,
+  88 /* Group of ? */,
+  3411 /* Id of AIfExpr */,
   8 /* Color of AIfExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3367 /* Id of AIfexprExpr */,
+  84 /* Group of ? */,
+  3407 /* Id of AIfexprExpr */,
   8 /* Color of AIfexprExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3535 /* Id of AWhileExpr */,
+  84 /* Group of ? */,
+  3571 /* Id of AWhileExpr */,
   9 /* Color of AWhileExpr */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
-  3591 /* Id of ALoopExpr */,
+  88 /* Group of ? */,
+  3627 /* Id of ALoopExpr */,
   9 /* Color of ALoopExpr */,
   12 /* Group of ? */,
-  90 /* Group of ? */,
-  3623 /* Id of AForExpr */,
+  88 /* Group of ? */,
+  3659 /* Id of AForExpr */,
   9 /* Color of AForExpr */,
   13 /* Group of ? */,
-  92 /* Group of ? */,
-  3467 /* Id of AAssertExpr */,
+  90 /* Group of ? */,
+  3507 /* Id of AAssertExpr */,
   8 /* Color of AAssertExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3463 /* Id of AAssignFormExpr */,
+  84 /* Group of ? */,
+  3503 /* Id of AAssignFormExpr */,
   8 /* Color of AAssignFormExpr */,
   13 /* Group of ? */,
-  87 /* Group of ? */,
-  3271 /* Id of AReassignFormExpr */,
+  85 /* Group of ? */,
+  3311 /* Id of AReassignFormExpr */,
   8 /* Color of AReassignFormExpr */,
   14 /* Group of ? */,
-  89 /* Group of ? */,
-  3579 /* Id of AOnceExpr */,
+  87 /* Group of ? */,
+  3615 /* Id of AOnceExpr */,
   9 /* Color of AOnceExpr */,
   12 /* Group of ? */,
-  89 /* Group of ? */,
-  3747 /* Id of ASendExpr */,
+  87 /* Group of ? */,
+  3779 /* Id of ASendExpr */,
   11 /* Color of ASendExpr */,
   18 /* Group of ? */,
-  110 /* Group of ? */,
-  3771 /* Id of ABinopExpr */,
+  108 /* Group of ? */,
+  3803 /* Id of ABinopExpr */,
   12 /* Color of ABinopExpr */,
   20 /* Group of ? */,
-  115 /* Group of ? */,
-  3443 /* Id of ABoolExpr */,
+  113 /* Group of ? */,
+  3483 /* Id of ABoolExpr */,
   8 /* Color of ABoolExpr */,
-  84 /* Group of ? */,
-  3571 /* Id of AOrExpr */,
+  82 /* Group of ? */,
+  3607 /* Id of AOrExpr */,
   9 /* Color of AOrExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3699 /* Id of AAndExpr */,
+  85 /* Group of ? */,
+  3735 /* Id of AAndExpr */,
   9 /* Color of AAndExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3575 /* Id of AOrElseExpr */,
+  85 /* Group of ? */,
+  3611 /* Id of AOrElseExpr */,
   9 /* Color of AOrElseExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3583 /* Id of ANotExpr */,
+  85 /* Group of ? */,
+  3619 /* Id of ANotExpr */,
   9 /* Color of ANotExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3827 /* Id of AEqExpr */,
+  85 /* Group of ? */,
+  3859 /* Id of AEqExpr */,
   13 /* Color of AEqExpr */,
-  121 /* Group of ? */,
-  3639 /* Id of AEeExpr */,
+  119 /* Group of ? */,
+  3675 /* Id of AEeExpr */,
   9 /* Color of AEeExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3795 /* Id of ANeExpr */,
+  85 /* Group of ? */,
+  3827 /* Id of ANeExpr */,
   13 /* Color of ANeExpr */,
-  121 /* Group of ? */,
-  3803 /* Id of ALtExpr */,
-  13 /* Color of ALtExpr */,
   119 /* Group of ? */,
-  3811 /* Id of ALeExpr */,
+  3835 /* Id of ALtExpr */,
+  13 /* Color of ALtExpr */,
+  117 /* Group of ? */,
+  3843 /* Id of ALeExpr */,
   13 /* Color of ALeExpr */,
-  119 /* Group of ? */,
-  3807 /* Id of ALlExpr */,
+  117 /* Group of ? */,
+  3839 /* Id of ALlExpr */,
   13 /* Color of ALlExpr */,
-  119 /* Group of ? */,
-  3815 /* Id of AGtExpr */,
+  117 /* Group of ? */,
+  3847 /* Id of AGtExpr */,
   13 /* Color of AGtExpr */,
-  119 /* Group of ? */,
-  3823 /* Id of AGeExpr */,
+  117 /* Group of ? */,
+  3855 /* Id of AGeExpr */,
   13 /* Color of AGeExpr */,
-  119 /* Group of ? */,
-  3819 /* Id of AGgExpr */,
+  117 /* Group of ? */,
+  3851 /* Id of AGgExpr */,
   13 /* Color of AGgExpr */,
-  119 /* Group of ? */,
-  3603 /* Id of AIsaExpr */,
+  117 /* Group of ? */,
+  3639 /* Id of AIsaExpr */,
   9 /* Color of AIsaExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3787 /* Id of APlusExpr */,
+  85 /* Group of ? */,
+  3819 /* Id of APlusExpr */,
   13 /* Color of APlusExpr */,
-  119 /* Group of ? */,
-  3799 /* Id of AMinusExpr */,
+  117 /* Group of ? */,
+  3831 /* Id of AMinusExpr */,
   13 /* Color of AMinusExpr */,
-  119 /* Group of ? */,
-  3775 /* Id of AStarshipExpr */,
+  117 /* Group of ? */,
+  3807 /* Id of AStarshipExpr */,
   13 /* Color of AStarshipExpr */,
-  119 /* Group of ? */,
-  3779 /* Id of AStarExpr */,
+  117 /* Group of ? */,
+  3811 /* Id of AStarExpr */,
   13 /* Color of AStarExpr */,
-  119 /* Group of ? */,
-  3783 /* Id of ASlashExpr */,
+  117 /* Group of ? */,
+  3815 /* Id of ASlashExpr */,
   13 /* Color of ASlashExpr */,
-  119 /* Group of ? */,
-  3791 /* Id of APercentExpr */,
+  117 /* Group of ? */,
+  3823 /* Id of APercentExpr */,
   13 /* Color of APercentExpr */,
-  119 /* Group of ? */,
-  3751 /* Id of AUminusExpr */,
+  117 /* Group of ? */,
+  3783 /* Id of AUminusExpr */,
   12 /* Color of AUminusExpr */,
   20 /* Group of ? */,
-  115 /* Group of ? */,
-  3723 /* Id of ANewExpr */,
+  113 /* Group of ? */,
+  3755 /* Id of ANewExpr */,
   10 /* Color of ANewExpr */,
   18 /* Group of ? */,
-  107 /* Group of ? */,
-  3455 /* Id of AAttrFormExpr */,
+  105 /* Group of ? */,
+  3495 /* Id of AAttrFormExpr */,
   5 /* Color of AAttrFormExpr */,
   18 /* Group of ? */,
-  95 /* Group of ? */,
-  3679 /* Id of AAttrExpr */,
+  93 /* Group of ? */,
+  3715 /* Id of AAttrExpr */,
   8 /* Color of AAttrExpr */,
-  100 /* Group of ? */,
-  3683 /* Id of AAttrAssignExpr */,
+  98 /* Group of ? */,
+  3719 /* Id of AAttrAssignExpr */,
   9 /* Color of AAttrAssignExpr */,
-  86 /* Group of ? */,
-  3763 /* Id of ACallFormExpr */,
+  84 /* Group of ? */,
+  3795 /* Id of ACallFormExpr */,
   13 /* Color of ACallFormExpr */,
   20 /* Group of ? */,
-  115 /* Group of ? */,
-  3675 /* Id of AAttrReassignExpr */,
+  113 /* Group of ? */,
+  3711 /* Id of AAttrReassignExpr */,
   9 /* Color of AAttrReassignExpr */,
-  86 /* Group of ? */,
-  3835 /* Id of ACallExpr */,
+  84 /* Group of ? */,
+  3867 /* Id of ACallExpr */,
   14 /* Color of ACallExpr */,
-  120 /* Group of ? */,
-  3839 /* Id of ACallAssignExpr */,
+  118 /* Group of ? */,
+  3871 /* Id of ACallAssignExpr */,
   12 /* Color of ACallAssignExpr */,
-  86 /* Group of ? */,
-  3831 /* Id of ACallReassignExpr */,
+  84 /* Group of ? */,
+  3863 /* Id of ACallReassignExpr */,
   14 /* Color of ACallReassignExpr */,
-  120 /* Group of ? */,
-  3743 /* Id of ASuperExpr */,
+  118 /* Group of ? */,
+  3775 /* Id of ASuperExpr */,
   11 /* Color of ASuperExpr */,
   19 /* Group of ? */,
-  108 /* Group of ? */,
-  3759 /* Id of AInitExpr */,
+  106 /* Group of ? */,
+  3791 /* Id of AInitExpr */,
   12 /* Color of AInitExpr */,
   20 /* Group of ? */,
-  115 /* Group of ? */,
-  3767 /* Id of ABraFormExpr */,
+  113 /* Group of ? */,
+  3799 /* Id of ABraFormExpr */,
   13 /* Color of ABraFormExpr */,
   20 /* Group of ? */,
-  113 /* Group of ? */,
-  3847 /* Id of ABraExpr */,
+  111 /* Group of ? */,
+  3879 /* Id of ABraExpr */,
   14 /* Color of ABraExpr */,
-  117 /* Group of ? */,
-  3851 /* Id of ABraAssignExpr */,
+  115 /* Group of ? */,
+  3883 /* Id of ABraAssignExpr */,
   12 /* Color of ABraAssignExpr */,
-  86 /* Group of ? */,
-  3211 /* Id of AVarFormExpr */,
+  84 /* Group of ? */,
+  3251 /* Id of AVarFormExpr */,
   5 /* Color of AVarFormExpr */,
   12 /* Group of ? */,
-  85 /* Group of ? */,
-  3843 /* Id of ABraReassignExpr */,
+  83 /* Group of ? */,
+  3875 /* Id of ABraReassignExpr */,
   14 /* Color of ABraReassignExpr */,
-  117 /* Group of ? */,
-  3663 /* Id of AClosureCallExpr */,
+  115 /* Group of ? */,
+  3699 /* Id of AClosureCallExpr */,
   8 /* Color of AClosureCallExpr */,
   14 /* Group of ? */,
-  102 /* Group of ? */,
-  3543 /* Id of AVarExpr */,
+  100 /* Group of ? */,
+  3579 /* Id of AVarExpr */,
   8 /* Color of AVarExpr */,
-  89 /* Group of ? */,
-  3547 /* Id of AVarAssignExpr */,
+  87 /* Group of ? */,
+  3583 /* Id of AVarAssignExpr */,
   9 /* Color of AVarAssignExpr */,
-  92 /* Group of ? */,
-  3539 /* Id of AVarReassignExpr */,
+  90 /* Group of ? */,
+  3575 /* Id of AVarReassignExpr */,
   9 /* Color of AVarReassignExpr */,
-  94 /* Group of ? */,
-  3279 /* Id of ARangeExpr */,
+  92 /* Group of ? */,
+  3319 /* Id of ARangeExpr */,
   8 /* Color of ARangeExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3651 /* Id of ACrangeExpr */,
+  84 /* Group of ? */,
+  3687 /* Id of ACrangeExpr */,
   9 /* Color of ACrangeExpr */,
-  91 /* Group of ? */,
-  3567 /* Id of AOrangeExpr */,
+  89 /* Group of ? */,
+  3603 /* Id of AOrangeExpr */,
   9 /* Color of AOrangeExpr */,
-  91 /* Group of ? */,
-  3475 /* Id of AArrayExpr */,
+  89 /* Group of ? */,
+  3515 /* Id of AArrayExpr */,
   8 /* Color of AArrayExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3263 /* Id of ASelfExpr */,
+  85 /* Group of ? */,
+  3303 /* Id of ASelfExpr */,
   8 /* Color of ASelfExpr */,
   12 /* Group of ? */,
-  87 /* Group of ? */,
-  3615 /* Id of AImplicitSelfExpr */,
+  85 /* Group of ? */,
+  3651 /* Id of AImplicitSelfExpr */,
   9 /* Color of AImplicitSelfExpr */,
-  91 /* Group of ? */,
-  3551 /* Id of ATrueExpr */,
+  89 /* Group of ? */,
+  3587 /* Id of ATrueExpr */,
   9 /* Color of ATrueExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3627 /* Id of AFalseExpr */,
+  85 /* Group of ? */,
+  3663 /* Id of AFalseExpr */,
   9 /* Color of AFalseExpr */,
   11 /* Group of ? */,
-  87 /* Group of ? */,
-  3315 /* Id of ANullExpr */,
+  85 /* Group of ? */,
+  3355 /* Id of ANullExpr */,
   8 /* Color of ANullExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3363 /* Id of AIntExpr */,
+  84 /* Group of ? */,
+  3403 /* Id of AIntExpr */,
   8 /* Color of AIntExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3391 /* Id of AFloatExpr */,
+  84 /* Group of ? */,
+  3431 /* Id of AFloatExpr */,
   8 /* Color of AFloatExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3423 /* Id of ACharExpr */,
+  84 /* Group of ? */,
+  3463 /* Id of ACharExpr */,
   8 /* Color of ACharExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3235 /* Id of AStringFormExpr */,
+  84 /* Group of ? */,
+  3275 /* Id of AStringFormExpr */,
   8 /* Color of AStringFormExpr */,
-  86 /* Group of ? */,
-  3555 /* Id of AStringExpr */,
+  84 /* Group of ? */,
+  3591 /* Id of AStringExpr */,
   9 /* Color of AStringExpr */,
   13 /* Group of ? */,
-  89 /* Group of ? */,
-  3559 /* Id of AStartStringExpr */,
+  87 /* Group of ? */,
+  3595 /* Id of AStartStringExpr */,
   9 /* Color of AStartStringExpr */,
   13 /* Group of ? */,
-  89 /* Group of ? */,
-  3587 /* Id of AMidStringExpr */,
+  87 /* Group of ? */,
+  3623 /* Id of AMidStringExpr */,
   9 /* Color of AMidStringExpr */,
   13 /* Group of ? */,
-  89 /* Group of ? */,
-  3635 /* Id of AEndStringExpr */,
+  87 /* Group of ? */,
+  3671 /* Id of AEndStringExpr */,
   9 /* Color of AEndStringExpr */,
   13 /* Group of ? */,
-  89 /* Group of ? */,
-  3227 /* Id of ASuperstringExpr */,
+  87 /* Group of ? */,
+  3267 /* Id of ASuperstringExpr */,
   8 /* Color of ASuperstringExpr */,
   12 /* Group of ? */,
-  87 /* Group of ? */,
-  3563 /* Id of AParExpr */,
+  85 /* Group of ? */,
+  3599 /* Id of AParExpr */,
   9 /* Color of AParExpr */,
-  88 /* Group of ? */,
-  3287 /* Id of AProxyExpr */,
+  86 /* Group of ? */,
+  3327 /* Id of AProxyExpr */,
   8 /* Color of AProxyExpr */,
   11 /* Group of ? */,
-  84 /* Group of ? */,
-  3695 /* Id of AAsCastExpr */,
+  82 /* Group of ? */,
+  3731 /* Id of AAsCastExpr */,
   8 /* Color of AAsCastExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3471 /* Id of AAsNotnullExpr */,
+  84 /* Group of ? */,
+  3511 /* Id of AAsNotnullExpr */,
   8 /* Color of AAsNotnullExpr */,
   11 /* Group of ? */,
-  86 /* Group of ? */,
-  3599 /* Id of AIssetAttrExpr */,
+  84 /* Group of ? */,
+  3635 /* Id of AIssetAttrExpr */,
   8 /* Color of AIssetAttrExpr */,
   20 /* Group of ? */,
-  100 /* Group of ? */,
-  3091 /* Id of AAssignOp */,
+  98 /* Group of ? */,
+  3135 /* Id of AAssignOp */,
   7 /* Color of AAssignOp */,
-  75 /* Group of ? */,
-  3307 /* Id of APlusAssignOp */,
+  73 /* Group of ? */,
+  3347 /* Id of APlusAssignOp */,
   8 /* Color of APlusAssignOp */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3331 /* Id of AMinusAssignOp */,
+  76 /* Group of ? */,
+  3371 /* Id of AMinusAssignOp */,
   8 /* Color of AMinusAssignOp */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3419 /* Id of AClosureDef */,
+  76 /* Group of ? */,
+  3459 /* Id of AClosureDef */,
   7 /* Color of AClosureDef */,
   12 /* Group of ? */,
-  83 /* Group of ? */,
-  3075 /* Id of AClosureId */,
+  81 /* Group of ? */,
+  3119 /* Id of AClosureId */,
   7 /* Color of AClosureId */,
-  75 /* Group of ? */,
-  3259 /* Id of ASimpleClosureId */,
+  73 /* Group of ? */,
+  3299 /* Id of ASimpleClosureId */,
   8 /* Color of ASimpleClosureId */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3431 /* Id of ABreakClosureId */,
+  76 /* Group of ? */,
+  3471 /* Id of ABreakClosureId */,
   8 /* Color of ABreakClosureId */,
   6 /* Group of ? */,
-  78 /* Group of ? */,
-  3031 /* Id of AModuleName */,
+  76 /* Group of ? */,
+  3075 /* Id of AModuleName */,
   7 /* Color of AModuleName */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  3015 /* Id of AQualified */,
+  74 /* Group of ? */,
+  3059 /* Id of AQualified */,
   7 /* Color of AQualified */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  3071 /* Id of ADoc */,
+  74 /* Group of ? */,
+  3115 /* Id of ADoc */,
   7 /* Color of ADoc */,
   6 /* Group of ? */,
-  76 /* Group of ? */,
-  2747 /* Id of Start */,
+  74 /* Group of ? */,
+  2775 /* Id of Start */,
   7 /* Color of Start */,
   6 /* Group of ? */,
-  75 /* Group of ? */,
+  73 /* Group of ? */,
 };
-const char *LOCATE_location = "src/location.nit";
+const char *LOCATE_location = "./location.nit";
 const int SFT_location[8] = {
   43 /* Id of SourceFile */,
   4 /* Color of SourceFile */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2183 /* Id of Location */,
+  47 /* Group of ? */,
+  2199 /* Id of Location */,
   6 /* Color of Location */,
   2 /* Group of ? */,
   63 /* Group of ? */,
@@ -13519,134 +13598,142 @@ const int SFT_location[8] = {
 const char *LOCATE_standard = "./../lib/standard//standard.nit";
 const char *LOCATE_standard___environ = "./../lib/standard//environ.nit";
 const int SFT_standard___environ[2] = {
-  49 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
 };
 const char *LOCATE_standard___symbol = "./../lib/standard//symbol.nit";
 const int SFT_standard___symbol[5] = {
-  120 /* Group of ? */,
+  119 /* Group of ? */,
   31 /* Id of Symbol */,
   4 /* Color of Symbol */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
 };
 const char *LOCATE_standard___string = "./../lib/standard//string.nit";
 const int SFT_standard___string[24] = {
-  3527 /* Id of AbstractString */,
-  14 /* Color of AbstractString */,
+  3239 /* Id of AbstractString */,
+  12 /* Color of AbstractString */,
   3 /* Group of ? */,
-  107 /* Group of ? */,
-  3707 /* Id of String */,
-  7 /* Color of String */,
-  121 /* Group of ? */,
-  3711 /* Id of Buffer */,
-  16 /* Color of Buffer */,
+  106 /* Group of ? */,
+  3535 /* Id of String */,
+  8 /* Color of String */,
+  120 /* Group of ? */,
+  3743 /* Id of Buffer */,
+  14 /* Color of Buffer */,
   4 /* Group of ? */,
   122 /* Group of ? */,
-  36 /* Group of ? */,
+  34 /* Group of ? */,
   69 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   63 /* Group of ? */,
-  87 /* Group of ? */,
+  58 /* Group of ? */,
   -5 /* Id of NativeString */,
   4 /* Color of NativeString */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
   35 /* Id of StringCapable */,
   4 /* Color of StringCapable */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
 };
 const char *LOCATE_standard___collection = "./../lib/standard//collection//collection.nit";
 const char *LOCATE_standard___collection___range = "./../lib/standard//collection//range.nit";
 const int SFT_standard___collection___range[8] = {
-  2047 /* Id of Range */,
+  2059 /* Id of Range */,
   7 /* Color of Range */,
   2 /* Group of ? */,
-  74 /* Group of ? */,
-  2191 /* Id of IteratorRange */,
+  75 /* Group of ? */,
+  2207 /* Id of IteratorRange */,
   5 /* Color of IteratorRange */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
 };
 const char *LOCATE_standard___collection___abstract_collection = "./../lib/standard//collection//abstract_collection.nit";
-const int SFT_standard___collection___abstract_collection[55] = {
-  275 /* Id of Collection */,
+const int SFT_standard___collection___abstract_collection[63] = {
+  283 /* Id of Collection */,
   6 /* Color of Collection */,
   65 /* Group of ? */,
-  2099 /* Id of NaiveCollection */,
+  2111 /* Id of NaiveCollection */,
   7 /* Color of NaiveCollection */,
-  74 /* Group of ? */,
-  191 /* Id of Iterator */,
+  75 /* Group of ? */,
+  199 /* Id of Iterator */,
   4 /* Color of Iterator */,
-  50 /* Group of ? */,
-  2295 /* Id of Container */,
+  48 /* Group of ? */,
+  2323 /* Id of Container */,
   7 /* Color of Container */,
   2 /* Group of ? */,
-  74 /* Group of ? */,
-  2291 /* Id of ContainerIterator */,
+  75 /* Group of ? */,
+  2319 /* Id of ContainerIterator */,
   5 /* Color of ContainerIterator */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
-  355 /* Id of RemovableCollection */,
-  7 /* Color of RemovableCollection */,
-  74 /* Group of ? */,
-  2751 /* Id of SimpleCollection */,
+  52 /* Group of ? */,
+  367 /* Id of RemovableCollection */,
+  8 /* Color of RemovableCollection */,
+  79 /* Group of ? */,
+  2779 /* Id of SimpleCollection */,
   9 /* Color of SimpleCollection */,
-  81 /* Group of ? */,
-  3131 /* Id of Set */,
-  8 /* Color of Set */,
-  61 /* Group of ? */,
-  2119 /* Id of MapRead */,
-  8 /* Color of MapRead */,
-  78 /* Group of ? */,
-  2795 /* Id of Map */,
-  11 /* Color of Map */,
-  88 /* Group of ? */,
-  2123 /* Id of MapIterator */,
-  5 /* Color of MapIterator */,
-  54 /* Group of ? */,
-  2755 /* Id of SequenceRead */,
-  10 /* Color of SequenceRead */,
-  84 /* Group of ? */,
-  3135 /* Id of Sequence */,
-  12 /* Color of Sequence */,
-  92 /* Group of ? */,
-  2835 /* Id of IndexedIterator */,
-  6 /* Color of IndexedIterator */,
-  56 /* Group of ? */,
-  3191 /* Id of CoupleMap */,
-  12 /* Color of CoupleMap */,
-  92 /* Group of ? */,
-  2963 /* Id of CoupleMapIterator */,
-  6 /* Color of CoupleMapIterator */,
+  93 /* Group of ? */,
+  3183 /* Id of Set */,
+  4 /* Color of Set */,
+  47 /* Group of ? */,
+  135 /* Id of MapRead */,
+  4 /* Color of MapRead */,
+  47 /* Group of ? */,
+  2139 /* Id of Map */,
+  6 /* Color of Map */,
+  59 /* Group of ? */,
+  139 /* Id of MapIterator */,
+  4 /* Color of MapIterator */,
+  47 /* Group of ? */,
+  2135 /* Id of MapKeysIterator */,
+  5 /* Color of MapKeysIterator */,
   2 /* Group of ? */,
-  56 /* Group of ? */,
-  259 /* Id of Couple */,
+  52 /* Group of ? */,
+  2131 /* Id of MapValuesIterator */,
+  5 /* Color of MapValuesIterator */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  351 /* Id of SequenceRead */,
+  7 /* Color of SequenceRead */,
+  75 /* Group of ? */,
+  3187 /* Id of Sequence */,
+  11 /* Color of Sequence */,
+  96 /* Group of ? */,
+  2223 /* Id of IndexedIterator */,
+  5 /* Color of IndexedIterator */,
+  52 /* Group of ? */,
+  2991 /* Id of CoupleMap */,
+  7 /* Color of CoupleMap */,
+  63 /* Group of ? */,
+  2315 /* Id of CoupleMapIterator */,
+  5 /* Color of CoupleMapIterator */,
+  2 /* Group of ? */,
+  52 /* Group of ? */,
+  267 /* Id of Couple */,
   4 /* Color of Couple */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
 const char *LOCATE_standard___kernel = "./../lib/standard//kernel.nit";
 const int SFT_standard___kernel[27] = {
   3 /* Id of Object */,
   3 /* Color of Object */,
-  20 /* Group of ? */,
+  18 /* Group of ? */,
   27 /* Id of Sys */,
   4 /* Color of Sys */,
-  54 /* Group of ? */,
-  267 /* Id of Comparable */,
+  52 /* Group of ? */,
+  275 /* Id of Comparable */,
   5 /* Color of Comparable */,
-  54 /* Group of ? */,
-  2271 /* Id of Discrete */,
+  52 /* Group of ? */,
+  2295 /* Id of Discrete */,
   6 /* Color of Discrete */,
   63 /* Group of ? */,
   -13 /* Id of Bool */,
   4 /* Color of Bool */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   -9 /* Id of Float */,
   4 /* Color of Float */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
   -29 /* Id of Int */,
   7 /* Color of Int */,
   72 /* Group of ? */,
@@ -13655,193 +13742,210 @@ const int SFT_standard___kernel[27] = {
   69 /* Group of ? */,
   -1 /* Id of Pointer */,
   4 /* Color of Pointer */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
 const char *LOCATE_standard___collection___list = "./../lib/standard//collection//list.nit";
 const int SFT_standard___collection___list[12] = {
-  3511 /* Id of List */,
-  13 /* Color of List */,
+  3555 /* Id of List */,
+  12 /* Color of List */,
   2 /* Group of ? */,
-  100 /* Group of ? */,
-  3151 /* Id of ListIterator */,
-  7 /* Color of ListIterator */,
+  106 /* Group of ? */,
+  2855 /* Id of ListIterator */,
+  6 /* Color of ListIterator */,
   2 /* Group of ? */,
-  58 /* Group of ? */,
-  2831 /* Id of ListNode */,
+  54 /* Group of ? */,
+  2851 /* Id of ListNode */,
   8 /* Color of ListNode */,
   3 /* Group of ? */,
-  78 /* Group of ? */,
+  79 /* Group of ? */,
 };
 const char *LOCATE_standard___collection___sorter = "./../lib/standard//collection//sorter.nit";
 const int SFT_standard___collection___sorter[6] = {
-  291 /* Id of AbstractSorter */,
+  299 /* Id of AbstractSorter */,
   4 /* Color of AbstractSorter */,
-  49 /* Group of ? */,
-  2307 /* Id of ComparableSorter */,
+  47 /* Group of ? */,
+  2335 /* Id of ComparableSorter */,
   5 /* Color of ComparableSorter */,
-  56 /* Group of ? */,
+  54 /* Group of ? */,
 };
 const char *LOCATE_standard___collection___array = "./../lib/standard//collection//array.nit";
-const int SFT_standard___collection___array[35] = {
-  3199 /* Id of AbstractArrayRead */,
-  13 /* Color of AbstractArrayRead */,
+const int SFT_standard___collection___array[43] = {
+  3039 /* Id of AbstractArrayRead */,
+  10 /* Color of AbstractArrayRead */,
   2 /* Group of ? */,
-  100 /* Group of ? */,
-  3531 /* Id of AbstractArray */,
-  15 /* Color of AbstractArray */,
-  119 /* Group of ? */,
-  3715 /* Id of Array */,
-  5 /* Color of Array */,
+  83 /* Group of ? */,
+  3567 /* Id of AbstractArray */,
+  13 /* Color of AbstractArray */,
+  118 /* Group of ? */,
+  3747 /* Id of Array */,
+  4 /* Color of Array */,
   3 /* Group of ? */,
-  51 /* Group of ? */,
-  3195 /* Id of ArrayIterator */,
-  7 /* Color of ArrayIterator */,
+  47 /* Group of ? */,
+  3031 /* Id of ArrayIterator */,
+  6 /* Color of ArrayIterator */,
   2 /* Group of ? */,
-  58 /* Group of ? */,
-  3519 /* Id of ArraySet */,
+  54 /* Group of ? */,
+  3563 /* Id of ArraySet */,
   10 /* Color of ArraySet */,
   2 /* Group of ? */,
-  84 /* Group of ? */,
-  2335 /* Id of ArraySetIterator */,
+  96 /* Group of ? */,
+  2363 /* Id of ArraySetIterator */,
   5 /* Color of ArraySetIterator */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
-  3523 /* Id of ArrayMap */,
-  13 /* Color of ArrayMap */,
+  52 /* Group of ? */,
+  3235 /* Id of ArrayMap */,
+  8 /* Color of ArrayMap */,
   2 /* Group of ? */,
-  94 /* Group of ? */,
-  49 /* Group of ? */,
+  65 /* Group of ? */,
+  3027 /* Id of ArrayMapKeys */,
+  9 /* Color of ArrayMapKeys */,
+  2 /* Group of ? */,
+  83 /* Group of ? */,
+  3023 /* Id of ArrayMapValues */,
+  9 /* Color of ArrayMapValues */,
+  2 /* Group of ? */,
+  83 /* Group of ? */,
+  47 /* Group of ? */,
   64 /* Group of ? */,
-  287 /* Id of ArrayCapable */,
-  4 /* Color of ArrayCapable */,
-  49 /* Group of ? */,
+  295 /* Id of ArrayCapable */,
+  5 /* Color of ArrayCapable */,
+  56 /* Group of ? */,
   123 /* Id of NativeArray */,
   4 /* Color of NativeArray */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
 const char *LOCATE_standard___collection___hash_collection = "./../lib/standard//collection//hash_collection.nit";
-const int SFT_standard___collection___hash_collection[29] = {
-  2247 /* Id of HashCollection */,
-  5 /* Color of HashCollection */,
+const int SFT_standard___collection___hash_collection[38] = {
+  2271 /* Id of HashCollection */,
+  7 /* Color of HashCollection */,
   2 /* Group of ? */,
-  51 /* Group of ? */,
-  243 /* Id of HashNode */,
+  83 /* Group of ? */,
+  251 /* Id of HashNode */,
   4 /* Color of HashNode */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  3183 /* Id of HashMap */,
-  9 /* Color of HashMap */,
-  61 /* Group of ? */,
-  2243 /* Id of HashMapNode */,
+  47 /* Group of ? */,
+  2971 /* Id of HashMap */,
+  8 /* Color of HashMap */,
+  9 /* Group of ? */,
+  63 /* Group of ? */,
+  2967 /* Id of HashMapKeys */,
+  9 /* Color of HashMapKeys */,
+  2 /* Group of ? */,
+  83 /* Group of ? */,
+  2963 /* Id of HashMapValues */,
+  9 /* Color of HashMapValues */,
+  2 /* Group of ? */,
+  83 /* Group of ? */,
+  2263 /* Id of HashMapNode */,
   5 /* Color of HashMapNode */,
   7 /* Group of ? */,
   55 /* Group of ? */,
-  2943 /* Id of HashMapIterator */,
-  6 /* Color of HashMapIterator */,
+  2267 /* Id of HashMapIterator */,
+  5 /* Color of HashMapIterator */,
   2 /* Group of ? */,
-  56 /* Group of ? */,
-  3515 /* Id of HashSet */,
+  52 /* Group of ? */,
+  3559 /* Id of HashSet */,
   10 /* Color of HashSet */,
-  78 /* Group of ? */,
-  2235 /* Id of HashSetNode */,
+  48 /* Group of ? */,
+  2255 /* Id of HashSetNode */,
   5 /* Color of HashSetNode */,
   55 /* Group of ? */,
-  2239 /* Id of HashSetIterator */,
+  2259 /* Id of HashSetIterator */,
   5 /* Color of HashSetIterator */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
 };
 const char *LOCATE_standard___hash = "./../lib/standard//hash.nit";
 const int SFT_standard___hash[1] = {
-  42 /* Group of ? */,
+  40 /* Group of ? */,
 };
 const char *LOCATE_standard___time = "./../lib/standard//time.nit";
 const int SFT_standard___time[1] = {
-  19 /* Group of ? */,
+  17 /* Group of ? */,
 };
 const char *LOCATE_standard___file = "./../lib/standard//file.nit";
 const int SFT_standard___file[33] = {
-  29 /* Group of ? */,
-  2259 /* Id of FStream */,
+  27 /* Group of ? */,
+  2283 /* Id of FStream */,
   8 /* Color of FStream */,
   2 /* Group of ? */,
-  55 /* Group of ? */,
-  3175 /* Id of IFStream */,
+  53 /* Group of ? */,
+  3223 /* Id of IFStream */,
   9 /* Color of IFStream */,
   6 /* Group of ? */,
-  75 /* Group of ? */,
-  2787 /* Id of OFStream */,
+  73 /* Group of ? */,
+  2811 /* Id of OFStream */,
   7 /* Color of OFStream */,
   4 /* Group of ? */,
-  64 /* Group of ? */,
-  3495 /* Id of Stdin */,
+  62 /* Group of ? */,
+  3539 /* Id of Stdin */,
   10 /* Color of Stdin */,
-  80 /* Group of ? */,
-  3123 /* Id of Stdout */,
+  78 /* Group of ? */,
+  3175 /* Id of Stdout */,
   9 /* Color of Stdout */,
-  69 /* Group of ? */,
-  3127 /* Id of Stderr */,
+  67 /* Group of ? */,
+  3179 /* Id of Stderr */,
   9 /* Color of Stderr */,
-  69 /* Group of ? */,
-  127 /* Group of ? */,
-  57 /* Group of ? */,
+  67 /* Group of ? */,
+  126 /* Group of ? */,
+  55 /* Group of ? */,
   -25 /* Id of FileStat */,
   5 /* Color of FileStat */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
   -21 /* Id of NativeFile */,
   5 /* Color of NativeFile */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
   119 /* Id of NativeFileCapable */,
   4 /* Color of NativeFileCapable */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
 const char *LOCATE_standard___stream = "./../lib/standard//stream.nit";
 const int SFT_standard___stream[31] = {
-  207 /* Id of IOS */,
+  215 /* Id of IOS */,
   5 /* Color of IOS */,
-  58 /* Group of ? */,
-  2207 /* Id of IStream */,
+  56 /* Group of ? */,
+  2227 /* Id of IStream */,
   7 /* Color of IStream */,
-  64 /* Group of ? */,
-  2095 /* Id of OStream */,
+  62 /* Group of ? */,
+  2107 /* Id of OStream */,
   6 /* Color of OStream */,
-  61 /* Group of ? */,
-  2987 /* Id of BufferedIStream */,
+  59 /* Group of ? */,
+  3015 /* Id of BufferedIStream */,
   6 /* Color of BufferedIStream */,
   4 /* Group of ? */,
-  71 /* Group of ? */,
-  2859 /* Id of IOStream */,
+  69 /* Group of ? */,
+  2879 /* Id of IOStream */,
   10 /* Color of IOStream */,
-  77 /* Group of ? */,
-  2263 /* Id of FDStream */,
+  75 /* Group of ? */,
+  2287 /* Id of FDStream */,
   4 /* Color of FDStream */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2951 /* Id of FDIStream */,
+  47 /* Group of ? */,
+  2979 /* Id of FDIStream */,
   9 /* Color of FDIStream */,
   4 /* Group of ? */,
-  71 /* Group of ? */,
-  2947 /* Id of FDOStream */,
+  69 /* Group of ? */,
+  2975 /* Id of FDOStream */,
   8 /* Color of FDOStream */,
   3 /* Group of ? */,
-  55 /* Group of ? */,
-  3187 /* Id of FDIOStream */,
+  53 /* Group of ? */,
+  3231 /* Id of FDIOStream */,
   11 /* Color of FDIOStream */,
-  73 /* Group of ? */,
+  71 /* Group of ? */,
 };
 const char *LOCATE_standard___string_search = "./../lib/standard//string_search.nit";
 const int SFT_standard___string_search[12] = {
   103 /* Id of Pattern */,
   4 /* Color of Pattern */,
-  49 /* Group of ? */,
-  2327 /* Id of BM_Pattern */,
+  47 /* Group of ? */,
+  2355 /* Id of BM_Pattern */,
   5 /* Color of BM_Pattern */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   131 /* Id of Match */,
   4 /* Color of Match */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   135 /* Group of ? */,
 };
 const char *LOCATE_standard___exec = "./../lib/standard//exec.nit";
@@ -13849,216 +13953,218 @@ const int SFT_standard___exec[20] = {
   95 /* Id of Process */,
   4 /* Color of Process */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2851 /* Id of IProcess */,
+  47 /* Group of ? */,
+  2871 /* Id of IProcess */,
   9 /* Color of IProcess */,
   4 /* Group of ? */,
-  74 /* Group of ? */,
-  2783 /* Id of OProcess */,
+  72 /* Group of ? */,
+  2807 /* Id of OProcess */,
   8 /* Color of OProcess */,
   3 /* Group of ? */,
-  71 /* Group of ? */,
-  3163 /* Id of IOProcess */,
+  69 /* Group of ? */,
+  3211 /* Id of IOProcess */,
   11 /* Color of IOProcess */,
-  78 /* Group of ? */,
-  49 /* Group of ? */,
-  61 /* Group of ? */,
+  76 /* Group of ? */,
+  47 /* Group of ? */,
+  59 /* Group of ? */,
   -17 /* Id of NativeProcess */,
   5 /* Color of NativeProcess */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
 };
 const char *LOCATE_standard___math = "./../lib/standard//math.nit";
-const int SFT_standard___math[3] = {
-  85 /* Group of ? */,
-  61 /* Group of ? */,
-  43 /* Group of ? */,
+const int SFT_standard___math[4] = {
+  86 /* Group of ? */,
+  59 /* Group of ? */,
+  74 /* Group of ? */,
+  41 /* Group of ? */,
 };
-const char *LOCATE_parser___tables = "src/parser//tables.nit";
+const char *LOCATE_parser___tables = "./parser//tables.nit";
 const int SFT_parser___tables[3] = {
   23 /* Id of TablesCapable */,
   4 /* Color of TablesCapable */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_mmloader = "src/mmloader.nit";
+const char *LOCATE_mmloader = "./mmloader.nit";
 const int SFT_mmloader[11] = {
-  2111 /* Id of Message */,
+  2123 /* Id of Message */,
   6 /* Color of Message */,
   2 /* Group of ? */,
   63 /* Group of ? */,
-  319 /* Id of ToolContext */,
+  327 /* Id of ToolContext */,
   5 /* Color of ToolContext */,
   16 /* Group of ? */,
-  79 /* Group of ? */,
+  78 /* Group of ? */,
   127 /* Id of ModuleLoader */,
   4 /* Color of ModuleLoader */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_metamodel = "src/metamodel//metamodel.nit";
-const char *LOCATE_metamodel___vararg = "src/metamodel//vararg.nit";
+const char *LOCATE_metamodel = "./metamodel//metamodel.nit";
+const char *LOCATE_metamodel___vararg = "./metamodel//vararg.nit";
 const int SFT_metamodel___vararg[2] = {
   2 /* Group of ? */,
-  52 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_metamodel___genericity = "src/metamodel//genericity.nit";
+const char *LOCATE_metamodel___genericity = "./metamodel//genericity.nit";
 const int SFT_metamodel___genericity[11] = {
-  2 /* Group of ? */,
+  4 /* Group of ? */,
   52 /* Group of ? */,
-  61 /* Group of ? */,
-  2807 /* Id of MMTypeGeneric */,
+  59 /* Group of ? */,
+  2827 /* Id of MMTypeGeneric */,
   6 /* Color of MMTypeGeneric */,
   4 /* Group of ? */,
-  79 /* Group of ? */,
-  2811 /* Id of MMTypeFormalParameter */,
+  77 /* Group of ? */,
+  2831 /* Id of MMTypeFormalParameter */,
   6 /* Color of MMTypeFormalParameter */,
   5 /* Group of ? */,
-  81 /* Group of ? */,
+  79 /* Group of ? */,
 };
-const char *LOCATE_metamodel___type_formal = "src/metamodel//type_formal.nit";
+const char *LOCATE_metamodel___type_formal = "./metamodel//type_formal.nit";
 const int SFT_metamodel___type_formal[5] = {
-  62 /* Group of ? */,
-  2135 /* Id of MMTypeFormal */,
+  60 /* Group of ? */,
+  2151 /* Id of MMTypeFormal */,
   5 /* Color of MMTypeFormal */,
   3 /* Group of ? */,
-  77 /* Group of ? */,
+  75 /* Group of ? */,
 };
-const char *LOCATE_metamodel___inheritance = "src/metamodel//inheritance.nit";
-const int SFT_metamodel___inheritance[18] = {
-  52 /* Group of ? */,
-  4 /* Group of ? */,
+const char *LOCATE_metamodel___inheritance = "./metamodel//inheritance.nit";
+const int SFT_metamodel___inheritance[19] = {
+  47 /* Group of ? */,
+  50 /* Group of ? */,
+  6 /* Group of ? */,
   58 /* Group of ? */,
-  52 /* Group of ? */,
-  49 /* Group of ? */,
-  2167 /* Id of MMImplicitLocalClass */,
+  50 /* Group of ? */,
+  47 /* Group of ? */,
+  2183 /* Id of MMImplicitLocalClass */,
   5 /* Color of MMImplicitLocalClass */,
-  119 /* Group of ? */,
-  2155 /* Id of MMRefineAncestor */,
+  117 /* Group of ? */,
+  2171 /* Id of MMRefineAncestor */,
   5 /* Color of MMRefineAncestor */,
   4 /* Group of ? */,
-  59 /* Group of ? */,
-  2151 /* Id of MMSpecAncestor */,
+  57 /* Group of ? */,
+  2167 /* Id of MMSpecAncestor */,
   5 /* Color of MMSpecAncestor */,
-  59 /* Group of ? */,
-  2171 /* Id of MMDefaultAncestor */,
+  57 /* Group of ? */,
+  2187 /* Id of MMDefaultAncestor */,
   5 /* Color of MMDefaultAncestor */,
-  59 /* Group of ? */,
+  57 /* Group of ? */,
 };
-const char *LOCATE_metamodel___static_type = "src/metamodel//static_type.nit";
+const char *LOCATE_metamodel___static_type = "./metamodel//static_type.nit";
 const int SFT_metamodel___static_type[48] = {
-  7 /* Group of ? */,
+  9 /* Group of ? */,
   74 /* Group of ? */,
   2 /* Group of ? */,
-  53 /* Group of ? */,
-  143 /* Id of MMParam */,
+  51 /* Group of ? */,
+  151 /* Id of MMParam */,
   4 /* Color of MMParam */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  139 /* Id of MMSignature */,
+  47 /* Group of ? */,
+  147 /* Id of MMSignature */,
   4 /* Color of MMSignature */,
   3 /* Group of ? */,
-  58 /* Group of ? */,
+  56 /* Group of ? */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  183 /* Id of MMClosure */,
+  48 /* Group of ? */,
+  191 /* Id of MMClosure */,
   4 /* Color of MMClosure */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  187 /* Id of MMAncestor */,
+  47 /* Group of ? */,
+  195 /* Id of MMAncestor */,
   4 /* Color of MMAncestor */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  135 /* Id of MMType */,
+  48 /* Group of ? */,
+  143 /* Id of MMType */,
   4 /* Color of MMType */,
   2 /* Group of ? */,
-  63 /* Group of ? */,
-  2159 /* Id of MMNullableType */,
+  61 /* Group of ? */,
+  2175 /* Id of MMNullableType */,
   5 /* Color of MMNullableType */,
   3 /* Group of ? */,
-  77 /* Group of ? */,
-  2139 /* Id of MMTypeClass */,
+  75 /* Group of ? */,
+  2155 /* Id of MMTypeClass */,
   5 /* Color of MMTypeClass */,
   3 /* Group of ? */,
-  77 /* Group of ? */,
-  2803 /* Id of MMTypeSimpleClass */,
+  75 /* Group of ? */,
+  2823 /* Id of MMTypeSimpleClass */,
   6 /* Color of MMTypeSimpleClass */,
-  79 /* Group of ? */,
-  2131 /* Id of MMTypeNone */,
+  77 /* Group of ? */,
+  2147 /* Id of MMTypeNone */,
   5 /* Color of MMTypeNone */,
   3 /* Group of ? */,
-  77 /* Group of ? */,
+  75 /* Group of ? */,
   2 /* Group of ? */,
-  56 /* Group of ? */,
-  159 /* Id of MMImportedCast */,
+  54 /* Group of ? */,
+  167 /* Id of MMImportedCast */,
   4 /* Color of MMImportedCast */,
   3 /* Group of ? */,
-  63 /* Group of ? */,
-  87 /* Group of ? */,
+  61 /* Group of ? */,
+  85 /* Group of ? */,
 };
-const char *LOCATE_metamodel___abstractmetamodel = "src/metamodel//abstractmetamodel.nit";
+const char *LOCATE_metamodel___abstractmetamodel = "./metamodel//abstractmetamodel.nit";
 const int SFT_metamodel___abstractmetamodel[41] = {
-  179 /* Id of MMContext */,
+  187 /* Id of MMContext */,
   4 /* Color of MMContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  175 /* Id of MMDirectory */,
+  48 /* Group of ? */,
+  183 /* Id of MMDirectory */,
   4 /* Color of MMDirectory */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  147 /* Id of MMModule */,
+  47 /* Group of ? */,
+  155 /* Id of MMModule */,
   4 /* Color of MMModule */,
   3 /* Group of ? */,
-  58 /* Group of ? */,
-  167 /* Id of MMGlobalClass */,
+  56 /* Group of ? */,
+  175 /* Id of MMGlobalClass */,
   4 /* Color of MMGlobalClass */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  155 /* Id of MMLocalClass */,
+  48 /* Group of ? */,
+  163 /* Id of MMLocalClass */,
   4 /* Color of MMLocalClass */,
-  9 /* Group of ? */,
+  11 /* Group of ? */,
   78 /* Group of ? */,
-  163 /* Id of MMGlobalProperty */,
+  171 /* Id of MMGlobalProperty */,
   4 /* Color of MMGlobalProperty */,
   2 /* Group of ? */,
-  51 /* Group of ? */,
-  151 /* Id of MMLocalProperty */,
+  49 /* Group of ? */,
+  159 /* Id of MMLocalProperty */,
   4 /* Color of MMLocalProperty */,
   4 /* Group of ? */,
-  56 /* Group of ? */,
-  2179 /* Id of MMAttribute */,
+  54 /* Group of ? */,
+  2195 /* Id of MMAttribute */,
   5 /* Color of MMAttribute */,
-  72 /* Group of ? */,
-  171 /* Id of MMExplicitImport */,
+  70 /* Group of ? */,
+  179 /* Id of MMExplicitImport */,
   4 /* Color of MMExplicitImport */,
   3 /* Group of ? */,
-  53 /* Group of ? */,
-  2163 /* Id of MMMethod */,
+  51 /* Group of ? */,
+  2179 /* Id of MMMethod */,
   5 /* Color of MMMethod */,
-  88 /* Group of ? */,
-  2175 /* Id of MMConcreteClass */,
+  86 /* Group of ? */,
+  2191 /* Id of MMConcreteClass */,
   5 /* Color of MMConcreteClass */,
-  123 /* Group of ? */,
+  121 /* Group of ? */,
 };
-const char *LOCATE_metamodel___partial_order = "src/metamodel//partial_order.nit";
+const char *LOCATE_metamodel___partial_order = "./metamodel//partial_order.nit";
 const int SFT_metamodel___partial_order[8] = {
-  2067 /* Id of PartialOrder */,
+  2079 /* Id of PartialOrder */,
   7 /* Color of PartialOrder */,
   2 /* Group of ? */,
-  74 /* Group of ? */,
+  75 /* Group of ? */,
   107 /* Id of PartialOrderElement */,
   4 /* Color of PartialOrderElement */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_metamodel___virtualtype = "src/metamodel//virtualtype.nit";
+const char *LOCATE_metamodel___virtualtype = "./metamodel//virtualtype.nit";
 const int SFT_metamodel___virtualtype[10] = {
-  50 /* Group of ? */,
-  2127 /* Id of MMTypeProperty */,
+  48 /* Group of ? */,
+  2143 /* Id of MMTypeProperty */,
   5 /* Color of MMTypeProperty */,
   10 /* Group of ? */,
-  71 /* Group of ? */,
-  2799 /* Id of MMVirtualType */,
+  69 /* Group of ? */,
+  2819 /* Id of MMVirtualType */,
   6 /* Color of MMVirtualType */,
   5 /* Group of ? */,
-  81 /* Group of ? */,
+  79 /* Group of ? */,
   105 /* Group of ? */,
 };
 const char *LOCATE_opts = "./../lib/opts.nit";
@@ -14066,769 +14172,776 @@ const int SFT_opts[34] = {
   115 /* Id of Option */,
   4 /* Color of Option */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2079 /* Id of OptionText */,
+  47 /* Group of ? */,
+  2091 /* Id of OptionText */,
   5 /* Color of OptionText */,
   63 /* Group of ? */,
-  2091 /* Id of OptionBool */,
+  2103 /* Id of OptionBool */,
   5 /* Color of OptionBool */,
   63 /* Group of ? */,
-  2087 /* Id of OptionCount */,
+  2099 /* Id of OptionCount */,
   5 /* Color of OptionCount */,
   63 /* Group of ? */,
-  2083 /* Id of OptionParameter */,
+  2095 /* Id of OptionParameter */,
   5 /* Color of OptionParameter */,
   63 /* Group of ? */,
-  2767 /* Id of OptionString */,
+  2791 /* Id of OptionString */,
   6 /* Color of OptionString */,
   66 /* Group of ? */,
-  2775 /* Id of OptionEnum */,
+  2799 /* Id of OptionEnum */,
   6 /* Color of OptionEnum */,
   7 /* Group of ? */,
   66 /* Group of ? */,
-  2771 /* Id of OptionInt */,
+  2795 /* Id of OptionInt */,
   6 /* Color of OptionInt */,
   66 /* Group of ? */,
-  2779 /* Id of OptionArray */,
+  2803 /* Id of OptionArray */,
   6 /* Color of OptionArray */,
   7 /* Group of ? */,
   66 /* Group of ? */,
   111 /* Id of OptionContext */,
   4 /* Color of OptionContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_syntax___icode_generation = "src/syntax//icode_generation.nit";
-const int SFT_syntax___icode_generation[25] = {
-  2347 /* Id of A2IContext */,
+const char *LOCATE_primitive_info = "./primitive_info.nit";
+const int SFT_primitive_info[8] = {
+  2 /* Group of ? */,
+  50 /* Group of ? */,
+  99 /* Id of PrimitiveInfo */,
+  4 /* Color of PrimitiveInfo */,
+  2 /* Group of ? */,
+  47 /* Group of ? */,
+  54 /* Group of ? */,
+  83 /* Group of ? */,
+};
+const char *LOCATE_syntax___icode_generation = "./syntax//icode_generation.nit";
+const int SFT_syntax___icode_generation[27] = {
+  2375 /* Id of A2IContext */,
   5 /* Color of A2IContext */,
   6 /* Group of ? */,
-  73 /* Group of ? */,
+  71 /* Group of ? */,
   4 /* Group of ? */,
-  54 /* Group of ? */,
-  99 /* Group of ? */,
+  52 /* Group of ? */,
+  97 /* Group of ? */,
   10 /* Group of ? */,
-  73 /* Group of ? */,
+  71 /* Group of ? */,
   10 /* Group of ? */,
-  99 /* Group of ? */,
-  3099 /* Id of A2IVisitor */,
+  97 /* Group of ? */,
+  3143 /* Id of A2IVisitor */,
   6 /* Color of A2IVisitor */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
-  66 /* Group of ? */,
-  99 /* Group of ? */,
-  93 /* Group of ? */,
-  82 /* Group of ? */,
-  78 /* Group of ? */,
+  81 /* Group of ? */,
+  64 /* Group of ? */,
+  97 /* Group of ? */,
+  91 /* Group of ? */,
+  80 /* Group of ? */,
+  98 /* Group of ? */,
+  98 /* Group of ? */,
+  76 /* Group of ? */,
   11 /* Group of ? */,
-  84 /* Group of ? */,
-  92 /* Group of ? */,
+  82 /* Group of ? */,
+  90 /* Group of ? */,
   7 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
 };
-const char *LOCATE_icode = "src/icode//icode.nit";
-const char *LOCATE_icode___icode_tools = "src/icode//icode_tools.nit";
+const char *LOCATE_icode = "./icode//icode.nit";
+const char *LOCATE_icode___icode_tools = "./icode//icode_tools.nit";
 const int SFT_icode___icode_tools[12] = {
-  215 /* Id of ICodeVisitor */,
+  223 /* Id of ICodeVisitor */,
   4 /* Color of ICodeVisitor */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
-  219 /* Id of ICodeDupContext */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
+  227 /* Id of ICodeDupContext */,
   4 /* Color of ICodeDupContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  55 /* Group of ? */,
-  66 /* Group of ? */,
-  71 /* Group of ? */,
+  47 /* Group of ? */,
+  53 /* Group of ? */,
+  64 /* Group of ? */,
+  69 /* Group of ? */,
 };
-const char *LOCATE_icode___icode_builder = "src/icode//icode_builder.nit";
+const char *LOCATE_icode___icode_builder = "./icode//icode_builder.nit";
 const int SFT_icode___icode_builder[5] = {
-  227 /* Id of ICodeBuilder */,
+  235 /* Id of ICodeBuilder */,
   4 /* Color of ICodeBuilder */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  50 /* Group of ? */,
+  48 /* Group of ? */,
+  48 /* Group of ? */,
 };
-const char *LOCATE_icode___icode_base = "src/icode//icode_base.nit";
+const char *LOCATE_icode___icode_base = "./icode//icode_base.nit";
 const int SFT_icode___icode_base[148] = {
-  203 /* Id of IRegister */,
+  211 /* Id of IRegister */,
   4 /* Color of IRegister */,
   9 /* Group of ? */,
-  57 /* Group of ? */,
-  211 /* Id of IEscapeMark */,
+  55 /* Group of ? */,
+  219 /* Id of IEscapeMark */,
   4 /* Color of IEscapeMark */,
-  49 /* Group of ? */,
-  235 /* Id of IClosureDecl */,
+  47 /* Group of ? */,
+  243 /* Id of IClosureDecl */,
   4 /* Color of IClosureDecl */,
   2 /* Group of ? */,
-  50 /* Group of ? */,
-  199 /* Id of IRoutine */,
+  48 /* Group of ? */,
+  207 /* Id of IRoutine */,
   4 /* Color of IRoutine */,
   4 /* Group of ? */,
-  57 /* Group of ? */,
-  2231 /* Id of IClosureDef */,
+  55 /* Group of ? */,
+  2251 /* Id of IClosureDef */,
   5 /* Color of IClosureDef */,
-  71 /* Group of ? */,
-  231 /* Id of ICode */,
+  69 /* Group of ? */,
+  239 /* Id of ICode */,
   4 /* Color of ICode */,
   2 /* Group of ? */,
-  57 /* Group of ? */,
-  2227 /* Id of ICode0 */,
+  55 /* Group of ? */,
+  2247 /* Id of ICode0 */,
   5 /* Color of ICode0 */,
-  65 /* Group of ? */,
-  2223 /* Id of ICode1 */,
+  63 /* Group of ? */,
+  2243 /* Id of ICode1 */,
   5 /* Color of ICode1 */,
   4 /* Group of ? */,
-  65 /* Group of ? */,
-  2219 /* Id of ICode2 */,
+  63 /* Group of ? */,
+  2239 /* Id of ICode2 */,
   5 /* Color of ICode2 */,
   4 /* Group of ? */,
-  65 /* Group of ? */,
-  2215 /* Id of ICodeN */,
+  63 /* Group of ? */,
+  2235 /* Id of ICodeN */,
   5 /* Color of ICodeN */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2847 /* Id of ISeq */,
+  64 /* Group of ? */,
+  2867 /* Id of ISeq */,
   6 /* Color of ISeq */,
   4 /* Group of ? */,
-  67 /* Group of ? */,
-  3171 /* Id of ILoop */,
+  65 /* Group of ? */,
+  3219 /* Id of ILoop */,
   7 /* Color of ILoop */,
-  72 /* Group of ? */,
-  2887 /* Id of IIf */,
+  70 /* Group of ? */,
+  2907 /* Id of IIf */,
   6 /* Color of IIf */,
   5 /* Group of ? */,
-  68 /* Group of ? */,
-  2899 /* Id of IEscape */,
+  66 /* Group of ? */,
+  2919 /* Id of IEscape */,
   6 /* Color of IEscape */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2939 /* Id of IAbort */,
+  64 /* Group of ? */,
+  2959 /* Id of IAbort */,
   6 /* Color of IAbort */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2935 /* Id of IAbsCall */,
+  64 /* Group of ? */,
+  2955 /* Id of IAbsCall */,
   6 /* Color of IAbsCall */,
   6 /* Group of ? */,
-  72 /* Group of ? */,
-  3179 /* Id of ICall */,
+  70 /* Group of ? */,
+  3227 /* Id of ICall */,
   7 /* Color of ICall */,
   75 /* Group of ? */,
-  3155 /* Id of ISuper */,
+  3203 /* Id of ISuper */,
   7 /* Color of ISuper */,
   75 /* Group of ? */,
-  3167 /* Id of INew */,
+  3215 /* Id of INew */,
   7 /* Color of INew */,
-  7 /* Group of ? */,
+  8 /* Group of ? */,
   75 /* Group of ? */,
-  2931 /* Id of IAllocateInstance */,
+  2951 /* Id of IAllocateInstance */,
   6 /* Color of IAllocateInstance */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  3159 /* Id of IStaticCall */,
+  64 /* Group of ? */,
+  3207 /* Id of IStaticCall */,
   7 /* Color of IStaticCall */,
   75 /* Group of ? */,
-  2907 /* Id of ICheckInstance */,
+  2927 /* Id of ICheckInstance */,
   6 /* Color of ICheckInstance */,
   5 /* Group of ? */,
-  68 /* Group of ? */,
-  2883 /* Id of IInitAttributes */,
+  66 /* Group of ? */,
+  2903 /* Id of IInitAttributes */,
   6 /* Color of IInitAttributes */,
   5 /* Group of ? */,
-  68 /* Group of ? */,
-  2903 /* Id of IClosCall */,
+  66 /* Group of ? */,
+  2923 /* Id of IClosCall */,
   6 /* Color of IClosCall */,
   6 /* Group of ? */,
-  72 /* Group of ? */,
-  2867 /* Id of INative */,
+  70 /* Group of ? */,
+  2887 /* Id of INative */,
   6 /* Color of INative */,
   6 /* Group of ? */,
-  73 /* Group of ? */,
-  2879 /* Id of IIntValue */,
+  71 /* Group of ? */,
+  2899 /* Id of IIntValue */,
   6 /* Color of IIntValue */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2915 /* Id of IBoolValue */,
+  64 /* Group of ? */,
+  2935 /* Id of IBoolValue */,
   6 /* Color of IBoolValue */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2843 /* Id of IStringValue */,
+  64 /* Group of ? */,
+  2863 /* Id of IStringValue */,
   6 /* Color of IStringValue */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2895 /* Id of IFloatValue */,
+  64 /* Group of ? */,
+  2915 /* Id of IFloatValue */,
   6 /* Color of IFloatValue */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2911 /* Id of ICharValue */,
+  64 /* Group of ? */,
+  2931 /* Id of ICharValue */,
   6 /* Color of ICharValue */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2871 /* Id of IMove */,
+  64 /* Group of ? */,
+  2891 /* Id of IMove */,
   6 /* Color of IMove */,
-  68 /* Group of ? */,
-  2923 /* Id of IAttrRead */,
+  66 /* Group of ? */,
+  2943 /* Id of IAttrRead */,
   6 /* Color of IAttrRead */,
   5 /* Group of ? */,
-  68 /* Group of ? */,
-  2919 /* Id of IAttrWrite */,
+  66 /* Group of ? */,
+  2939 /* Id of IAttrWrite */,
   6 /* Color of IAttrWrite */,
   6 /* Group of ? */,
-  69 /* Group of ? */,
-  2927 /* Id of IAttrIsset */,
+  67 /* Group of ? */,
+  2947 /* Id of IAttrIsset */,
   6 /* Color of IAttrIsset */,
   5 /* Group of ? */,
-  68 /* Group of ? */,
-  2839 /* Id of ITypeCheck */,
+  66 /* Group of ? */,
+  2859 /* Id of ITypeCheck */,
   6 /* Color of ITypeCheck */,
-  5 /* Group of ? */,
-  68 /* Group of ? */,
-  2875 /* Id of IIs */,
+  6 /* Group of ? */,
+  67 /* Group of ? */,
+  2895 /* Id of IIs */,
   6 /* Color of IIs */,
-  69 /* Group of ? */,
-  2863 /* Id of INot */,
+  67 /* Group of ? */,
+  2883 /* Id of INot */,
   6 /* Color of INot */,
-  68 /* Group of ? */,
-  2855 /* Id of IOnce */,
+  66 /* Group of ? */,
+  2875 /* Id of IOnce */,
   6 /* Color of IOnce */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  2891 /* Id of IHasClos */,
+  64 /* Group of ? */,
+  2911 /* Id of IHasClos */,
   6 /* Color of IHasClos */,
   4 /* Group of ? */,
-  66 /* Group of ? */,
-  71 /* Group of ? */,
-  94 /* Group of ? */,
+  64 /* Group of ? */,
+  69 /* Group of ? */,
+  92 /* Group of ? */,
 };
-const char *LOCATE_syntax___typing = "src/syntax//typing.nit";
+const char *LOCATE_syntax___typing = "./syntax//typing.nit";
 const int SFT_syntax___typing[55] = {
-  100 /* Group of ? */,
-  2351 /* Id of TypingVisitor */,
+  98 /* Group of ? */,
+  2379 /* Id of TypingVisitor */,
   6 /* Color of TypingVisitor */,
   7 /* Group of ? */,
-  83 /* Group of ? */,
-  67 /* Group of ? */,
-  86 /* Group of ? */,
+  81 /* Group of ? */,
+  65 /* Group of ? */,
+  84 /* Group of ? */,
   7 /* Group of ? */,
+  98 /* Group of ? */,
+  93 /* Group of ? */,
+  94 /* Group of ? */,
   100 /* Group of ? */,
-  95 /* Group of ? */,
-  96 /* Group of ? */,
-  102 /* Group of ? */,
-  100 /* Group of ? */,
+  99 /* Group of ? */,
   13 /* Group of ? */,
-  85 /* Group of ? */,
+  83 /* Group of ? */,
   11 /* Group of ? */,
   7 /* Group of ? */,
-  79 /* Group of ? */,
+  77 /* Group of ? */,
   11 /* Group of ? */,
-  3483 /* Id of AAbsControl */,
+  3523 /* Id of AAbsControl */,
   8 /* Color of AAbsControl */,
   11 /* Group of ? */,
-  84 /* Group of ? */,
+  82 /* Group of ? */,
   12 /* Group of ? */,
-  88 /* Group of ? */,
+  86 /* Group of ? */,
   11 /* Group of ? */,
   13 /* Group of ? */,
-  87 /* Group of ? */,
-  74 /* Group of ? */,
+  85 /* Group of ? */,
+  72 /* Group of ? */,
   11 /* Group of ? */,
   11 /* Group of ? */,
-  84 /* Group of ? */,
+  82 /* Group of ? */,
   18 /* Group of ? */,
-  74 /* Group of ? */,
-  79 /* Group of ? */,
+  72 /* Group of ? */,
+  77 /* Group of ? */,
   16 /* Group of ? */,
-  92 /* Group of ? */,
+  90 /* Group of ? */,
   11 /* Group of ? */,
-  93 /* Group of ? */,
+  91 /* Group of ? */,
   16 /* Group of ? */,
-  99 /* Group of ? */,
-  69 /* Group of ? */,
-  105 /* Group of ? */,
+  97 /* Group of ? */,
+  67 /* Group of ? */,
+  103 /* Group of ? */,
   6 /* Group of ? */,
-  117 /* Group of ? */,
-  117 /* Group of ? */,
-  113 /* Group of ? */,
+  115 /* Group of ? */,
+  115 /* Group of ? */,
+  111 /* Group of ? */,
   13 /* Group of ? */,
-  74 /* Group of ? */,
+  72 /* Group of ? */,
   8 /* Group of ? */,
-  75 /* Group of ? */,
-  3219 /* Id of ATypeCheckExpr */,
+  73 /* Group of ? */,
+  3259 /* Id of ATypeCheckExpr */,
   5 /* Color of ATypeCheckExpr */,
-  69 /* Group of ? */,
-  86 /* Group of ? */,
+  67 /* Group of ? */,
+  84 /* Group of ? */,
 };
-const char *LOCATE_syntax___scope = "src/syntax//scope.nit";
+const char *LOCATE_syntax___scope = "./syntax//scope.nit";
 const int SFT_syntax___scope[23] = {
   55 /* Id of ScopeContext */,
   4 /* Color of ScopeContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   59 /* Id of ScopeBlock */,
   4 /* Color of ScopeBlock */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2267 /* Id of EscapableBlock */,
+  47 /* Group of ? */,
+  2291 /* Id of EscapableBlock */,
   5 /* Color of EscapableBlock */,
   8 /* Group of ? */,
-  62 /* Group of ? */,
-  2991 /* Id of BreakOnlyEscapableBlock */,
+  60 /* Group of ? */,
+  3019 /* Id of BreakOnlyEscapableBlock */,
   6 /* Color of BreakOnlyEscapableBlock */,
-  69 /* Group of ? */,
-  2955 /* Id of EscapableClosure */,
+  67 /* Group of ? */,
+  2983 /* Id of EscapableClosure */,
   6 /* Color of EscapableClosure */,
   10 /* Group of ? */,
-  69 /* Group of ? */,
-  3399 /* Id of AEscapeExpr */,
+  67 /* Group of ? */,
+  3439 /* Id of AEscapeExpr */,
   8 /* Color of AEscapeExpr */,
   11 /* Group of ? */,
-  84 /* Group of ? */,
+  82 /* Group of ? */,
 };
-const char *LOCATE_syntax___flow = "src/syntax//flow.nit";
+const char *LOCATE_syntax___flow = "./syntax//flow.nit";
 const int SFT_syntax___flow[20] = {
-  255 /* Id of FlowContext */,
+  263 /* Id of FlowContext */,
   4 /* Color of FlowContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  351 /* Id of RootFlowContext */,
+  47 /* Group of ? */,
+  363 /* Id of RootFlowContext */,
   5 /* Color of RootFlowContext */,
-  64 /* Group of ? */,
-  335 /* Id of SubFlowContext */,
+  62 /* Group of ? */,
+  343 /* Id of SubFlowContext */,
   5 /* Color of SubFlowContext */,
   7 /* Group of ? */,
-  64 /* Group of ? */,
-  2983 /* Id of CastFlowContext */,
+  62 /* Group of ? */,
+  3011 /* Id of CastFlowContext */,
   6 /* Color of CastFlowContext */,
   8 /* Group of ? */,
-  67 /* Group of ? */,
-  2115 /* Id of MergeFlowContext */,
+  65 /* Group of ? */,
+  2127 /* Id of MergeFlowContext */,
   5 /* Color of MergeFlowContext */,
   7 /* Group of ? */,
-  64 /* Group of ? */,
-  49 /* Group of ? */,
-};
-const char *LOCATE_primitive_info = "src/primitive_info.nit";
-const int SFT_primitive_info[7] = {
-  20 /* Group of ? */,
-  107 /* Group of ? */,
-  99 /* Id of PrimitiveInfo */,
-  4 /* Color of PrimitiveInfo */,
-  2 /* Group of ? */,
-  49 /* Group of ? */,
-  56 /* Group of ? */,
+  62 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_nit_version = "src/nit_version.nit";
+const char *LOCATE_nit_version = "./nit_version.nit";
 const int SFT_nit_version[1] = {
-  18 /* Group of ? */,
+  16 /* Group of ? */,
 };
-const char *LOCATE_separate_options = "src/separate_options.nit";
+const char *LOCATE_separate_options = "./separate_options.nit";
 const int SFT_separate_options[3] = {
   6 /* Group of ? */,
-  57 /* Group of ? */,
-  87 /* Group of ? */,
+  56 /* Group of ? */,
+  85 /* Group of ? */,
 };
-const char *LOCATE_native_interface = "src/native_interface//native_interface.nit";
+const char *LOCATE_native_interface = "./native_interface//native_interface.nit";
 const int SFT_native_interface[1] = {
-  88 /* Group of ? */,
+  86 /* Group of ? */,
 };
-const char *LOCATE_native_interface___frontier = "src/native_interface//frontier.nit";
+const char *LOCATE_native_interface___frontier = "./native_interface//frontier.nit";
 const int SFT_native_interface___frontier[12] = {
-  89 /* Group of ? */,
-  96 /* Group of ? */,
-  109 /* Group of ? */,
-  49 /* Group of ? */,
-  251 /* Id of FrontierVisitor */,
+  87 /* Group of ? */,
+  94 /* Group of ? */,
+  107 /* Group of ? */,
+  47 /* Group of ? */,
+  259 /* Id of FrontierVisitor */,
   4 /* Color of FrontierVisitor */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  119 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
+  118 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_native_interface___ni_tools = "src/native_interface//ni_tools.nit";
+const char *LOCATE_native_interface___ni_tools = "./native_interface//ni_tools.nit";
 const int SFT_native_interface___ni_tools[4] = {
-  247 /* Id of FunctionCompiler */,
+  255 /* Id of FunctionCompiler */,
   4 /* Color of FunctionCompiler */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_compiling = "src/compiling//compiling.nit";
+const char *LOCATE_compiling = "./compiling//compiling.nit";
 const int SFT_compiling[3] = {
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  80 /* Group of ? */,
+  47 /* Group of ? */,
+  78 /* Group of ? */,
 };
-const char *LOCATE_compiling___icode_generator = "src/compiling//icode_generator.nit";
+const char *LOCATE_compiling___icode_generator = "./compiling//icode_generator.nit";
 const int SFT_compiling___icode_generator[7] = {
-  54 /* Group of ? */,
-  2255 /* Id of FileICodeDumper */,
+  52 /* Group of ? */,
+  2279 /* Id of FileICodeDumper */,
   5 /* Color of FileICodeDumper */,
   10 /* Group of ? */,
-  63 /* Group of ? */,
-  110 /* Group of ? */,
-  84 /* Group of ? */,
+  61 /* Group of ? */,
+  108 /* Group of ? */,
+  82 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_base = "src/compiling//compiling_base.nit";
+const char *LOCATE_compiling___compiling_base = "./compiling//compiling_base.nit";
 const int SFT_compiling___compiling_base[18] = {
   40 /* Group of ? */,
-  113 /* Group of ? */,
-  283 /* Id of CProgram */,
+  112 /* Group of ? */,
+  291 /* Id of CProgram */,
   4 /* Color of CProgram */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  263 /* Id of CompilerVisitor */,
+  47 /* Group of ? */,
+  271 /* Id of CompilerVisitor */,
   4 /* Color of CompilerVisitor */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  64 /* Group of ? */,
+  47 /* Group of ? */,
+  62 /* Group of ? */,
   10 /* Group of ? */,
-  70 /* Group of ? */,
+  68 /* Group of ? */,
   20 /* Group of ? */,
-  86 /* Group of ? */,
-  111 /* Group of ? */,
+  84 /* Group of ? */,
+  109 /* Group of ? */,
   9 /* Group of ? */,
-  69 /* Group of ? */,
+  67 /* Group of ? */,
 };
-const char *LOCATE_utils = "src/utils.nit";
+const char *LOCATE_utils = "./utils.nit";
 const int SFT_utils[1] = {
-  47 /* Group of ? */,
+  45 /* Group of ? */,
 };
-const char *LOCATE_program = "src/program.nit";
+const char *LOCATE_program = "./program.nit";
 const int SFT_program[8] = {
   38 /* Group of ? */,
-  109 /* Group of ? */,
+  108 /* Group of ? */,
   91 /* Id of Program */,
   4 /* Color of Program */,
   4 /* Group of ? */,
-  64 /* Group of ? */,
+  62 /* Group of ? */,
   22 /* Group of ? */,
-  112 /* Group of ? */,
+  110 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_writer = "src/compiling//compiling_writer.nit";
+const char *LOCATE_compiling___compiling_writer = "./compiling//compiling_writer.nit";
 const int SFT_compiling___compiling_writer[16] = {
   11 /* Id of Writer */,
   4 /* Color of Writer */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   7 /* Id of WriterNode */,
   4 /* Color of WriterNode */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  311 /* Id of WriterCoreNode */,
+  47 /* Group of ? */,
+  319 /* Id of WriterCoreNode */,
   5 /* Color of WriterCoreNode */,
   3 /* Group of ? */,
-  52 /* Group of ? */,
-  307 /* Id of WriterStrings */,
+  50 /* Group of ? */,
+  315 /* Id of WriterStrings */,
   5 /* Color of WriterStrings */,
   3 /* Group of ? */,
-  52 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_analysis = "src/analysis//analysis.nit";
+const char *LOCATE_analysis = "./analysis//analysis.nit";
 const int SFT_analysis[4] = {
   10 /* Group of ? */,
-  67 /* Group of ? */,
-  55 /* Group of ? */,
-  52 /* Group of ? */,
+  66 /* Group of ? */,
+  53 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_analysis___icode_dump = "src/analysis//icode_dump.nit";
+const char *LOCATE_analysis___icode_dump = "./analysis//icode_dump.nit";
 const int SFT_analysis___icode_dump[8] = {
-  53 /* Group of ? */,
-  49 /* Group of ? */,
-  223 /* Id of ICodeDumper */,
+  51 /* Group of ? */,
+  47 /* Group of ? */,
+  231 /* Id of ICodeDumper */,
   4 /* Color of ICodeDumper */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  53 /* Group of ? */,
-  65 /* Group of ? */,
+  47 /* Group of ? */,
+  51 /* Group of ? */,
+  63 /* Group of ? */,
 };
-const char *LOCATE_analysis___allocate_iregister_slots = "src/analysis//allocate_iregister_slots.nit";
+const char *LOCATE_analysis___allocate_iregister_slots = "./analysis//allocate_iregister_slots.nit";
 const int SFT_analysis___allocate_iregister_slots[12] = {
-  2211 /* Id of IRegisterSlotAllocationVisitor */,
+  2231 /* Id of IRegisterSlotAllocationVisitor */,
   5 /* Color of IRegisterSlotAllocationVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
   47 /* Id of SlotGroup */,
   4 /* Color of SlotGroup */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
   2 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
+  47 /* Group of ? */,
 };
-const char *LOCATE_analysis___inline_methods = "src/analysis//inline_methods.nit";
+const char *LOCATE_analysis___inline_methods = "./analysis//inline_methods.nit";
 const int SFT_analysis___inline_methods[6] = {
-  2199 /* Id of InlineMethodVisitor */,
+  2215 /* Id of InlineMethodVisitor */,
   5 /* Color of InlineMethodVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
   77 /* Group of ? */,
-  68 /* Group of ? */,
+  66 /* Group of ? */,
 };
-const char *LOCATE_analysis___cha_analysis = "src/analysis//cha_analysis.nit";
+const char *LOCATE_analysis___cha_analysis = "./analysis//cha_analysis.nit";
 const int SFT_analysis___cha_analysis[12] = {
-  2319 /* Id of ChaContext */,
+  2347 /* Id of ChaContext */,
   5 /* Color of ChaContext */,
   2 /* Group of ? */,
-  53 /* Group of ? */,
-  279 /* Id of ChaBuilder */,
+  51 /* Group of ? */,
+  287 /* Id of ChaBuilder */,
   4 /* Color of ChaBuilder */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2315 /* Id of ChaVisitor */,
+  47 /* Group of ? */,
+  2343 /* Id of ChaVisitor */,
   5 /* Color of ChaVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_analysis___reachable_method_analysis = "src/analysis//reachable_method_analysis.nit";
+const char *LOCATE_analysis___reachable_method_analysis = "./analysis//reachable_method_analysis.nit";
 const int SFT_analysis___reachable_method_analysis[8] = {
   11 /* Group of ? */,
-  83 /* Group of ? */,
+  81 /* Group of ? */,
   71 /* Id of ReachableMethodAnalysis */,
   4 /* Color of ReachableMethodAnalysis */,
-  49 /* Group of ? */,
-  2275 /* Id of DefaultReachableMethodAnalysis */,
+  47 /* Group of ? */,
+  2299 /* Id of DefaultReachableMethodAnalysis */,
   5 /* Color of DefaultReachableMethodAnalysis */,
-  53 /* Group of ? */,
+  51 /* Group of ? */,
 };
-const char *LOCATE_analysis___rta_analysis = "src/analysis//rta_analysis.nit";
+const char *LOCATE_analysis___rta_analysis = "./analysis//rta_analysis.nit";
 const int SFT_analysis___rta_analysis[12] = {
-  347 /* Id of RtaContext */,
+  359 /* Id of RtaContext */,
   6 /* Color of RtaContext */,
   2 /* Group of ? */,
-  56 /* Group of ? */,
+  54 /* Group of ? */,
   63 /* Id of RtaBuilder */,
   4 /* Color of RtaBuilder */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  343 /* Id of RtaVisitor */,
+  47 /* Group of ? */,
+  355 /* Id of RtaVisitor */,
   5 /* Color of RtaVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_analysis___instantiated_type_analysis = "src/analysis//instantiated_type_analysis.nit";
+const char *LOCATE_analysis___instantiated_type_analysis = "./analysis//instantiated_type_analysis.nit";
 const int SFT_analysis___instantiated_type_analysis[8] = {
   3 /* Group of ? */,
-  60 /* Group of ? */,
-  195 /* Id of InstantiatedTypeAnalysis */,
+  58 /* Group of ? */,
+  203 /* Id of InstantiatedTypeAnalysis */,
   5 /* Color of InstantiatedTypeAnalysis */,
-  53 /* Group of ? */,
-  2287 /* Id of DefaultInstantiatedTypeAnalysis */,
+  51 /* Group of ? */,
+  2311 /* Id of DefaultInstantiatedTypeAnalysis */,
   6 /* Color of DefaultInstantiatedTypeAnalysis */,
-  56 /* Group of ? */,
+  54 /* Group of ? */,
 };
-const char *LOCATE_analysis___reachable_as_init_impl = "src/analysis//reachable_as_init_impl.nit";
+const char *LOCATE_analysis___reachable_as_init_impl = "./analysis//reachable_as_init_impl.nit";
 const int SFT_analysis___reachable_as_init_impl[12] = {
   79 /* Id of ReachableAsInitBuilder */,
   4 /* Color of ReachableAsInitBuilder */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2043 /* Id of ReachableAsInitAnalysisImpl */,
+  47 /* Group of ? */,
+  2055 /* Id of ReachableAsInitAnalysisImpl */,
   5 /* Color of ReachableAsInitAnalysisImpl */,
   2 /* Group of ? */,
-  52 /* Group of ? */,
-  2059 /* Id of RAIVisitor */,
+  50 /* Group of ? */,
+  2071 /* Id of RAIVisitor */,
   5 /* Color of RAIVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_analysis___reachable_as_init = "src/analysis//reachable_as_init.nit";
+const char *LOCATE_analysis___reachable_as_init = "./analysis//reachable_as_init.nit";
 const int SFT_analysis___reachable_as_init[8] = {
   8 /* Group of ? */,
-  76 /* Group of ? */,
+  74 /* Group of ? */,
   83 /* Id of ReachableAsInitAnalysis */,
   4 /* Color of ReachableAsInitAnalysis */,
-  49 /* Group of ? */,
-  2283 /* Id of DefaultReachableAsInitAnalysis */,
+  47 /* Group of ? */,
+  2307 /* Id of DefaultReachableAsInitAnalysis */,
   5 /* Color of DefaultReachableAsInitAnalysis */,
-  52 /* Group of ? */,
+  50 /* Group of ? */,
 };
-const char *LOCATE_analysis___reachable_from_init_method_analysis_impl = "src/analysis//reachable_from_init_method_analysis_impl.nit";
+const char *LOCATE_analysis___reachable_from_init_method_analysis_impl = "./analysis//reachable_from_init_method_analysis_impl.nit";
 const int SFT_analysis___reachable_from_init_method_analysis_impl[12] = {
   87 /* Id of RFIMABuilder */,
   4 /* Color of RFIMABuilder */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  2055 /* Id of RFIMAContext */,
+  47 /* Group of ? */,
+  2067 /* Id of RFIMAContext */,
   5 /* Color of RFIMAContext */,
   2 /* Group of ? */,
-  53 /* Group of ? */,
-  2051 /* Id of RFIMAVisitor */,
+  51 /* Group of ? */,
+  2063 /* Id of RFIMAVisitor */,
   5 /* Color of RFIMAVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_analysis___reachable_from_init_method_analysis = "src/analysis//reachable_from_init_method_analysis.nit";
+const char *LOCATE_analysis___reachable_from_init_method_analysis = "./analysis//reachable_from_init_method_analysis.nit";
 const int SFT_analysis___reachable_from_init_method_analysis[8] = {
   14 /* Group of ? */,
-  92 /* Group of ? */,
+  90 /* Group of ? */,
   75 /* Id of ReachableFromInitMethodAnalysis */,
   4 /* Color of ReachableFromInitMethodAnalysis */,
-  49 /* Group of ? */,
-  2279 /* Id of DefaultReachableFromInitMethodAnalysis */,
+  47 /* Group of ? */,
+  2303 /* Id of DefaultReachableFromInitMethodAnalysis */,
   5 /* Color of DefaultReachableFromInitMethodAnalysis */,
-  53 /* Group of ? */,
+  51 /* Group of ? */,
 };
-const char *LOCATE_analysis___dead_method_removal = "src/analysis//dead_method_removal.nit";
+const char *LOCATE_analysis___dead_method_removal = "./analysis//dead_method_removal.nit";
 const int SFT_analysis___dead_method_removal[3] = {
   9 /* Group of ? */,
-  79 /* Group of ? */,
-  69 /* Group of ? */,
+  77 /* Group of ? */,
+  67 /* Group of ? */,
 };
-const char *LOCATE_analysis___inline_get_and_set = "src/analysis//inline_get_and_set.nit";
+const char *LOCATE_analysis___inline_get_and_set = "./analysis//inline_get_and_set.nit";
 const int SFT_analysis___inline_get_and_set[6] = {
   12 /* Group of ? */,
-  87 /* Group of ? */,
-  2203 /* Id of InlineGetSetVisitor */,
+  85 /* Group of ? */,
+  2219 /* Id of InlineGetSetVisitor */,
   5 /* Color of InlineGetSetVisitor */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_analysis___remove_out_of_init_get_test = "src/analysis//remove_out_of_init_get_test.nit";
+const char *LOCATE_analysis___remove_out_of_init_get_test = "./analysis//remove_out_of_init_get_test.nit";
 const int SFT_analysis___remove_out_of_init_get_test[10] = {
   13 /* Group of ? */,
-  89 /* Group of ? */,
-  2195 /* Id of IssetCounter */,
+  87 /* Group of ? */,
+  2211 /* Id of IssetCounter */,
   5 /* Color of IssetCounter */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
-  2251 /* Id of GetterTestRemover */,
+  55 /* Group of ? */,
+  2275 /* Id of GetterTestRemover */,
   5 /* Color of GetterTestRemover */,
   3 /* Group of ? */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_global = "src/compiling//compiling_global.nit";
+const char *LOCATE_compiling___compiling_global = "./compiling//compiling_global.nit";
 const int SFT_compiling___compiling_global[8] = {
-  96 /* Group of ? */,
-  81 /* Group of ? */,
-  49 /* Group of ? */,
-  52 /* Group of ? */,
+  94 /* Group of ? */,
+  79 /* Group of ? */,
+  47 /* Group of ? */,
+  50 /* Group of ? */,
+  55 /* Group of ? */,
   57 /* Group of ? */,
-  59 /* Group of ? */,
-  117 /* Group of ? */,
-  95 /* Group of ? */,
+  115 /* Group of ? */,
+  93 /* Group of ? */,
 };
-const char *LOCATE_compiling___table_computation = "src/compiling//table_computation.nit";
-const int SFT_compiling___table_computation[79] = {
-  271 /* Id of ColorContext */,
+const char *LOCATE_compiling___table_computation = "./compiling//table_computation.nit";
+const int SFT_compiling___table_computation[85] = {
+  279 /* Id of ColorContext */,
   4 /* Color of ColorContext */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  327 /* Id of TableInformation */,
+  47 /* Group of ? */,
+  335 /* Id of TableInformation */,
   5 /* Color of TableInformation */,
   3 /* Group of ? */,
-  54 /* Group of ? */,
-  2303 /* Id of CompiledClass */,
+  52 /* Group of ? */,
+  2331 /* Id of CompiledClass */,
   5 /* Color of CompiledClass */,
   3 /* Group of ? */,
-  54 /* Group of ? */,
+  52 /* Group of ? */,
   25 /* Group of ? */,
-  119 /* Group of ? */,
+  117 /* Group of ? */,
   15 /* Group of ? */,
-  98 /* Group of ? */,
+  96 /* Group of ? */,
   19 /* Group of ? */,
-  84 /* Group of ? */,
-  295 /* Id of AbsTableElt */,
+  82 /* Group of ? */,
+  303 /* Id of AbsTableElt */,
   4 /* Color of AbsTableElt */,
-  50 /* Group of ? */,
-  331 /* Id of TableElt */,
+  48 /* Group of ? */,
+  339 /* Id of TableElt */,
   5 /* Color of TableElt */,
-  53 /* Group of ? */,
-  2103 /* Id of ModuleTableElt */,
+  51 /* Group of ? */,
+  2115 /* Id of ModuleTableElt */,
   6 /* Color of ModuleTableElt */,
-  58 /* Group of ? */,
-  2791 /* Id of ModuleTableEltGroup */,
+  56 /* Group of ? */,
+  2815 /* Id of ModuleTableEltGroup */,
   7 /* Color of ModuleTableEltGroup */,
   2 /* Group of ? */,
-  59 /* Group of ? */,
-  2359 /* Id of TableEltProp */,
+  57 /* Group of ? */,
+  2387 /* Id of TableEltProp */,
   6 /* Color of TableEltProp */,
   2 /* Group of ? */,
-  57 /* Group of ? */,
-  3107 /* Id of TableEltMeth */,
+  55 /* Group of ? */,
+  3159 /* Id of TableEltMeth */,
   7 /* Color of TableEltMeth */,
-  60 /* Group of ? */,
-  3103 /* Id of TableEltSuper */,
+  58 /* Group of ? */,
+  3151 /* Id of TableEltVTClassColor */,
+  7 /* Color of TableEltVTClassColor */,
+  58 /* Group of ? */,
+  3147 /* Id of TableEltVTClassId */,
+  7 /* Color of TableEltVTClassId */,
+  58 /* Group of ? */,
+  3155 /* Id of TableEltSuper */,
   7 /* Color of TableEltSuper */,
-  60 /* Group of ? */,
-  3119 /* Id of TableEltAttr */,
+  58 /* Group of ? */,
+  3171 /* Id of TableEltAttr */,
   7 /* Color of TableEltAttr */,
-  60 /* Group of ? */,
-  2339 /* Id of AbsTableEltClass */,
+  58 /* Group of ? */,
+  2367 /* Id of AbsTableEltClass */,
   7 /* Color of AbsTableEltClass */,
   2 /* Group of ? */,
-  60 /* Group of ? */,
-  2387 /* Id of TableEltClass */,
+  58 /* Group of ? */,
+  2415 /* Id of TableEltClass */,
   8 /* Color of TableEltClass */,
-  63 /* Group of ? */,
-  2383 /* Id of TableEltClassId */,
+  61 /* Group of ? */,
+  2411 /* Id of TableEltClassId */,
   5 /* Color of TableEltClassId */,
-  52 /* Group of ? */,
-  3111 /* Id of TableEltClassInitTable */,
+  50 /* Group of ? */,
+  3163 /* Id of TableEltClassInitTable */,
   9 /* Color of TableEltClassInitTable */,
-  64 /* Group of ? */,
-  3115 /* Id of TableEltClassColor */,
+  62 /* Group of ? */,
+  3167 /* Id of TableEltClassColor */,
   9 /* Color of TableEltClassColor */,
-  64 /* Group of ? */,
-  2367 /* Id of TableEltComposite */,
+  62 /* Group of ? */,
+  2395 /* Id of TableEltComposite */,
   6 /* Color of TableEltComposite */,
   2 /* Group of ? */,
-  57 /* Group of ? */,
-  2375 /* Id of TableEltClassSelfId */,
+  55 /* Group of ? */,
+  2403 /* Id of TableEltClassSelfId */,
   6 /* Color of TableEltClassSelfId */,
-  57 /* Group of ? */,
-  2371 /* Id of TableEltClassSelfName */,
+  55 /* Group of ? */,
+  2399 /* Id of TableEltClassSelfName */,
   6 /* Color of TableEltClassSelfName */,
-  57 /* Group of ? */,
-  2379 /* Id of TableEltClassObjectSize */,
+  55 /* Group of ? */,
+  2407 /* Id of TableEltClassObjectSize */,
   6 /* Color of TableEltClassObjectSize */,
-  57 /* Group of ? */,
-  2363 /* Id of TableEltObjectId */,
+  55 /* Group of ? */,
+  2391 /* Id of TableEltObjectId */,
   6 /* Color of TableEltObjectId */,
-  57 /* Group of ? */,
-  2355 /* Id of TableEltVftPointer */,
+  55 /* Group of ? */,
+  2383 /* Id of TableEltVftPointer */,
   6 /* Color of TableEltVftPointer */,
-  57 /* Group of ? */,
+  55 /* Group of ? */,
 };
-const char *LOCATE_compiling___compiling_icode = "src/compiling//compiling_icode.nit";
+const char *LOCATE_compiling___compiling_icode = "./compiling//compiling_icode.nit";
 const int SFT_compiling___compiling_icode[9] = {
-  239 /* Id of I2CCompilerVisitor */,
+  247 /* Id of I2CCompilerVisitor */,
   4 /* Color of I2CCompilerVisitor */,
   2 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
-  49 /* Group of ? */,
-  71 /* Group of ? */,
-  71 /* Group of ? */,
-  70 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
+  47 /* Group of ? */,
+  69 /* Group of ? */,
+  69 /* Group of ? */,
+  68 /* Group of ? */,
 };
-const char *LOCATE_native_interface___ni_metamodel = "src/native_interface//ni_metamodel.nit";
+const char *LOCATE_native_interface___ni_metamodel = "./native_interface//ni_metamodel.nit";
 const int SFT_native_interface___ni_metamodel[4] = {
-  52 /* Group of ? */,
-  71 /* Group of ? */,
+  50 /* Group of ? */,
+  69 /* Group of ? */,
   2 /* Group of ? */,
-  53 /* Group of ? */,
+  51 /* Group of ? */,
 };
-const char *LOCATE_nitc = "src/nitc.nit";
+const char *LOCATE_nitc = "./nitc.nit";
 const int SFT_nitc[4] = {
-  3139 /* Id of NitCompiler */,
+  3191 /* Id of NitCompiler */,
   7 /* Color of NitCompiler */,
   52 /* Group of ? */,
-  141 /* Group of ? */,
+  140 /* Group of ? */,
 };
-const classtable_elt_t VFT_nitc___NitCompiler[160] = {
-  {(bigint) 3139 /* 0: Identity */},
+const classtable_elt_t VFT_nitc___NitCompiler[159] = {
+  {(bigint) 3191 /* 0: Identity */},
   {(bigint) 68 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NitCompiler" /* 2: Class Name */},
   {(bigint) 3 /* 3: NitCompiler < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 4: NitCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 319 /* 5: NitCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 2995 /* 6: NitCompiler < AbstractCompiler: superclass typecheck marker */},
-  {(bigint) 3139 /* 7: NitCompiler < NitCompiler: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 187 /* 4: NitCompiler < MMContext: superclass typecheck marker */},
+  {(bigint) 327 /* 5: NitCompiler < ToolContext: superclass typecheck marker */},
+  {(bigint) 3035 /* 6: NitCompiler < AbstractCompiler: superclass typecheck marker */},
+  {(bigint) 3191 /* 7: NitCompiler < NitCompiler: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -14839,7 +14952,7 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: NitCompiler < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: NitCompiler < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -14868,7 +14981,8 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: NitCompiler < MMContext: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
+  {(bigint) 2 /* 48: NitCompiler < MMContext: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMContext___init},
   {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
@@ -14898,7 +15012,7 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
   {(bigint) syntax___ToolContext___keep_ast},
   {(bigint) syntax___ToolContext___keep_ast__eq},
-  {(bigint) 1 /* 79: NitCompiler < ToolContext: superclass init_table position */},
+  {(bigint) 1 /* 78: NitCompiler < ToolContext: superclass init_table position */},
   {(bigint) mmloader___ToolContext___error_count},
   {(bigint) mmloader___ToolContext___warning_count},
   {(bigint) mmloader___ToolContext___log_directory},
@@ -14954,13 +15068,13 @@ const classtable_elt_t VFT_nitc___NitCompiler[160] = {
   {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 0 /* 135: NitCompiler < AbstractCompiler: superclass init_table position */},
+  {(bigint) 0 /* 134: NitCompiler < AbstractCompiler: superclass init_table position */},
   {(bigint) abstracttool___AbstractCompiler___init},
   {(bigint) abstracttool___AbstractCompiler___tool_name},
   {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
   {(bigint) nitc___NitCompiler___perform_work},
   {(bigint) abstracttool___AbstractCompiler___dump_context_info},
-  {(bigint) 4 /* 141: NitCompiler < NitCompiler: superclass init_table position */},
+  {(bigint) 4 /* 140: NitCompiler < NitCompiler: superclass init_table position */},
   {(bigint) nitc___NitCompiler___opt_output},
   {(bigint) nitc___NitCompiler___opt_boost},
   {(bigint) nitc___NitCompiler___opt_no_cc},
@@ -15584,13 +15698,13 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   /* ./syntax//syntax.nit:98 */
   REGB0 = TAG_Bool(false);
   ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:99 */
+  /* ./mmloader.nit:98 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:102 */
+  /* ./mmloader.nit:101 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:105 */
+  /* ./mmloader.nit:104 */
   if (!once_value_42) {
     fra.me.REG[1] = BOX_NativeString("logs");
     REGB0 = TAG_Int(4);
@@ -15600,22 +15714,22 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   } else fra.me.REG[1] = once_value_42;
   fra.me.REG[1] = fra.me.REG[1];
   ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:108 */
+  /* ./mmloader.nit:107 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:109 */
+  /* ./mmloader.nit:108 */
   fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
   ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:167 */
+  /* ./mmloader.nit:166 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:170 */
+  /* ./mmloader.nit:169 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:173 */
+  /* ./mmloader.nit:172 */
   fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
   ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:176 */
+  /* ./mmloader.nit:175 */
   if (!once_value_43) {
     fra.me.REG[1] = BOX_NativeString("Show warnings");
     REGB0 = TAG_Int(13);
@@ -15646,7 +15760,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:179 */
+  /* ./mmloader.nit:178 */
   if (!once_value_46) {
     fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
     REGB0 = TAG_Int(57);
@@ -15677,7 +15791,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:182 */
+  /* ./mmloader.nit:181 */
   if (!once_value_49) {
     fra.me.REG[1] = BOX_NativeString("Generate various log files");
     REGB0 = TAG_Int(26);
@@ -15699,7 +15813,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:185 */
+  /* ./mmloader.nit:184 */
   if (!once_value_51) {
     fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
     REGB0 = TAG_Int(37);
@@ -15721,7 +15835,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:188 */
+  /* ./mmloader.nit:187 */
   if (!once_value_53) {
     fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
     REGB0 = TAG_Int(32);
@@ -15743,7 +15857,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:191 */
+  /* ./mmloader.nit:190 */
   if (!once_value_55) {
     fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
     REGB0 = TAG_Int(37);
@@ -15765,7 +15879,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:194 */
+  /* ./mmloader.nit:193 */
   if (!once_value_57) {
     fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
     REGB0 = TAG_Int(23);
@@ -15805,7 +15919,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:197 */
+  /* ./mmloader.nit:196 */
   if (!once_value_61) {
     fra.me.REG[2] = BOX_NativeString("Show version and exit");
     REGB0 = TAG_Int(21);
@@ -15827,7 +15941,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:200 */
+  /* ./mmloader.nit:199 */
   if (!once_value_63) {
     fra.me.REG[1] = BOX_NativeString("Verbose");
     REGB0 = TAG_Int(7);
@@ -15858,7 +15972,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:203 */
+  /* ./mmloader.nit:202 */
   if (!once_value_66) {
     fra.me.REG[2] = BOX_NativeString("Stop on first error");
     REGB0 = TAG_Int(19);
@@ -15880,7 +15994,7 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:206 */
+  /* ./mmloader.nit:205 */
   if (!once_value_68) {
     fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
     REGB0 = TAG_Int(47);
@@ -15902,13 +16016,13 @@ void INIT_ATTRIBUTES__nitc___NitCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:209 */
+  /* ./mmloader.nit:208 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:292 */
+  /* ./mmloader.nit:291 */
   fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:359 */
+  /* ./mmloader.nit:358 */
   fra.me.REG[2] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[2];
   /* ./metamodel//abstractmetamodel.nit:30 */
@@ -16414,7 +16528,7 @@ val_t NEW_NitCompiler_nitc___NitCompiler___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___kernel___Sys[57] = {
+const classtable_elt_t VFT_standard___kernel___Sys[55] = {
   {(bigint) 27 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Sys" /* 2: Class Name */},
@@ -16431,11 +16545,9 @@ const classtable_elt_t VFT_standard___kernel___Sys[57] = {
   {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) 0 /* 20: Sys < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Sys < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -16469,7 +16581,7 @@ const classtable_elt_t VFT_standard___kernel___Sys[57] = {
   {(bigint) standard___string___Sys___init_args},
   {(bigint) standard___string___Sys___native_argc},
   {(bigint) standard___string___Sys___native_argv},
-  {(bigint) 1 /* 54: Sys < Sys: superclass init_table position */},
+  {(bigint) 1 /* 52: Sys < Sys: superclass init_table position */},
   {(bigint) nitc___Sys___main},
   {(bigint) standard___kernel___Sys___init},
 };
@@ -16525,7 +16637,7 @@ val_t NEW_Sys_standard___kernel___Sys___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___kernel___Bool[50] = {
+const classtable_elt_t VFT_standard___kernel___Bool[48] = {
   {(bigint) -13 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Bool" /* 2: Class Name */},
@@ -16542,11 +16654,9 @@ const classtable_elt_t VFT_standard___kernel___Bool[50] = {
   {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) 0 /* 20: Bool < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Bool < Object: superclass init_table position */},
   {(bigint) standard___kernel___Bool___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Bool_____eqeq},
@@ -16575,11 +16685,11 @@ const classtable_elt_t VFT_standard___kernel___Bool[50] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Bool < Bool: superclass init_table position */},
+  {(bigint) 1 /* 47: Bool < Bool: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-const classtable_elt_t VFT_standard___kernel___Float[72] = {
+const classtable_elt_t VFT_standard___kernel___Float[71] = {
   {(bigint) -9 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Float" /* 2: Class Name */},
@@ -16596,11 +16706,9 @@ const classtable_elt_t VFT_standard___kernel___Float[72] = {
   {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) 0 /* 20: Float < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Float < Object: superclass init_table position */},
   {(bigint) standard___kernel___Float___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -16630,7 +16738,7 @@ const classtable_elt_t VFT_standard___kernel___Float[72] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___string___Float___to_precision},
-  {(bigint) 1 /* 50: Float < Float: superclass init_table position */},
+  {(bigint) 1 /* 48: Float < Float: superclass init_table position */},
   {(bigint) standard___kernel___Float_____leq},
   {(bigint) standard___kernel___Float_____l},
   {(bigint) standard___kernel___Float_____geq},
@@ -16652,6 +16760,7 @@ const classtable_elt_t VFT_standard___kernel___Float[72] = {
   {(bigint) standard___math___Float___log},
   {(bigint) standard___math___Float___exp},
   {(bigint) standard___math___Float___rand},
+  {(bigint) standard___math___Float___hypot_with},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -16663,14 +16772,14 @@ val_t BOX_Float(float val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_standard___kernel___Int[86] = {
+const classtable_elt_t VFT_standard___kernel___Int[87] = {
   {(bigint) -29 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Int" /* 2: Class Name */},
   {(bigint) 3 /* 3: Int < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 267 /* 5: Int < Comparable: superclass typecheck marker */},
-  {(bigint) 2271 /* 6: Int < Discrete: superclass typecheck marker */},
+  {(bigint) 275 /* 5: Int < Comparable: superclass typecheck marker */},
+  {(bigint) 2295 /* 6: Int < Discrete: superclass typecheck marker */},
   {(bigint) -29 /* 7: Int < Int: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16680,11 +16789,9 @@ const classtable_elt_t VFT_standard___kernel___Int[86] = {
   {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) 2 /* 20: Int < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: Int < Object: superclass init_table position */},
   {(bigint) standard___kernel___Int___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Int_____eqeq},
@@ -16718,7 +16825,9 @@ const classtable_elt_t VFT_standard___kernel___Int[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 54: Int < Comparable: superclass init_table position */},
+  {(bigint) 1 /* 52: Int < Comparable: superclass init_table position */},
+  {(bigint) -29 /* 53: VT Int::OTHER : id of Int */},
+  {(bigint) 7 /* 54: VT Int::OTHER : color of Int */},
   {(bigint) standard___kernel___Int_____l},
   {(bigint) standard___kernel___Int_____leq},
   {(bigint) standard___kernel___Int_____geq},
@@ -16749,6 +16858,7 @@ const classtable_elt_t VFT_standard___kernel___Int[86] = {
   {(bigint) standard___kernel___Int___to_c},
   {(bigint) standard___kernel___Int___enumerate_to},
   {(bigint) standard___kernel___Int___enumerate_before},
+  {(bigint) standard___kernel___Int___abs},
   {(bigint) standard___math___Int___rand},
 };
 /* 0: Pointer to the classtable */
@@ -16759,8 +16869,8 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
   {(bigint) "Char" /* 2: Class Name */},
   {(bigint) 3 /* 3: Char < Object: superclass typecheck marker */},
   {(bigint) 103 /* 4: Char < Pattern: superclass typecheck marker */},
-  {(bigint) 267 /* 5: Char < Comparable: superclass typecheck marker */},
-  {(bigint) 2271 /* 6: Char < Discrete: superclass typecheck marker */},
+  {(bigint) 275 /* 5: Char < Comparable: superclass typecheck marker */},
+  {(bigint) 2295 /* 6: Char < Discrete: superclass typecheck marker */},
   {(bigint) -33 /* 7: Char < Char: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -16770,11 +16880,9 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
   {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) 1 /* 20: Char < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Char < Object: superclass init_table position */},
   {(bigint) standard___kernel___Char___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Char_____eqeq},
@@ -16803,12 +16911,14 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: Char < Pattern: superclass init_table position */},
+  {(bigint) 0 /* 47: Char < Pattern: superclass init_table position */},
   {(bigint) standard___string_search___Char___search_index_in},
   {(bigint) standard___string_search___Char___search_in},
   {(bigint) standard___string_search___Pattern___search_all_in},
   {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 3 /* 54: Char < Comparable: superclass init_table position */},
+  {(bigint) 3 /* 52: Char < Comparable: superclass init_table position */},
+  {(bigint) -33 /* 53: VT Char::OTHER : id of Char */},
+  {(bigint) 7 /* 54: VT Char::OTHER : color of Char */},
   {(bigint) standard___kernel___Char_____l},
   {(bigint) standard___kernel___Char_____leq},
   {(bigint) standard___kernel___Char_____geq},
@@ -16835,7 +16945,7 @@ const classtable_elt_t VFT_standard___kernel___Char[78] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-const classtable_elt_t VFT_standard___kernel___Pointer[50] = {
+const classtable_elt_t VFT_standard___kernel___Pointer[48] = {
   {(bigint) -1 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Pointer" /* 2: Class Name */},
@@ -16852,11 +16962,336 @@ const classtable_elt_t VFT_standard___kernel___Pointer[50] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 0 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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 /* 47: Pointer < Pointer: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+val_t BOX_Pointer(void * val) {
+  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
+  box->vft = VFT_standard___kernel___Pointer;
+  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___collection___abstract_collection___Container[79] = {
+  {(bigint) 2323 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "Container" /* 2: Class Name */},
+  {(bigint) 3 /* 3: Container < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: Container < Collection: superclass typecheck marker */},
+  {(bigint) 2323 /* 7: Container < Container: 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___time___Object___get_time},
+  {(bigint) 1 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(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) 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 :( */,
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 0 /* 65: Container < Collection: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___abstract_collection___Container___is_empty},
+  {(bigint) standard___collection___abstract_collection___Container___length},
+  {(bigint) standard___collection___abstract_collection___Container___has},
+  {(bigint) standard___collection___abstract_collection___Container___has_only},
+  {(bigint) standard___collection___abstract_collection___Container___count},
+  {(bigint) standard___collection___abstract_collection___Container___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 75: Container < Container: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___Container___init},
+  {(bigint) standard___collection___abstract_collection___Container___item},
+  {(bigint) standard___collection___abstract_collection___Container___item__eq},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute Container::_item */
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___Container(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Container;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___abstract_collection___Container(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___abstract_collection___Container;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_Container_standard___collection___abstract_collection___Container___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} 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 = 158;
+  fra.me.meth = LOCATE_NEW_Container_standard___collection___abstract_collection___Container___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:158 */
+  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);
+  CHECKNEW_standard___collection___abstract_collection___Container(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___ContainerIterator[54] = {
+  {(bigint) 2319 /* 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) 199 /* 4: ContainerIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2319 /* 5: ContainerIterator < ContainerIterator: 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 :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 1 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 48: ContainerIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___item},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___next},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___is_ok},
+  {(bigint) 2 /* 52: ContainerIterator < ContainerIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___ContainerIterator___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ContainerIterator::_is_ok */
+/* 3: Attribute ContainerIterator::_container */
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(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_INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:174 */
+  REGB0 = TAG_Bool(true);
+  ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___abstract_collection___ContainerIterator(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 4);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___ContainerIterator;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___abstract_collection___ContainerIterator(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_standard___collection___abstract_collection___ContainerIterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_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_nitc, 0);
+  }
+  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_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} 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 = 172;
+  fra.me.meth = LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:172 */
+  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);
+  CHECKNEW_standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeysIterator[56] = {
+  {(bigint) 2135 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "MapKeysIterator" /* 2: Class Name */},
+  {(bigint) 3 /* 3: MapKeysIterator < Object: superclass typecheck marker */},
+  {(bigint) 199 /* 4: MapKeysIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2135 /* 5: MapKeysIterator < MapKeysIterator: 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 :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: Pointer < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MapKeysIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -16885,162 +17320,85 @@ const classtable_elt_t VFT_standard___kernel___Pointer[50] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Pointer < Pointer: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-val_t BOX_Pointer(void * val) {
-  struct TBOX_Pointer *box = (struct TBOX_Pointer*)alloc(sizeof(struct TBOX_Pointer));
-  box->vft = VFT_standard___kernel___Pointer;
-  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___collection___abstract_collection___Container[78] = {
-  {(bigint) 2295 /* 0: Identity */},
-  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "Container" /* 2: Class Name */},
-  {(bigint) 3 /* 3: Container < Object: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: Container < Collection: superclass typecheck marker */},
-  {(bigint) 2295 /* 7: Container < Container: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: 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},
-  {(bigint) standard___file___Object___gets},
-  {(bigint) standard___file___Object___stdin},
-  {(bigint) standard___file___Object___stdout},
-  {(bigint) standard___file___Object___stderr},
-  {(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) 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 :( */,
-  {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) 0 /* 65: Container < Collection: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___abstract_collection___Container___is_empty},
-  {(bigint) standard___collection___abstract_collection___Container___length},
-  {(bigint) standard___collection___abstract_collection___Container___has},
-  {(bigint) standard___collection___abstract_collection___Container___has_only},
-  {(bigint) standard___collection___abstract_collection___Container___count},
-  {(bigint) standard___collection___abstract_collection___Container___first},
-  {(bigint) 2 /* 74: Container < Container: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Container___init},
-  {(bigint) standard___collection___abstract_collection___Container___item},
-  {(bigint) standard___collection___abstract_collection___Container___item__eq},
+  {(bigint) standard___collection___array___Iterator___to_a},
+  {(bigint) 0 /* 48: MapKeysIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___item},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___next},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___is_ok},
+  {(bigint) 2 /* 52: MapKeysIterator < MapKeysIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___iterator__eq},
+  {(bigint) standard___collection___abstract_collection___MapKeysIterator___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute Container::_item */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___Container(val_t p0){
+/* 2: Attribute MapKeysIterator::@iterator */
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___Container;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___Container(void)
+val_t NEW_standard___collection___abstract_collection___MapKeysIterator(void)
 {
   obj_t obj;
   obj = alloc(sizeof(val_t) * 3);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___Container;
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapKeysIterator;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___Container(val_t p0){
+void CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(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_standard___collection___abstract_collection___Container;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___abstract_collection___MapKeysIterator;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  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_nitc, 0);
+  }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_Container_standard___collection___abstract_collection___Container___init(val_t p0){
+val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} 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 = 158;
-  fra.me.meth = LOCATE_NEW_Container_standard___collection___abstract_collection___Container___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:158 */
-  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);
-  CHECKNEW_standard___collection___abstract_collection___Container(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapKeysIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___MapKeysIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___MapKeysIterator(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___ContainerIterator[56] = {
-  {(bigint) 2291 /* 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) 191 /* 4: ContainerIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2291 /* 5: ContainerIterator < ContainerIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+const classtable_elt_t VFT_standard___collection___abstract_collection___MapValuesIterator[56] = {
+  {(bigint) 2131 /* 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) 199 /* 4: MapValuesIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2131 /* 5: MapValuesIterator < MapValuesIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17053,7 +17411,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ContainerIterator < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MapValuesIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17083,97 +17441,84 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Contain
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 50: ContainerIterator < Iterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___item},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___next},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___is_ok},
-  {(bigint) 2 /* 54: ContainerIterator < ContainerIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___ContainerIterator___init},
+  {(bigint) 0 /* 48: MapValuesIterator < Iterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___item},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___next},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___is_ok},
+  {(bigint) 2 /* 52: MapValuesIterator < MapValuesIterator: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___iterator__eq},
+  {(bigint) standard___collection___abstract_collection___MapValuesIterator___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ContainerIterator::_is_ok */
-/* 3: Attribute ContainerIterator::_container */
-void INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator(val_t p0){
+/* 2: Attribute MapValuesIterator::@iterator */
+void INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(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_INIT_ATTRIBUTES__standard___collection___abstract_collection___ContainerIterator;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:174 */
-  REGB0 = TAG_Bool(true);
-  ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0]) = REGB0;
+  fra.me.REG_size = 0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___abstract_collection___ContainerIterator(void)
+val_t NEW_standard___collection___abstract_collection___MapValuesIterator(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___ContainerIterator;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___abstract_collection___MapValuesIterator;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___abstract_collection___ContainerIterator(val_t p0){
+void CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(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_standard___collection___abstract_collection___ContainerIterator;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___abstract_collection___MapValuesIterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___abstract_collection___ContainerIterator____is_ok(fra.me.REG[0])!=NIT_NULL);
+  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", "_is_ok", LOCATE_nitc, 0);
-  }
-  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_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "@iterator", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init(val_t p0){
+val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} 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 = 172;
-  fra.me.meth = LOCATE_NEW_ContainerIterator_standard___collection___abstract_collection___ContainerIterator___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:172 */
-  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);
-  CHECKNEW_standard___collection___abstract_collection___ContainerIterator(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_standard___collection___abstract_collection___MapValuesIterator();
+  INIT_ATTRIBUTES__standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
+  standard___collection___abstract_collection___MapValuesIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___abstract_collection___MapValuesIterator(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleMapIterator[58] = {
-  {(bigint) 2963 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleMapIterator[54] = {
+  {(bigint) 2315 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CoupleMapIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: CoupleMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: CoupleMapIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2123 /* 5: CoupleMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2963 /* 6: CoupleMapIterator < CoupleMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 139 /* 4: CoupleMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2315 /* 5: CoupleMapIterator < CoupleMapIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17186,7 +17531,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: CoupleMapIterator < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: CoupleMapIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17215,14 +17560,12 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___CoupleM
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 1 /* 50: CoupleMapIterator < Iterator: superclass init_table position */},
+  {(bigint) 0 /* 47: CoupleMapIterator < MapIterator: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___CoupleMapIterator___item},
+  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___key},
   {(bigint) standard___collection___abstract_collection___CoupleMapIterator___next},
   {(bigint) standard___collection___abstract_collection___CoupleMapIterator___is_ok},
-  {(bigint) 0 /* 54: CoupleMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___CoupleMapIterator___key},
-  {(bigint) 3 /* 56: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
+  {(bigint) 2 /* 52: CoupleMapIterator < CoupleMapIterator: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___CoupleMapIterator___init},
 };
 /* 0: Pointer to the classtable */
@@ -17270,17 +17613,17 @@ void CHECKNEW_standard___collection___abstract_collection___CoupleMapIterator(va
 val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 424;
+  fra.me.line = 504;
   fra.me.meth = LOCATE_NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:424 */
+  /* ./../lib/standard//collection//abstract_collection.nit:504 */
   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);
@@ -17288,14 +17631,12 @@ val_t NEW_CoupleMapIterator_standard___collection___abstract_collection___Couple
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[55] = {
-  {(bigint) 259 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[53] = {
+  {(bigint) 267 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Couple" /* 2: Class Name */},
   {(bigint) 3 /* 3: Couple < Object: superclass typecheck marker */},
-  {(bigint) 259 /* 4: Couple < Couple: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 267 /* 4: Couple < Couple: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17309,7 +17650,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: Couple < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Couple < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17338,7 +17679,7 @@ const classtable_elt_t VFT_standard___collection___abstract_collection___Couple[
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Couple < Couple: superclass init_table position */},
+  {(bigint) 1 /* 47: Couple < Couple: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Couple___first},
   {(bigint) standard___collection___abstract_collection___Couple___first__eq},
   {(bigint) standard___collection___abstract_collection___Couple___second},
@@ -17386,7 +17727,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 = 438;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_NEW_Couple_standard___collection___abstract_collection___Couple___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -17395,7 +17736,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:438 */
+  /* ./../lib/standard//collection//abstract_collection.nit:518 */
   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);
@@ -17403,17 +17744,15 @@ val_t NEW_Couple_standard___collection___abstract_collection___Couple___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___collection___range___Range[79] = {
-  {(bigint) 2047 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___range___Range[80] = {
+  {(bigint) 2059 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Range" /* 2: Class Name */},
   {(bigint) 3 /* 3: Range < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: Range < Collection: superclass typecheck marker */},
-  {(bigint) 2047 /* 7: Range < Range: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: Range < Collection: superclass typecheck marker */},
+  {(bigint) 2059 /* 7: Range < Range: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17424,7 +17763,7 @@ const classtable_elt_t VFT_standard___collection___range___Range[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: Range < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Range < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17467,6 +17806,8 @@ const classtable_elt_t VFT_standard___collection___range___Range[79] = {
   {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) 0 /* 65: Range < Collection: superclass init_table position */},
@@ -17478,7 +17819,8 @@ const classtable_elt_t VFT_standard___collection___range___Range[79] = {
   {(bigint) standard___collection___range___Range___has_only},
   {(bigint) standard___collection___range___Range___count},
   {(bigint) standard___collection___range___Range___first},
-  {(bigint) 2 /* 74: Range < Range: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 75: Range < Range: superclass init_table position */},
   {(bigint) standard___collection___range___Range___last},
   {(bigint) standard___collection___range___Range___after},
   {(bigint) standard___collection___range___Range___init},
@@ -17584,15 +17926,13 @@ val_t NEW_Range_standard___collection___range___Range___without_last(val_t p0, v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___collection___range___IteratorRange[56] = {
-  {(bigint) 2191 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___range___IteratorRange[54] = {
+  {(bigint) 2207 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IteratorRange" /* 2: Class Name */},
   {(bigint) 3 /* 3: IteratorRange < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: IteratorRange < Iterator: superclass typecheck marker */},
-  {(bigint) 2191 /* 5: IteratorRange < IteratorRange: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 199 /* 4: IteratorRange < Iterator: superclass typecheck marker */},
+  {(bigint) 2207 /* 5: IteratorRange < IteratorRange: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17605,7 +17945,7 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: IteratorRange < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: IteratorRange < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17635,11 +17975,11 @@ const classtable_elt_t VFT_standard___collection___range___IteratorRange[56] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 50: IteratorRange < Iterator: superclass init_table position */},
+  {(bigint) 0 /* 48: IteratorRange < Iterator: superclass init_table position */},
   {(bigint) standard___collection___range___IteratorRange___item},
   {(bigint) standard___collection___range___IteratorRange___next},
   {(bigint) standard___collection___range___IteratorRange___is_ok},
-  {(bigint) 2 /* 54: IteratorRange < IteratorRange: superclass init_table position */},
+  {(bigint) 2 /* 52: IteratorRange < IteratorRange: superclass init_table position */},
   {(bigint) standard___collection___range___IteratorRange___init},
 };
 /* 0: Pointer to the classtable */
@@ -17711,28 +18051,26 @@ val_t NEW_IteratorRange_standard___collection___range___IteratorRange___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___list___List[108] = {
-  {(bigint) 3511 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___list___List[114] = {
+  {(bigint) 3555 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "List" /* 2: Class Name */},
   {(bigint) 3 /* 3: List < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: List < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: List < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: List < MapRead: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: List < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 2755 /* 10: List < SequenceRead: superclass typecheck marker */},
-  {(bigint) 2795 /* 11: List < Map: superclass typecheck marker */},
-  {(bigint) 3135 /* 12: List < Sequence: superclass typecheck marker */},
-  {(bigint) 3511 /* 13: List < List: superclass typecheck marker */},
+  {(bigint) 283 /* 6: List < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: List < SequenceRead: superclass typecheck marker */},
+  {(bigint) 367 /* 8: List < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: List < SimpleCollection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3187 /* 11: List < Sequence: superclass typecheck marker */},
+  {(bigint) 3555 /* 12: List < List: 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) 7 /* 20: List < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: List < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17775,9 +18113,11 @@ const classtable_elt_t VFT_standard___collection___list___List[108] = {
   {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) 6 /* 65: List < Collection: superclass init_table position */},
+  {(bigint) 4 /* 65: List < Collection: superclass init_table position */},
   {(bigint) standard___collection___list___List___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___list___List___is_empty},
@@ -17786,25 +18126,29 @@ const classtable_elt_t VFT_standard___collection___list___List[108] = {
   {(bigint) standard___collection___list___List___has_only},
   {(bigint) standard___collection___list___List___count},
   {(bigint) standard___collection___list___List___first},
-  {(bigint) 5 /* 74: List < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 1 /* 75: List < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___list___List_____bra},
+  {(bigint) standard___collection___list___List___last},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___index_of},
+  {(bigint) 3 /* 79: List < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___list___List___clear},
   {(bigint) standard___collection___list___List___remove},
   {(bigint) standard___collection___abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 3 /* 78: List < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___list___List_____bra},
-  {(bigint) standard___collection___list___List___has_key},
-  {(bigint) 4 /* 81: List < SimpleCollection: superclass init_table position */},
+  {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) 2 /* 93: List < SimpleCollection: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Sequence___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 1 /* 84: List < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___list___List___last},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___index_of},
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 2 /* 88: List < Map: superclass init_table position */},
-  {(bigint) standard___collection___list___List_____braeq},
-  {(bigint) standard___collection___list___List___remove_at},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) 0 /* 92: List < Sequence: superclass init_table position */},
+  {(bigint) 0 /* 96: List < Sequence: superclass init_table position */},
   {(bigint) standard___collection___list___List___first__eq},
   {(bigint) standard___collection___list___List___last__eq},
   {(bigint) standard___collection___list___List___push},
@@ -17812,7 +18156,9 @@ const classtable_elt_t VFT_standard___collection___list___List[108] = {
   {(bigint) standard___collection___list___List___pop},
   {(bigint) standard___collection___list___List___unshift},
   {(bigint) standard___collection___list___List___shift},
-  {(bigint) 8 /* 100: List < List: superclass init_table position */},
+  {(bigint) standard___collection___list___List_____braeq},
+  {(bigint) standard___collection___list___List___remove_at},
+  {(bigint) 6 /* 106: List < List: superclass init_table position */},
   {(bigint) standard___collection___list___List___link},
   {(bigint) standard___collection___list___List___init},
   {(bigint) standard___collection___list___List___from},
@@ -17859,15 +18205,15 @@ void CHECKNEW_standard___collection___list___List(val_t p0){
 val_t NEW_List_standard___collection___list___List___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[9] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 175;
+  fra.me.line = 173;
   fra.me.meth = LOCATE_NEW_List_standard___collection___list___List___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//list.nit:175 */
+  /* ./../lib/standard//collection//list.nit:173 */
   fra.me.REG[0] = NEW_standard___collection___list___List();
   INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[0]);
   standard___collection___list___List___init(fra.me.REG[0], init_table);
@@ -17878,17 +18224,17 @@ val_t NEW_List_standard___collection___list___List___init(void){
 val_t NEW_List_standard___collection___list___List___from(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};
+  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 = 178;
+  fra.me.line = 176;
   fra.me.meth = LOCATE_NEW_List_standard___collection___list___List___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:178 */
+  /* ./../lib/standard//collection//list.nit:176 */
   fra.me.REG[1] = NEW_standard___collection___list___List();
   INIT_ATTRIBUTES__standard___collection___list___List(fra.me.REG[1]);
   standard___collection___list___List___from(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -17896,16 +18242,14 @@ val_t NEW_List_standard___collection___list___List___from(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___list___ListIterator[63] = {
-  {(bigint) 3151 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___list___ListIterator[59] = {
+  {(bigint) 2855 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ListIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: ListIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: ListIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2123 /* 5: ListIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2835 /* 6: ListIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 3151 /* 7: ListIterator < ListIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 199 /* 4: ListIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2223 /* 5: ListIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 2855 /* 6: ListIterator < ListIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -17917,7 +18261,7 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[63] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ListIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ListIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -17947,15 +18291,13 @@ const classtable_elt_t VFT_standard___collection___list___ListIterator[63] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 2 /* 50: ListIterator < Iterator: superclass init_table position */},
+  {(bigint) 1 /* 48: ListIterator < Iterator: superclass init_table position */},
   {(bigint) standard___collection___list___ListIterator___item},
   {(bigint) standard___collection___list___ListIterator___next},
   {(bigint) standard___collection___list___ListIterator___is_ok},
-  {(bigint) 1 /* 54: ListIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___IndexedIterator___key},
-  {(bigint) 0 /* 56: ListIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) 0 /* 52: ListIterator < IndexedIterator: superclass init_table position */},
   {(bigint) standard___collection___list___ListIterator___index},
-  {(bigint) 4 /* 58: ListIterator < ListIterator: superclass init_table position */},
+  {(bigint) 3 /* 54: ListIterator < ListIterator: superclass init_table position */},
   {(bigint) standard___collection___list___ListIterator___item__eq},
   {(bigint) standard___collection___list___ListIterator___init},
   {(bigint) standard___collection___list___ListIterator___delete},
@@ -18013,17 +18355,17 @@ void CHECKNEW_standard___collection___list___ListIterator(val_t p0){
 val_t NEW_ListIterator_standard___collection___list___ListIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 258;
+  fra.me.line = 256;
   fra.me.meth = LOCATE_NEW_ListIterator_standard___collection___list___ListIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:258 */
+  /* ./../lib/standard//collection//list.nit:256 */
   fra.me.REG[1] = NEW_standard___collection___list___ListIterator();
   INIT_ATTRIBUTES__standard___collection___list___ListIterator(fra.me.REG[1]);
   standard___collection___list___ListIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -18031,18 +18373,16 @@ val_t NEW_ListIterator_standard___collection___list___ListIterator___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___list___ListNode[84] = {
-  {(bigint) 2831 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___list___ListNode[85] = {
+  {(bigint) 2851 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ListNode" /* 2: Class Name */},
   {(bigint) 3 /* 3: ListNode < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: ListNode < Collection: superclass typecheck marker */},
-  {(bigint) 2295 /* 7: ListNode < Container: superclass typecheck marker */},
-  {(bigint) 2831 /* 8: ListNode < ListNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: ListNode < Collection: superclass typecheck marker */},
+  {(bigint) 2323 /* 7: ListNode < Container: superclass typecheck marker */},
+  {(bigint) 2851 /* 8: ListNode < ListNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18052,7 +18392,7 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ListNode < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ListNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -18095,6 +18435,8 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[84] = {
   {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) 0 /* 65: ListNode < Collection: superclass init_table position */},
@@ -18106,11 +18448,12 @@ const classtable_elt_t VFT_standard___collection___list___ListNode[84] = {
   {(bigint) standard___collection___abstract_collection___Container___has_only},
   {(bigint) standard___collection___abstract_collection___Container___count},
   {(bigint) standard___collection___abstract_collection___Container___first},
-  {(bigint) 2 /* 74: ListNode < Container: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 75: ListNode < Container: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Container___init},
   {(bigint) standard___collection___abstract_collection___Container___item},
   {(bigint) standard___collection___abstract_collection___Container___item__eq},
-  {(bigint) 3 /* 78: ListNode < ListNode: superclass init_table position */},
+  {(bigint) 3 /* 79: ListNode < ListNode: superclass init_table position */},
   {(bigint) standard___collection___list___ListNode___init},
   {(bigint) standard___collection___list___ListNode___next},
   {(bigint) standard___collection___list___ListNode___next__eq},
@@ -18159,14 +18502,14 @@ val_t NEW_ListNode_standard___collection___list___ListNode___init(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 = 291;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_NEW_ListNode_standard___collection___list___ListNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:291 */
+  /* ./../lib/standard//collection//list.nit:289 */
   fra.me.REG[1] = NEW_standard___collection___list___ListNode();
   INIT_ATTRIBUTES__standard___collection___list___ListNode(fra.me.REG[1]);
   standard___collection___list___ListNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -18174,28 +18517,26 @@ val_t NEW_ListNode_standard___collection___list___ListNode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[107] = {
-  {(bigint) 3199 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[90] = {
+  {(bigint) 3039 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbstractArrayRead" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbstractArrayRead < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: AbstractArrayRead < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2119 /* 8: AbstractArrayRead < MapRead: superclass typecheck marker */},
+  {(bigint) 283 /* 6: AbstractArrayRead < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: AbstractArrayRead < SequenceRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2755 /* 10: AbstractArrayRead < SequenceRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3039 /* 10: AbstractArrayRead < AbstractArrayRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3199 /* 13: AbstractArrayRead < AbstractArrayRead: 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) 3 /* 20: AbstractArrayRead < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AbstractArrayRead < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
@@ -18238,9 +18579,11 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[107
   {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) 2 /* 65: AbstractArrayRead < Collection: superclass init_table position */},
+  {(bigint) 1 /* 65: AbstractArrayRead < Collection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
@@ -18249,33 +18592,16 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArrayRead[107
   {(bigint) standard___collection___array___AbstractArrayRead___has_only},
   {(bigint) standard___collection___array___AbstractArrayRead___count},
   {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 78: AbstractArrayRead < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapRead_____bra},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 0 /* 84: AbstractArrayRead < SequenceRead: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 0 /* 75: AbstractArrayRead < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___SequenceRead_____bra},
   {(bigint) standard___collection___abstract_collection___SequenceRead___last},
   {(bigint) standard___collection___array___AbstractArrayRead___index_of},
   {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 :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 4 /* 100: AbstractArrayRead < AbstractArrayRead: superclass init_table position */},
+  {(bigint) 3 /* 83: AbstractArrayRead < AbstractArrayRead: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
   {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
   {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
@@ -18334,7 +18660,7 @@ void CHECKNEW_standard___collection___array___AbstractArrayRead(val_t p0){
 val_t NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
@@ -18350,27 +18676,25 @@ val_t NEW_AbstractArrayRead_standard___collection___array___AbstractArrayRead___
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] = {
-  {(bigint) 3531 /* 0: Identity */},
+  {(bigint) 3567 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbstractArray" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbstractArray < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: AbstractArray < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: AbstractArray < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: AbstractArray < MapRead: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: AbstractArray < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 2755 /* 10: AbstractArray < SequenceRead: superclass typecheck marker */},
-  {(bigint) 2795 /* 11: AbstractArray < Map: superclass typecheck marker */},
-  {(bigint) 3135 /* 12: AbstractArray < Sequence: superclass typecheck marker */},
-  {(bigint) 3199 /* 13: AbstractArray < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 283 /* 6: AbstractArray < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: AbstractArray < SequenceRead: superclass typecheck marker */},
+  {(bigint) 367 /* 8: AbstractArray < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: AbstractArray < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3039 /* 10: AbstractArray < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3187 /* 11: AbstractArray < Sequence: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3531 /* 15: AbstractArray < AbstractArray: superclass typecheck marker */},
+  {(bigint) 3567 /* 13: AbstractArray < AbstractArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AbstractArray < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AbstractArray < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___collection___array___AbstractArrayRead_____eqeq},
@@ -18413,9 +18737,11 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {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) 2 /* 65: AbstractArray < Collection: superclass init_table position */},
+  {(bigint) 1 /* 65: AbstractArray < Collection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
@@ -18424,25 +18750,29 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {(bigint) standard___collection___array___AbstractArrayRead___has_only},
   {(bigint) standard___collection___array___AbstractArrayRead___count},
   {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) 8 /* 74: AbstractArray < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 0 /* 75: AbstractArray < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___abstract_collection___SequenceRead_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
+  {(bigint) 6 /* 79: AbstractArray < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArray___clear},
   {(bigint) standard___collection___array___AbstractArray___remove},
   {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 1 /* 78: AbstractArray < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___MapRead_____bra},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_key},
-  {(bigint) 7 /* 81: AbstractArray < SimpleCollection: superclass init_table position */},
+  {(bigint) 3 /* 83: AbstractArray < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 93: AbstractArray < SimpleCollection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArray___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 0 /* 84: AbstractArray < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 6 /* 88: AbstractArray < Map: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Map_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) 5 /* 92: AbstractArray < Sequence: superclass init_table position */},
+  {(bigint) 4 /* 96: AbstractArray < Sequence: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
   {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
   {(bigint) standard___collection___array___AbstractArray___push},
@@ -18450,13 +18780,8 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {(bigint) standard___collection___array___AbstractArray___pop},
   {(bigint) standard___collection___array___AbstractArray___unshift},
   {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) 4 /* 100: AbstractArray < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {(bigint) standard___collection___abstract_collection___Sequence_____braeq},
+  {(bigint) standard___collection___array___AbstractArray___remove_at},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18469,9 +18794,10 @@ const classtable_elt_t VFT_standard___collection___array___AbstractArray[122] =
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 9 /* 119: AbstractArray < AbstractArray: superclass init_table position */},
+  {(bigint) 7 /* 118: AbstractArray < AbstractArray: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArray___enlarge},
   {(bigint) standard___collection___array___AbstractArray___insert},
+  {(bigint) standard___collection___array___AbstractArray___swap_at},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -18524,7 +18850,7 @@ void CHECKNEW_standard___collection___array___AbstractArray(val_t p0){
 val_t NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 0;
@@ -18540,27 +18866,25 @@ val_t NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___collection___array___Array[122] = {
-  {(bigint) 3715 /* 0: Identity */},
+  {(bigint) 3747 /* 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) 287 /* 4: Array < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 3715 /* 5: Array < Array: superclass typecheck marker */},
-  {(bigint) 275 /* 6: Array < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: Array < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: Array < MapRead: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: Array < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 2755 /* 10: Array < SequenceRead: superclass typecheck marker */},
-  {(bigint) 2795 /* 11: Array < Map: superclass typecheck marker */},
-  {(bigint) 3135 /* 12: Array < Sequence: superclass typecheck marker */},
-  {(bigint) 3199 /* 13: Array < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3747 /* 4: Array < Array: superclass typecheck marker */},
+  {(bigint) 295 /* 5: Array < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 283 /* 6: Array < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: Array < SequenceRead: superclass typecheck marker */},
+  {(bigint) 367 /* 8: Array < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: Array < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3039 /* 10: Array < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3187 /* 11: Array < Sequence: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3531 /* 15: Array < AbstractArray: superclass typecheck marker */},
+  {(bigint) 3567 /* 13: Array < AbstractArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: Array < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: 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},
@@ -18589,9 +18913,7 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 10 /* 49: Array < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {(bigint) 11 /* 51: Array < Array: superclass init_table position */},
+  {(bigint) 9 /* 47: Array < Array: superclass init_table position */},
   {(bigint) standard___collection___array___Array___init},
   {(bigint) standard___collection___array___Array___with_items},
   {(bigint) standard___collection___array___Array___with_capacity},
@@ -18600,12 +18922,16 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___collection___array___Array___intern_items},
   {(bigint) standard___collection___array___Array___sort},
   {(bigint) standard___collection___array___Array___sub_sort},
+  {(bigint) 8 /* 56: Array < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
+  {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) 2 /* 65: Array < Collection: superclass init_table position */},
+  {(bigint) 1 /* 65: Array < Collection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___iterator},
   {(bigint) standard___collection___array___Array___iterate},
   {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
@@ -18614,25 +18940,29 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___collection___array___AbstractArrayRead___has_only},
   {(bigint) standard___collection___array___AbstractArrayRead___count},
   {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) 8 /* 74: Array < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 0 /* 75: Array < SequenceRead: superclass init_table position */},
+  {(bigint) standard___collection___array___Array_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
+  {(bigint) 6 /* 79: Array < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArray___clear},
   {(bigint) standard___collection___array___AbstractArray___remove},
   {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 1 /* 78: Array < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___array___Array_____bra},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_key},
-  {(bigint) 7 /* 81: Array < SimpleCollection: superclass init_table position */},
+  {(bigint) 3 /* 83: Array < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 93: Array < SimpleCollection: superclass init_table position */},
   {(bigint) standard___collection___array___Array___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 0 /* 84: Array < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 6 /* 88: Array < Map: superclass init_table position */},
-  {(bigint) standard___collection___array___Array_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) 5 /* 92: Array < Sequence: superclass init_table position */},
+  {(bigint) 4 /* 96: Array < Sequence: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
   {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
   {(bigint) standard___collection___array___AbstractArray___push},
@@ -18640,13 +18970,8 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {(bigint) standard___collection___array___AbstractArray___pop},
   {(bigint) standard___collection___array___AbstractArray___unshift},
   {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) 4 /* 100: Array < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {(bigint) standard___collection___array___Array_____braeq},
+  {(bigint) standard___collection___array___AbstractArray___remove_at},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18659,9 +18984,10 @@ const classtable_elt_t VFT_standard___collection___array___Array[122] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 9 /* 119: Array < AbstractArray: superclass init_table position */},
+  {(bigint) 7 /* 118: Array < AbstractArray: superclass init_table position */},
   {(bigint) standard___collection___array___Array___enlarge},
   {(bigint) standard___collection___array___AbstractArray___insert},
+  {(bigint) standard___collection___array___AbstractArray___swap_at},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -18681,10 +19007,10 @@ void INIT_ATTRIBUTES__standard___collection___array___Array(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:329 */
+  /* ./../lib/standard//collection//array.nit:364 */
   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:337 */
+  /* ./../lib/standard//collection//array.nit:372 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
   /* ./../lib/standard//collection//array.nit:24 */
@@ -18729,16 +19055,16 @@ val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 297;
+  fra.me.line = 332;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//collection//array.nit:297 */
+  /* ./../lib/standard//collection//array.nit:332 */
   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);
@@ -18749,15 +19075,15 @@ val_t NEW_Array_standard___collection___array___Array___with_capacity(val_t p0){
 val_t NEW_Array_standard___collection___array___Array___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 282;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:282 */
+  /* ./../lib/standard//collection//array.nit:317 */
   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);
@@ -18769,10 +19095,10 @@ val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, va
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 306;
+  fra.me.line = 341;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___filled_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18780,7 +19106,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:306 */
+  /* ./../lib/standard//collection//array.nit:341 */
   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);
@@ -18791,17 +19117,17 @@ val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, va
 val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 289;
+  fra.me.line = 324;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:289 */
+  /* ./../lib/standard//collection//array.nit:324 */
   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);
@@ -18813,10 +19139,10 @@ val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, va
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 320;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_NEW_Array_standard___collection___array___Array___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -18824,7 +19150,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:320 */
+  /* ./../lib/standard//collection//array.nit:355 */
   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);
@@ -18832,16 +19158,14 @@ val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___ArrayIterator[60] = {
-  {(bigint) 3195 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___array___ArrayIterator[56] = {
+  {(bigint) 3031 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ArrayIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: ArrayIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: ArrayIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2123 /* 5: ArrayIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2835 /* 6: ArrayIterator < IndexedIterator: superclass typecheck marker */},
-  {(bigint) 3195 /* 7: ArrayIterator < ArrayIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 199 /* 4: ArrayIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2223 /* 5: ArrayIterator < IndexedIterator: superclass typecheck marker */},
+  {(bigint) 3031 /* 6: ArrayIterator < ArrayIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18853,7 +19177,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ArrayIterator < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ArrayIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -18883,15 +19207,13 @@ const classtable_elt_t VFT_standard___collection___array___ArrayIterator[60] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 2 /* 50: ArrayIterator < Iterator: superclass init_table position */},
+  {(bigint) 1 /* 48: ArrayIterator < Iterator: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayIterator___item},
   {(bigint) standard___collection___array___ArrayIterator___next},
   {(bigint) standard___collection___array___ArrayIterator___is_ok},
-  {(bigint) 1 /* 54: ArrayIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___IndexedIterator___key},
-  {(bigint) 0 /* 56: ArrayIterator < IndexedIterator: superclass init_table position */},
+  {(bigint) 0 /* 52: ArrayIterator < IndexedIterator: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayIterator___index},
-  {(bigint) 4 /* 58: ArrayIterator < ArrayIterator: superclass init_table position */},
+  {(bigint) 3 /* 54: ArrayIterator < ArrayIterator: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayIterator___init},
 };
 /* 0: Pointer to the classtable */
@@ -18910,7 +19232,7 @@ void INIT_ATTRIBUTES__standard___collection___array___ArrayIterator(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:409 */
+  /* ./../lib/standard//collection//array.nit:445 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -18951,17 +19273,17 @@ void CHECKNEW_standard___collection___array___ArrayIterator(val_t p0){
 val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
+  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 = 403;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_NEW_ArrayIterator_standard___collection___array___ArrayIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:403 */
+  /* ./../lib/standard//collection//array.nit:439 */
   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);
@@ -18969,20 +19291,18 @@ val_t NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___array___ArraySet[89] = {
-  {(bigint) 3519 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___array___ArraySet[101] = {
+  {(bigint) 3563 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ArraySet" /* 2: Class Name */},
   {(bigint) 3 /* 3: ArraySet < Object: superclass typecheck marker */},
+  {(bigint) 3183 /* 4: ArraySet < Set: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: ArraySet < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: ArraySet < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: ArraySet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3131 /* 8: ArraySet < Set: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: ArraySet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3519 /* 10: ArraySet < ArraySet: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 367 /* 8: ArraySet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: ArraySet < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3563 /* 10: ArraySet < ArraySet: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -18990,7 +19310,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 20: ArraySet < Object: superclass init_table position */},
+  {(bigint) 4 /* 18: ArraySet < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19019,6 +19339,9 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
+  {(bigint) 0 /* 47: ArraySet < Set: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19031,7 +19354,6 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 0 /* 61: ArraySet < Set: superclass init_table position */},
   {0} /* Class Hole :( */,
   {(bigint) standard___string___Collection___join},
   {(bigint) standard___collection___array___Collection___to_a},
@@ -19044,17 +19366,29 @@ const classtable_elt_t VFT_standard___collection___array___ArraySet[89] = {
   {(bigint) standard___collection___abstract_collection___Set___has_only},
   {(bigint) standard___collection___abstract_collection___Set___count},
   {(bigint) standard___collection___array___ArraySet___first},
-  {(bigint) 2 /* 74: ArraySet < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 79: ArraySet < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___array___ArraySet___clear},
   {(bigint) standard___collection___array___ArraySet___remove},
   {(bigint) standard___collection___array___ArraySet___remove_all},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 81: ArraySet < SimpleCollection: superclass init_table position */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 1 /* 93: ArraySet < SimpleCollection: superclass init_table position */},
   {(bigint) standard___collection___array___ArraySet___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 5 /* 84: ArraySet < ArraySet: superclass init_table position */},
+  {(bigint) 5 /* 96: ArraySet < ArraySet: superclass init_table position */},
   {(bigint) standard___collection___array___ArraySet___enlarge},
   {(bigint) standard___collection___array___ArraySet___remove_at},
   {(bigint) standard___collection___array___ArraySet___init},
@@ -19108,12 +19442,12 @@ 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 = 456;
+  fra.me.line = 493;
   fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:456 */
+  /* ./../lib/standard//collection//array.nit:493 */
   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);
@@ -19128,13 +19462,13 @@ 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 = 459;
+  fra.me.line = 496;
   fra.me.meth = LOCATE_NEW_ArraySet_standard___collection___array___ArraySet___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//collection//array.nit:459 */
+  /* ./../lib/standard//collection//array.nit:496 */
   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);
@@ -19142,15 +19476,13 @@ val_t NEW_ArraySet_standard___collection___array___ArraySet___with_capacity(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[56] = {
-  {(bigint) 2335 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[54] = {
+  {(bigint) 2363 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ArraySetIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: ArraySetIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: ArraySetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2335 /* 5: ArraySetIterator < ArraySetIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 199 /* 4: ArraySetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2363 /* 5: ArraySetIterator < ArraySetIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19163,7 +19495,7 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[56]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ArraySetIterator < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ArraySetIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19193,11 +19525,11 @@ const classtable_elt_t VFT_standard___collection___array___ArraySetIterator[56]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 50: ArraySetIterator < Iterator: superclass init_table position */},
+  {(bigint) 0 /* 48: ArraySetIterator < Iterator: superclass init_table position */},
   {(bigint) standard___collection___array___ArraySetIterator___item},
   {(bigint) standard___collection___array___ArraySetIterator___next},
   {(bigint) standard___collection___array___ArraySetIterator___is_ok},
-  {(bigint) 2 /* 54: ArraySetIterator < ArraySetIterator: superclass init_table position */},
+  {(bigint) 2 /* 52: ArraySetIterator < ArraySetIterator: superclass init_table position */},
   {(bigint) standard___collection___array___ArraySetIterator___init},
 };
 /* 0: Pointer to the classtable */
@@ -19248,14 +19580,14 @@ 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 = 473;
+  fra.me.line = 510;
   fra.me.meth = LOCATE_NEW_ArraySetIterator_standard___collection___array___ArraySetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:473 */
+  /* ./../lib/standard//collection//array.nit:510 */
   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);
@@ -19263,28 +19595,26 @@ 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[99] = {
-  {(bigint) 3523 /* 0: Identity */},
-  {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_standard___collection___array___ArrayMap[72] = {
+  {(bigint) 3235 /* 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) 2139 /* 6: ArrayMap < Map: superclass typecheck marker */},
+  {(bigint) 2991 /* 7: ArrayMap < CoupleMap: superclass typecheck marker */},
+  {(bigint) 3235 /* 8: ArrayMap < ArrayMap: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: ArrayMap < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: ArrayMap < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: ArrayMap < MapRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2795 /* 11: ArrayMap < Map: superclass typecheck marker */},
-  {(bigint) 3191 /* 12: ArrayMap < CoupleMap: superclass typecheck marker */},
-  {(bigint) 3523 /* 13: ArrayMap < ArrayMap: 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) 5 /* 20: ArrayMap < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ArrayMap < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19300,7 +19630,7 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[99] = {
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19313,52 +19643,27 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[99] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {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 :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 4 /* 65: ArrayMap < Collection: superclass init_table position */},
+  {(bigint) 2 /* 47: ArrayMap < MapRead: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
   {(bigint) standard___collection___array___ArrayMap___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___abstract_collection___MapRead___iterate},
+  {(bigint) standard___collection___array___ArrayMap___values},
+  {(bigint) standard___collection___array___ArrayMap___keys},
   {(bigint) standard___collection___array___ArrayMap___is_empty},
   {(bigint) standard___collection___array___ArrayMap___length},
-  {(bigint) standard___collection___array___ArrayMap___has},
-  {(bigint) standard___collection___array___ArrayMap___has_only},
-  {(bigint) standard___collection___array___ArrayMap___count},
-  {(bigint) standard___collection___array___ArrayMap___first},
-  {(bigint) 2 /* 74: ArrayMap < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap___clear},
-  {(bigint) standard___collection___array___ArrayMap___remove},
-  {(bigint) standard___collection___array___ArrayMap___remove_all},
-  {(bigint) 3 /* 78: ArrayMap < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayMap_____bra},
-  {(bigint) standard___collection___array___ArrayMap___has_key},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 1 /* 88: ArrayMap < Map: superclass init_table position */},
+  {(bigint) standard___string___Map___join},
+  {(bigint) 1 /* 59: ArrayMap < Map: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap_____braeq},
-  {(bigint) standard___collection___array___ArrayMap___remove_at},
   {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) 0 /* 92: ArrayMap < CoupleMap: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMap___clear},
+  {(bigint) 0 /* 63: ArrayMap < CoupleMap: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayMap___couple_at},
-  {(bigint) 6 /* 94: ArrayMap < ArrayMap: superclass init_table position */},
+  {(bigint) 4 /* 65: 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},
   {(bigint) standard___collection___array___ArrayMap___remove_at_index},
   {(bigint) standard___collection___array___ArrayMap___index},
@@ -19366,10 +19671,12 @@ const classtable_elt_t VFT_standard___collection___array___ArrayMap[99] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute ArrayMap::_items */
-/* 3: Attribute ArrayMap::_last_index */
+/* 2: Attribute ArrayMap::@keys */
+/* 3: Attribute ArrayMap::@values */
+/* 4: Attribute ArrayMap::_items */
+/* 5: Attribute ArrayMap::_last_index */
 void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -19377,10 +19684,19 @@ void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0){
   fra.me.line = 0;
   fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMap;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:594 */
+  /* ./../lib/standard//collection//array.nit:542 */
+  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:543 */
+  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:578 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -19388,7 +19704,7 @@ void INIT_ATTRIBUTES__standard___collection___array___ArrayMap(val_t p0){
 val_t NEW_standard___collection___array___ArrayMap(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 4);
+  obj = alloc(sizeof(val_t) * 6);
   obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMap;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -19406,6 +19722,16 @@ void CHECKNEW_standard___collection___array___ArrayMap(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  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_nitc, 0);
+  }
+  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_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -19421,15 +19747,15 @@ void CHECKNEW_standard___collection___array___ArrayMap(val_t p0){
 val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[7] = {0, 0, 0, 0, 0, 0, 0};
+  int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 614;
+  fra.me.line = 598;
   fra.me.meth = LOCATE_NEW_ArrayMap_standard___collection___array___ArrayMap___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//array.nit:614 */
+  /* ./../lib/standard//collection//array.nit:598 */
   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);
@@ -19437,7 +19763,309 @@ val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___array___NativeArray[53] = {
+const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[87] = {
+  {(bigint) 3027 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayMapKeys" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayMapKeys < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: ArrayMapKeys < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 367 /* 8: ArrayMapKeys < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3027 /* 9: ArrayMapKeys < ArrayMapKeys: superclass typecheck marker */},
+  {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___time___Object___get_time},
+  {(bigint) 2 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(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) 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 :( */,
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 65: ArrayMapKeys < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___ArrayMapKeys___is_empty},
+  {(bigint) standard___collection___array___ArrayMapKeys___length},
+  {(bigint) standard___collection___array___ArrayMapKeys___has},
+  {(bigint) standard___collection___array___ArrayMapKeys___has_only},
+  {(bigint) standard___collection___array___ArrayMapKeys___count},
+  {(bigint) standard___collection___array___ArrayMapKeys___first},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 79: ArrayMapKeys < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___clear},
+  {(bigint) standard___collection___array___ArrayMapKeys___remove},
+  {(bigint) standard___collection___array___ArrayMapKeys___remove_all},
+  {(bigint) 3 /* 83: ArrayMapKeys < ArrayMapKeys: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapKeys___map},
+  {(bigint) standard___collection___array___ArrayMapKeys___map__eq},
+  {(bigint) standard___collection___array___ArrayMapKeys___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMapKeys::@map */
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayMapKeys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapKeys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___array___ArrayMapKeys(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_standard___collection___array___ArrayMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___array___ArrayMapKeys();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
+  standard___collection___array___ArrayMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayMapKeys(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[87] = {
+  {(bigint) 3023 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "ArrayMapValues" /* 2: Class Name */},
+  {(bigint) 3 /* 3: ArrayMapValues < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: ArrayMapValues < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 367 /* 8: ArrayMapValues < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 3023 /* 9: ArrayMapValues < ArrayMapValues: superclass typecheck marker */},
+  {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___time___Object___get_time},
+  {(bigint) 2 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(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) 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 :( */,
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 65: ArrayMapValues < Collection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___array___ArrayMapValues___is_empty},
+  {(bigint) standard___collection___array___ArrayMapValues___length},
+  {(bigint) standard___collection___array___ArrayMapValues___has},
+  {(bigint) standard___collection___array___ArrayMapValues___has_only},
+  {(bigint) standard___collection___array___ArrayMapValues___count},
+  {(bigint) standard___collection___array___ArrayMapValues___first},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 79: ArrayMapValues < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___clear},
+  {(bigint) standard___collection___array___ArrayMapValues___remove},
+  {(bigint) standard___collection___array___ArrayMapValues___remove_all},
+  {(bigint) 3 /* 83: ArrayMapValues < ArrayMapValues: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayMapValues___map},
+  {(bigint) standard___collection___array___ArrayMapValues___map__eq},
+  {(bigint) standard___collection___array___ArrayMapValues___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute ArrayMapValues::@map */
+void INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___array___ArrayMapValues(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___array___ArrayMapValues;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___array___ArrayMapValues(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_standard___collection___array___ArrayMapValues;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___array___ArrayMapValues();
+  INIT_ATTRIBUTES__standard___collection___array___ArrayMapValues(fra.me.REG[1]);
+  standard___collection___array___ArrayMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___array___ArrayMapValues(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___array___NativeArray[51] = {
   {(bigint) 123 /* 0: Identity */},
   {(bigint) -1 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeArray" /* 2: Class Name */},
@@ -19454,11 +20082,9 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[53] = {
   {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) 0 /* 20: NativeArray < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: NativeArray < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19487,7 +20113,7 @@ const classtable_elt_t VFT_standard___collection___array___NativeArray[53] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: NativeArray < NativeArray: superclass init_table position */},
+  {(bigint) 1 /* 47: NativeArray < NativeArray: superclass init_table position */},
   {(bigint) standard___collection___array___NativeArray_____bra},
   {(bigint) standard___collection___array___NativeArray_____braeq},
   {(bigint) standard___collection___array___NativeArray___copy_to},
@@ -19503,14 +20129,12 @@ val_t NEW_NativeArray(size_t length, size_t size) {
   array->size = length;
   return OBJ2VAL(array);
 }
-const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[56] = {
-  {(bigint) 291 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[54] = {
+  {(bigint) 299 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbstractSorter" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbstractSorter < Object: superclass typecheck marker */},
-  {(bigint) 291 /* 4: AbstractSorter < AbstractSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 299 /* 4: AbstractSorter < AbstractSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19524,7 +20148,7 @@ const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[56] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: AbstractSorter < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: AbstractSorter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19553,7 +20177,7 @@ const classtable_elt_t VFT_standard___collection___sorter___AbstractSorter[56] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: AbstractSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) 1 /* 47: AbstractSorter < AbstractSorter: superclass init_table position */},
   {(bigint) standard___collection___sorter___AbstractSorter___compare},
   {(bigint) standard___collection___sorter___AbstractSorter___sort},
   {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
@@ -19612,15 +20236,13 @@ val_t NEW_AbstractSorter_standard___collection___sorter___AbstractSorter___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58] = {
-  {(bigint) 2307 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[56] = {
+  {(bigint) 2335 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ComparableSorter" /* 2: Class Name */},
   {(bigint) 3 /* 3: ComparableSorter < Object: superclass typecheck marker */},
-  {(bigint) 291 /* 4: ComparableSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 2307 /* 5: ComparableSorter < ComparableSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 299 /* 4: ComparableSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 2335 /* 5: ComparableSorter < ComparableSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19633,7 +20255,7 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ComparableSorter < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ComparableSorter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19662,14 +20284,14 @@ const classtable_elt_t VFT_standard___collection___sorter___ComparableSorter[58]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ComparableSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) 1 /* 47: ComparableSorter < AbstractSorter: superclass init_table position */},
   {(bigint) standard___collection___sorter___ComparableSorter___compare},
   {(bigint) standard___collection___sorter___AbstractSorter___sort},
   {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___init},
-  {(bigint) 2 /* 56: ComparableSorter < ComparableSorter: superclass init_table position */},
+  {(bigint) 2 /* 54: ComparableSorter < ComparableSorter: superclass init_table position */},
   {(bigint) standard___collection___sorter___ComparableSorter___init},
 };
 /* 0: Pointer to the classtable */
@@ -19724,17 +20346,15 @@ val_t NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___i
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashCollection[74] = {
-  {(bigint) 2247 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___hash_collection___HashCollection[93] = {
+  {(bigint) 2271 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashCollection" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashCollection < Object: superclass typecheck marker */},
-  {(bigint) 287 /* 4: HashCollection < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: HashCollection < HashCollection: superclass typecheck marker */},
-  {(bigint) 275 /* 6: HashCollection < Collection: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 295 /* 5: HashCollection < ArrayCapable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2271 /* 7: HashCollection < HashCollection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19745,7 +20365,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: HashCollection < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: HashCollection < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19761,7 +20381,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {(bigint) standard___file___Object___stdin},
   {(bigint) standard___file___Object___stdout},
   {(bigint) standard___file___Object___stderr},
-  {(bigint) standard___string___Collection___to_s},
+  {(bigint) standard___string___Object___to_s},
   {(bigint) standard___string___Object___native_class_name},
   {(bigint) standard___string___Object___class_name},
   {(bigint) standard___string___Object___inspect},
@@ -19774,9 +20394,43 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: HashCollection < ArrayCapable: superclass init_table position */},
+  {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) 0 /* 56: HashCollection < ArrayCapable: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {(bigint) 3 /* 51: HashCollection < HashCollection: superclass init_table position */},
+  {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 :( */,
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 83: HashCollection < HashCollection: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashCollection___first_item},
   {(bigint) standard___collection___hash_collection___HashCollection___index_at},
   {(bigint) standard___collection___hash_collection___HashCollection___node_at},
@@ -19786,19 +20440,6 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashCollect
   {(bigint) standard___collection___hash_collection___HashCollection___raz},
   {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
   {(bigint) standard___collection___hash_collection___HashCollection___init},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 0 /* 65: HashCollection < Collection: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___Collection___iterator},
-  {(bigint) standard___collection___abstract_collection___Collection___iterate},
-  {(bigint) standard___collection___abstract_collection___Collection___is_empty},
-  {(bigint) standard___collection___hash_collection___HashCollection___length},
-  {(bigint) standard___collection___abstract_collection___Collection___has},
-  {(bigint) standard___collection___abstract_collection___Collection___has_only},
-  {(bigint) standard___collection___abstract_collection___Collection___count},
-  {(bigint) standard___collection___abstract_collection___Collection___first},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -19881,7 +20522,7 @@ void CHECKNEW_standard___collection___hash_collection___HashCollection(val_t p0)
 val_t NEW_HashCollection_standard___collection___hash_collection___HashCollection___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  int init_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;
@@ -19897,13 +20538,11 @@ val_t NEW_HashCollection_standard___collection___hash_collection___HashCollectio
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55] = {
-  {(bigint) 243 /* 0: Identity */},
+  {(bigint) 251 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashNode" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashNode < Object: superclass typecheck marker */},
-  {(bigint) 243 /* 4: HashNode < HashNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 251 /* 4: HashNode < HashNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -19917,7 +20556,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: HashNode < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: HashNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -19946,7 +20585,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashNode[55
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: HashNode < HashNode: superclass init_table position */},
+  {(bigint) 1 /* 47: HashNode < HashNode: superclass init_table position */},
+  {(bigint) 251 /* 48: VT HashNode::N : id of HashNode */},
+  {(bigint) 4 /* 49: VT HashNode::N : color of HashNode */},
   {(bigint) standard___collection___hash_collection___HashNode___next_item},
   {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
   {(bigint) standard___collection___hash_collection___HashNode___prev_item},
@@ -19972,16 +20613,16 @@ void INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode(val_t p
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  /* ./../lib/standard//collection//hash_collection.nit:194 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  /* ./../lib/standard//collection//hash_collection.nit:195 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -20020,14 +20661,14 @@ val_t NEW_HashNode_standard___collection___hash_collection___HashNode___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 = 194;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_NEW_HashNode_standard___collection___hash_collection___HashNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:194 */
+  /* ./../lib/standard//collection//hash_collection.nit:196 */
   fra.me.REG[1] = NEW_standard___collection___hash_collection___HashNode();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashNode(fra.me.REG[1]);
   standard___collection___hash_collection___HashNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -20035,19 +20676,380 @@ val_t NEW_HashNode_standard___collection___hash_collection___HashNode___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[92] = {
-  {(bigint) 3183 /* 0: Identity */},
-  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[93] = {
+  {(bigint) 2971 /* 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) 287 /* 4: HashMap < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: HashMap < HashCollection: superclass typecheck marker */},
-  {(bigint) 275 /* 6: HashMap < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: HashMap < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: HashMap < MapRead: superclass typecheck marker */},
-  {(bigint) 3183 /* 9: HashMap < HashMap: superclass typecheck marker */},
+  {(bigint) 135 /* 4: HashMap < MapRead: superclass typecheck marker */},
+  {(bigint) 295 /* 5: HashMap < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 2139 /* 6: HashMap < Map: superclass typecheck marker */},
+  {(bigint) 2271 /* 7: HashMap < HashCollection: superclass typecheck marker */},
+  {(bigint) 2971 /* 8: HashMap < HashMap: superclass typecheck marker */},
+  {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___time___Object___get_time},
+  {(bigint) 2 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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 /* 47: HashMap < MapRead: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMap_____bra},
+  {(bigint) standard___collection___abstract_collection___MapRead___has_key},
+  {(bigint) standard___collection___hash_collection___HashMap___iterator},
+  {(bigint) standard___collection___hash_collection___HashMap___iterate},
+  {(bigint) standard___collection___hash_collection___HashMap___values},
+  {(bigint) standard___collection___hash_collection___HashMap___keys},
+  {(bigint) standard___collection___hash_collection___HashMap___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMap___length},
+  {(bigint) 3 /* 56: HashMap < ArrayCapable: superclass init_table position */},
+  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
+  {(bigint) standard___string___Map___join},
+  {(bigint) 0 /* 59: 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 /* 63: 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},
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 4 /* 83: HashMap < HashCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
+  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
+  {(bigint) standard___collection___hash_collection___HashCollection___store},
+  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
+  {(bigint) standard___collection___hash_collection___HashCollection___raz},
+  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
+  {(bigint) standard___collection___hash_collection___HashCollection___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMap::_array */
+/* 3: Attribute HashMap::_capacity */
+/* 4: Attribute HashMap::_length */
+/* 5: Attribute HashMap::_first_item */
+/* 6: Attribute HashMap::_last_item */
+/* 7: Attribute HashMap::_last_accessed_key */
+/* 8: Attribute HashMap::_last_accessed_node */
+/* 9: Attribute HashMap::@keys */
+/* 10: Attribute HashMap::@values */
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(val_t p0){
+  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_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:255 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1]);
+  ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:256 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1]);
+  ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:23 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:24 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:25 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:27 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:28 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:30 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//collection//hash_collection.nit:33 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMap(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMap;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___hash_collection___HashMap(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_standard___collection___hash_collection___HashMap;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init(void){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  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 = 248;
+  fra.me.meth = LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  /* ./../lib/standard//collection//hash_collection.nit:248 */
+  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashMap();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  standard___collection___hash_collection___HashMap___init(fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys[87] = {
+  {(bigint) 2967 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapKeys" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapKeys < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: HashMapKeys < Collection: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {(bigint) 367 /* 8: HashMapKeys < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2967 /* 9: HashMapKeys < HashMapKeys: superclass typecheck marker */},
+  {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___time___Object___get_time},
+  {(bigint) 2 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(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) 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 :( */,
+  {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 :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) standard___string___Collection___join},
+  {(bigint) standard___collection___array___Collection___to_a},
+  {(bigint) 1 /* 65: HashMapKeys < Collection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___length},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___has},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___has_only},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___count},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___first},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 79: HashMapKeys < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___clear},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___remove},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___remove_all},
+  {(bigint) 3 /* 83: HashMapKeys < HashMapKeys: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___map},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___map__eq},
+  {(bigint) standard___collection___hash_collection___HashMapKeys___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute HashMapKeys::@map */
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_standard___collection___hash_collection___HashMapKeys(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapKeys;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_standard___collection___hash_collection___HashMapKeys(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_standard___collection___hash_collection___HashMapKeys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[4] = {0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapKeys();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
+  standard___collection___hash_collection___HashMapKeys___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapKeys(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValues[87] = {
+  {(bigint) 2963 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "HashMapValues" /* 2: Class Name */},
+  {(bigint) 3 /* 3: HashMapValues < Object: superclass typecheck marker */},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: HashMapValues < Collection: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 2795 /* 11: HashMap < Map: superclass typecheck marker */},
+  {(bigint) 367 /* 8: HashMapValues < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2963 /* 9: HashMapValues < HashMapValues: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20056,7 +21058,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[92]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 20: HashMap < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: HashMapValues < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20085,156 +21087,116 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[92]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 5 /* 49: HashMap < ArrayCapable: superclass init_table position */},
-  {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {(bigint) 6 /* 51: HashMap < HashCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
-  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
-  {(bigint) standard___collection___hash_collection___HashCollection___store},
-  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
-  {(bigint) standard___collection___hash_collection___HashCollection___raz},
-  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
-  {(bigint) standard___collection___hash_collection___HashCollection___init},
-  {(bigint) 7 /* 61: HashMap < HashMap: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap___init},
-  {(bigint) standard___string___Collection___join},
-  {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 3 /* 65: HashMap < Collection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap___iterator},
-  {(bigint) standard___collection___hash_collection___HashMap___iterate},
-  {(bigint) standard___collection___hash_collection___HashMap___is_empty},
-  {(bigint) standard___collection___hash_collection___HashCollection___length},
-  {(bigint) standard___collection___hash_collection___HashMap___has},
-  {(bigint) standard___collection___hash_collection___HashMap___has_only},
-  {(bigint) standard___collection___hash_collection___HashMap___count},
-  {(bigint) standard___collection___hash_collection___HashMap___first},
-  {(bigint) 1 /* 74: HashMap < RemovableCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap___clear},
-  {(bigint) standard___collection___hash_collection___HashMap___remove},
-  {(bigint) standard___collection___abstract_collection___RemovableCollection___remove_all},
-  {(bigint) 2 /* 78: HashMap < MapRead: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap_____bra},
-  {(bigint) standard___collection___hash_collection___HashMap___has_key},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 0 /* 88: HashMap < Map: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMap_____braeq},
-  {(bigint) standard___collection___hash_collection___HashMap___remove_at},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
+  {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) 1 /* 65: HashMapValues < Collection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___iterator},
+  {(bigint) standard___collection___abstract_collection___Collection___iterate},
+  {(bigint) standard___collection___hash_collection___HashMapValues___is_empty},
+  {(bigint) standard___collection___hash_collection___HashMapValues___length},
+  {(bigint) standard___collection___hash_collection___HashMapValues___has},
+  {(bigint) standard___collection___hash_collection___HashMapValues___has_only},
+  {(bigint) standard___collection___hash_collection___HashMapValues___count},
+  {(bigint) standard___collection___hash_collection___HashMapValues___first},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 0 /* 79: HashMapValues < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___clear},
+  {(bigint) standard___collection___hash_collection___HashMapValues___remove},
+  {(bigint) standard___collection___hash_collection___HashMapValues___remove_all},
+  {(bigint) 3 /* 83: HashMapValues < HashMapValues: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashMapValues___map},
+  {(bigint) standard___collection___hash_collection___HashMapValues___map__eq},
+  {(bigint) standard___collection___hash_collection___HashMapValues___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute HashMap::_array */
-/* 3: Attribute HashMap::_capacity */
-/* 4: Attribute HashMap::_length */
-/* 5: Attribute HashMap::_first_item */
-/* 6: Attribute HashMap::_last_item */
-/* 7: Attribute HashMap::_last_accessed_key */
-/* 8: Attribute HashMap::_last_accessed_node */
-void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
+/* 2: Attribute HashMapValues::@map */
+void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(val_t p0){
+  struct {struct stack_frame_t me;} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
   fra.me.line = 0;
-  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:23 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:24 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:25 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:27 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:28 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:30 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:33 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_standard___collection___hash_collection___HashCollection____last_accessed_node(fra.me.REG[0]) = fra.me.REG[1];
+  fra.me.REG_size = 0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_standard___collection___hash_collection___HashMap(void)
+val_t NEW_standard___collection___hash_collection___HashMapValues(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 9);
-  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMap;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_standard___collection___hash_collection___HashMapValues;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_standard___collection___hash_collection___HashMap(val_t p0){
+void CHECKNEW_standard___collection___hash_collection___HashMapValues(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_standard___collection___hash_collection___HashMap;
+  fra.me.meth = LOCATE_CHECKNEW_standard___collection___hash_collection___HashMapValues;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init(void){
-  struct {struct stack_frame_t me;} fra;
+val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[8] = {0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 295;
-  fra.me.meth = LOCATE_NEW_HashMap_standard___collection___hash_collection___HashMap___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//hash_collection.nit:295 */
-  fra.me.REG[0] = NEW_standard___collection___hash_collection___HashMap();
-  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMap(fra.me.REG[0]);
-  standard___collection___hash_collection___HashMap___init(fra.me.REG[0], init_table);
-  CHECKNEW_standard___collection___hash_collection___HashMap(fra.me.REG[0]);
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapValues();
+  INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
+  standard___collection___hash_collection___HashMapValues___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_standard___collection___hash_collection___HashMapValues(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode[57] = {
-  {(bigint) 2243 /* 0: Identity */},
+  {(bigint) 2263 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashMapNode" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashMapNode < Object: superclass typecheck marker */},
-  {(bigint) 243 /* 4: HashMapNode < HashNode: superclass typecheck marker */},
-  {(bigint) 2243 /* 5: HashMapNode < HashMapNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 251 /* 4: HashMapNode < HashNode: superclass typecheck marker */},
+  {(bigint) 2263 /* 5: HashMapNode < HashMapNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20247,7 +21209,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: HashMapNode < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: HashMapNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20276,7 +21238,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: HashMapNode < HashNode: superclass init_table position */},
+  {(bigint) 1 /* 47: HashMapNode < HashNode: superclass init_table position */},
+  {(bigint) 2263 /* 48: VT HashMapNode::N : id of HashMapNode */},
+  {(bigint) 5 /* 49: VT HashMapNode::N : color of HashMapNode */},
   {(bigint) standard___collection___hash_collection___HashNode___next_item},
   {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
   {(bigint) standard___collection___hash_collection___HashNode___prev_item},
@@ -20305,16 +21269,16 @@ void INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  /* ./../lib/standard//collection//hash_collection.nit:194 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  /* ./../lib/standard//collection//hash_collection.nit:195 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -20353,7 +21317,7 @@ val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___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 = 308;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -20362,7 +21326,7 @@ val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___in
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:308 */
+  /* ./../lib/standard//collection//hash_collection.nit:356 */
   fra.me.REG[2] = NEW_standard___collection___hash_collection___HashMapNode();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapNode(fra.me.REG[2]);
   standard___collection___hash_collection___HashMapNode___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -20370,15 +21334,13 @@ val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIterator[58] = {
-  {(bigint) 2943 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIterator[54] = {
+  {(bigint) 2267 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashMapIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashMapIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: HashMapIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2123 /* 5: HashMapIterator < MapIterator: superclass typecheck marker */},
-  {(bigint) 2943 /* 6: HashMapIterator < HashMapIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 139 /* 4: HashMapIterator < MapIterator: superclass typecheck marker */},
+  {(bigint) 2267 /* 5: HashMapIterator < HashMapIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20391,7 +21353,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: HashMapIterator < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: HashMapIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20420,14 +21382,12 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIter
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 1 /* 50: HashMapIterator < Iterator: superclass init_table position */},
+  {(bigint) 0 /* 47: HashMapIterator < MapIterator: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashMapIterator___item},
+  {(bigint) standard___collection___hash_collection___HashMapIterator___key},
   {(bigint) standard___collection___hash_collection___HashMapIterator___next},
   {(bigint) standard___collection___hash_collection___HashMapIterator___is_ok},
-  {(bigint) 0 /* 54: HashMapIterator < MapIterator: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashMapIterator___key},
-  {(bigint) 3 /* 56: HashMapIterator < HashMapIterator: superclass init_table position */},
+  {(bigint) 2 /* 52: HashMapIterator < HashMapIterator: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashMapIterator___init},
 };
 /* 0: Pointer to the classtable */
@@ -20476,17 +21436,17 @@ void CHECKNEW_standard___collection___hash_collection___HashMapIterator(val_t p0
 val_t NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[4] = {0, 0, 0, 0};
+  int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 349;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:349 */
+  /* ./../lib/standard//collection//hash_collection.nit:397 */
   fra.me.REG[1] = NEW_standard___collection___hash_collection___HashMapIterator();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashMapIterator(fra.me.REG[1]);
   standard___collection___hash_collection___HashMapIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -20494,20 +21454,18 @@ val_t NEW_HashMapIterator_standard___collection___hash_collection___HashMapItera
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[84] = {
-  {(bigint) 3515 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[96] = {
+  {(bigint) 3559 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashSet" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashSet < Object: superclass typecheck marker */},
-  {(bigint) 287 /* 4: HashSet < ArrayCapable: superclass typecheck marker */},
-  {(bigint) 2247 /* 5: HashSet < HashCollection: superclass typecheck marker */},
-  {(bigint) 275 /* 6: HashSet < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: HashSet < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 3131 /* 8: HashSet < Set: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: HashSet < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 3515 /* 10: HashSet < HashSet: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 3183 /* 4: HashSet < Set: superclass typecheck marker */},
+  {(bigint) 295 /* 5: HashSet < ArrayCapable: superclass typecheck marker */},
+  {(bigint) 283 /* 6: HashSet < Collection: superclass typecheck marker */},
+  {(bigint) 2271 /* 7: HashSet < HashCollection: superclass typecheck marker */},
+  {(bigint) 367 /* 8: HashSet < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: HashSet < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3559 /* 10: HashSet < HashSet: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20515,7 +21473,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[84]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 20: HashSet < Object: superclass init_table position */},
+  {(bigint) 4 /* 18: HashSet < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20544,19 +21502,21 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[84]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 5 /* 49: HashSet < ArrayCapable: superclass init_table position */},
+  {(bigint) 0 /* 47: HashSet < Set: superclass init_table position */},
+  {(bigint) 7 /* 48: HashSet < HashSet: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashSet___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 5 /* 56: HashSet < ArrayCapable: superclass init_table position */},
   {(bigint) standard___collection___array___ArrayCapable___calloc_array},
-  {(bigint) 6 /* 51: HashSet < HashCollection: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
-  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
-  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
-  {(bigint) standard___collection___hash_collection___HashCollection___store},
-  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
-  {(bigint) standard___collection___hash_collection___HashCollection___raz},
-  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
-  {(bigint) standard___collection___hash_collection___HashCollection___init},
-  {(bigint) 0 /* 61: HashSet < Set: superclass init_table position */},
+  {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},
@@ -20564,19 +21524,31 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSet[84]
   {(bigint) standard___collection___hash_collection___HashSet___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___hash_collection___HashSet___is_empty},
-  {(bigint) standard___collection___hash_collection___HashCollection___length},
+  {(bigint) standard___collection___hash_collection___HashSet___length},
   {(bigint) standard___collection___hash_collection___HashSet___has},
   {(bigint) standard___collection___abstract_collection___Set___has_only},
   {(bigint) standard___collection___abstract_collection___Set___count},
   {(bigint) standard___collection___hash_collection___HashSet___first},
-  {(bigint) 2 /* 74: HashSet < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 2 /* 79: HashSet < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashSet___clear},
   {(bigint) standard___collection___hash_collection___HashSet___remove},
   {(bigint) standard___collection___abstract_collection___Set___remove_all},
-  {(bigint) 7 /* 78: HashSet < HashSet: superclass init_table position */},
-  {(bigint) standard___collection___hash_collection___HashSet___init},
-  {0} /* Class Hole :( */,
-  {(bigint) 1 /* 81: HashSet < SimpleCollection: superclass init_table position */},
+  {(bigint) 6 /* 83: HashSet < HashCollection: superclass init_table position */},
+  {(bigint) standard___collection___hash_collection___HashCollection___first_item},
+  {(bigint) standard___collection___hash_collection___HashCollection___index_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at},
+  {(bigint) standard___collection___hash_collection___HashCollection___node_at_idx},
+  {(bigint) standard___collection___hash_collection___HashCollection___store},
+  {(bigint) standard___collection___hash_collection___HashCollection___remove_node},
+  {(bigint) standard___collection___hash_collection___HashCollection___raz},
+  {(bigint) standard___collection___hash_collection___HashCollection___enlarge},
+  {(bigint) standard___collection___hash_collection___HashCollection___init},
+  {(bigint) 1 /* 93: HashSet < SimpleCollection: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashSet___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
 };
@@ -20664,12 +21636,12 @@ val_t NEW_HashSet_standard___collection___hash_collection___HashSet___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 = 390;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_NEW_HashSet_standard___collection___hash_collection___HashSet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//collection//hash_collection.nit:390 */
+  /* ./../lib/standard//collection//hash_collection.nit:442 */
   fra.me.REG[0] = NEW_standard___collection___hash_collection___HashSet();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashSet(fra.me.REG[0]);
   standard___collection___hash_collection___HashSet___init(fra.me.REG[0], init_table);
@@ -20678,14 +21650,12 @@ val_t NEW_HashSet_standard___collection___hash_collection___HashSet___init(void)
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode[57] = {
-  {(bigint) 2235 /* 0: Identity */},
+  {(bigint) 2255 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashSetNode" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashSetNode < Object: superclass typecheck marker */},
-  {(bigint) 243 /* 4: HashSetNode < HashNode: superclass typecheck marker */},
-  {(bigint) 2235 /* 5: HashSetNode < HashSetNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 251 /* 4: HashSetNode < HashNode: superclass typecheck marker */},
+  {(bigint) 2255 /* 5: HashSetNode < HashSetNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20698,7 +21668,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: HashSetNode < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: HashSetNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20727,7 +21697,9 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetNode
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: HashSetNode < HashNode: superclass init_table position */},
+  {(bigint) 1 /* 47: HashSetNode < HashNode: superclass init_table position */},
+  {(bigint) 2255 /* 48: VT HashSetNode::N : id of HashSetNode */},
+  {(bigint) 5 /* 49: VT HashSetNode::N : color of HashSetNode */},
   {(bigint) standard___collection___hash_collection___HashNode___next_item},
   {(bigint) standard___collection___hash_collection___HashNode___next_item__eq},
   {(bigint) standard___collection___hash_collection___HashNode___prev_item},
@@ -20755,16 +21727,16 @@ void INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode(val_
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:192 */
+  /* ./../lib/standard//collection//hash_collection.nit:194 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:193 */
+  /* ./../lib/standard//collection//hash_collection.nit:195 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -20803,14 +21775,14 @@ val_t NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___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 = 402;
+  fra.me.line = 454;
   fra.me.meth = LOCATE_NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:402 */
+  /* ./../lib/standard//collection//hash_collection.nit:454 */
   fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetNode();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetNode(fra.me.REG[1]);
   standard___collection___hash_collection___HashSetNode___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -20818,15 +21790,13 @@ val_t NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIterator[56] = {
-  {(bigint) 2239 /* 0: Identity */},
+const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIterator[54] = {
+  {(bigint) 2259 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "HashSetIterator" /* 2: Class Name */},
   {(bigint) 3 /* 3: HashSetIterator < Object: superclass typecheck marker */},
-  {(bigint) 191 /* 4: HashSetIterator < Iterator: superclass typecheck marker */},
-  {(bigint) 2239 /* 5: HashSetIterator < HashSetIterator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 199 /* 4: HashSetIterator < Iterator: superclass typecheck marker */},
+  {(bigint) 2259 /* 5: HashSetIterator < HashSetIterator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -20839,7 +21809,7 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: HashSetIterator < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: HashSetIterator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -20869,11 +21839,11 @@ const classtable_elt_t VFT_standard___collection___hash_collection___HashSetIter
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___collection___array___Iterator___to_a},
-  {(bigint) 0 /* 50: HashSetIterator < Iterator: superclass init_table position */},
+  {(bigint) 0 /* 48: HashSetIterator < Iterator: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashSetIterator___item},
   {(bigint) standard___collection___hash_collection___HashSetIterator___next},
   {(bigint) standard___collection___hash_collection___HashSetIterator___is_ok},
-  {(bigint) 2 /* 54: HashSetIterator < HashSetIterator: superclass init_table position */},
+  {(bigint) 2 /* 52: HashSetIterator < HashSetIterator: superclass init_table position */},
   {(bigint) standard___collection___hash_collection___HashSetIterator___init},
 };
 /* 0: Pointer to the classtable */
@@ -20925,14 +21895,14 @@ val_t NEW_HashSetIterator_standard___collection___hash_collection___HashSetItera
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 430;
+  fra.me.line = 482;
   fra.me.meth = LOCATE_NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:430 */
+  /* ./../lib/standard//collection//hash_collection.nit:482 */
   fra.me.REG[1] = NEW_standard___collection___hash_collection___HashSetIterator();
   INIT_ATTRIBUTES__standard___collection___hash_collection___HashSetIterator(fra.me.REG[1]);
   standard___collection___hash_collection___HashSetIterator___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -20940,28 +21910,26 @@ 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[140] = {
-  {(bigint) 3707 /* 0: Identity */},
+const classtable_elt_t VFT_standard___string___String[142] = {
+  {(bigint) 3535 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "String" /* 2: Class Name */},
   {(bigint) 3 /* 3: String < Object: superclass typecheck marker */},
   {(bigint) 103 /* 4: String < Pattern: superclass typecheck marker */},
-  {(bigint) 267 /* 5: String < Comparable: superclass typecheck marker */},
-  {(bigint) 275 /* 6: String < Collection: superclass typecheck marker */},
-  {(bigint) 3707 /* 7: String < String: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: String < MapRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2755 /* 10: String < SequenceRead: superclass typecheck marker */},
+  {(bigint) 275 /* 5: String < Comparable: superclass typecheck marker */},
+  {(bigint) 283 /* 6: String < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: String < SequenceRead: superclass typecheck marker */},
+  {(bigint) 3535 /* 8: String < String: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3039 /* 10: String < AbstractArrayRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 3199 /* 13: String < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 3527 /* 14: String < AbstractString: superclass typecheck marker */},
+  {(bigint) 3239 /* 12: String < AbstractString: 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) 1 /* 20: String < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: String < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___string___String_____eqeq},
@@ -20990,12 +21958,14 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 7 /* 49: String < Pattern: superclass init_table position */},
+  {(bigint) 6 /* 47: String < Pattern: superclass init_table position */},
   {(bigint) standard___string_search___String___search_index_in},
   {(bigint) standard___string_search___String___search_in},
   {(bigint) standard___string_search___Pattern___search_all_in},
   {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 0 /* 54: String < Comparable: superclass init_table position */},
+  {(bigint) 0 /* 52: String < Comparable: superclass init_table position */},
+  {(bigint) 3535 /* 53: VT String::OTHER : id of String */},
+  {(bigint) 8 /* 54: VT String::OTHER : color of String */},
   {(bigint) standard___string___String_____l},
   {(bigint) standard___kernel___Comparable_____leq},
   {(bigint) standard___kernel___Comparable_____geq},
@@ -21006,7 +21976,7 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {(bigint) standard___kernel___Comparable___min},
   {(bigint) standard___string___Collection___join},
   {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 5 /* 65: String < Collection: superclass init_table position */},
+  {(bigint) 4 /* 65: String < Collection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
@@ -21015,19 +21985,25 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {(bigint) standard___collection___array___AbstractArrayRead___has_only},
   {(bigint) standard___collection___array___AbstractArrayRead___count},
   {(bigint) standard___collection___abstract_collection___SequenceRead___first},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 3 /* 75: String < SequenceRead: superclass init_table position */},
+  {(bigint) standard___string___AbstractString_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 78: String < MapRead: superclass init_table position */},
-  {(bigint) standard___string___AbstractString_____bra},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_key},
+  {(bigint) 5 /* 83: String < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3 /* 84: String < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21041,14 +22017,7 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 6 /* 100: String < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {(bigint) 2 /* 107: String < AbstractString: superclass init_table position */},
+  {(bigint) 2 /* 106: String < AbstractString: superclass init_table position */},
   {(bigint) standard___string___AbstractString___items},
   {(bigint) standard___string___AbstractString___substring},
   {(bigint) standard___string___AbstractString___substring_from},
@@ -21062,7 +22031,7 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {(bigint) standard___string___AbstractString___to_lower},
   {(bigint) native_interface___frontier___String___path_from_parent},
   {(bigint) standard___symbol___String___to_symbol},
-  {(bigint) 8 /* 121: String < String: superclass init_table position */},
+  {(bigint) 7 /* 120: String < String: superclass init_table position */},
   {(bigint) standard___string___String___with_native},
   {(bigint) standard___string___String___from_cstring},
   {(bigint) standard___string___String___to_cstring},
@@ -21074,13 +22043,16 @@ const classtable_elt_t VFT_standard___string___String[140] = {
   {(bigint) standard___file___String___strip_extension},
   {(bigint) standard___file___String___basename},
   {(bigint) standard___file___String___dirname},
-  {(bigint) standard___file___String___file_path},
+  {(bigint) standard___file___String___simplify_path},
   {(bigint) standard___file___String___mkdir},
+  {(bigint) standard___file___String___file_extension},
   {(bigint) standard___string_search___String___search},
   {(bigint) standard___string_search___String___search_from},
   {(bigint) standard___string_search___String___search_all},
   {(bigint) standard___string_search___String___split_with},
   {(bigint) standard___string_search___String___split},
+  {(bigint) standard___string_search___String___replace},
+  {(bigint) standard___string_search___String___html_escape},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -21140,10 +22112,10 @@ 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};
+  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 = 167;
+  fra.me.line = 170;
   fra.me.meth = LOCATE_NEW_String_standard___string___String___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -21151,7 +22123,7 @@ val_t NEW_String_standard___string___String___with_native(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:167 */
+  /* ./../lib/standard//string.nit:170 */
   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);
@@ -21162,17 +22134,17 @@ 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){
   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};
+  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 = 175;
+  fra.me.line = 178;
   fra.me.meth = LOCATE_NEW_String_standard___string___String___from_cstring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:175 */
+  /* ./../lib/standard//string.nit:178 */
   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);
@@ -21181,27 +22153,25 @@ val_t NEW_String_standard___string___String___from_cstring(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_standard___string___Buffer[128] = {
-  {(bigint) 3711 /* 0: Identity */},
+  {(bigint) 3743 /* 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) 267 /* 5: Buffer < Comparable: superclass typecheck marker */},
-  {(bigint) 275 /* 6: Buffer < Collection: superclass typecheck marker */},
-  {(bigint) 355 /* 7: Buffer < RemovableCollection: superclass typecheck marker */},
-  {(bigint) 2119 /* 8: Buffer < MapRead: superclass typecheck marker */},
-  {(bigint) 2751 /* 9: Buffer < SimpleCollection: superclass typecheck marker */},
-  {(bigint) 2755 /* 10: Buffer < SequenceRead: superclass typecheck marker */},
-  {(bigint) 2795 /* 11: Buffer < Map: superclass typecheck marker */},
-  {(bigint) 3135 /* 12: Buffer < Sequence: superclass typecheck marker */},
-  {(bigint) 3199 /* 13: Buffer < AbstractArrayRead: superclass typecheck marker */},
-  {(bigint) 3527 /* 14: Buffer < AbstractString: superclass typecheck marker */},
-  {(bigint) 3531 /* 15: Buffer < AbstractArray: superclass typecheck marker */},
-  {(bigint) 3711 /* 16: Buffer < Buffer: superclass typecheck marker */},
+  {(bigint) 275 /* 5: Buffer < Comparable: superclass typecheck marker */},
+  {(bigint) 283 /* 6: Buffer < Collection: superclass typecheck marker */},
+  {(bigint) 351 /* 7: Buffer < SequenceRead: superclass typecheck marker */},
+  {(bigint) 367 /* 8: Buffer < RemovableCollection: superclass typecheck marker */},
+  {(bigint) 2779 /* 9: Buffer < SimpleCollection: superclass typecheck marker */},
+  {(bigint) 3039 /* 10: Buffer < AbstractArrayRead: superclass typecheck marker */},
+  {(bigint) 3187 /* 11: Buffer < Sequence: superclass typecheck marker */},
+  {(bigint) 3239 /* 12: Buffer < AbstractString: superclass typecheck marker */},
+  {(bigint) 3567 /* 13: Buffer < AbstractArray: superclass typecheck marker */},
+  {(bigint) 3743 /* 14: Buffer < Buffer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 20: Buffer < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: Buffer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___string___Buffer_____eqeq},
@@ -21230,12 +22200,14 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 7 /* 49: Buffer < StringCapable: superclass init_table position */},
+  {(bigint) 6 /* 47: Buffer < StringCapable: superclass init_table position */},
   {(bigint) standard___string___StringCapable___calloc_string},
   {(bigint) standard___string___StringCapable___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 6 /* 54: Buffer < Comparable: superclass init_table position */},
+  {(bigint) 5 /* 52: Buffer < Comparable: superclass init_table position */},
+  {(bigint) 3535 /* 53: VT Buffer::OTHER : id of String */},
+  {(bigint) 8 /* 54: VT Buffer::OTHER : color of String */},
   {(bigint) standard___string___Buffer_____l},
   {(bigint) standard___kernel___Comparable_____leq},
   {(bigint) standard___kernel___Comparable_____geq},
@@ -21246,7 +22218,7 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___kernel___Comparable___min},
   {(bigint) standard___string___Collection___join},
   {(bigint) standard___collection___array___Collection___to_a},
-  {(bigint) 3 /* 65: Buffer < Collection: superclass init_table position */},
+  {(bigint) 2 /* 65: Buffer < Collection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArrayRead___iterator},
   {(bigint) standard___collection___abstract_collection___Collection___iterate},
   {(bigint) standard___collection___array___AbstractArrayRead___is_empty},
@@ -21255,25 +22227,29 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___collection___array___AbstractArrayRead___has_only},
   {(bigint) standard___collection___array___AbstractArrayRead___count},
   {(bigint) standard___collection___abstract_collection___SequenceRead___first},
-  {(bigint) 11 /* 74: Buffer < RemovableCollection: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 1 /* 75: Buffer < SequenceRead: superclass init_table position */},
+  {(bigint) standard___string___AbstractString_____bra},
+  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
+  {(bigint) 9 /* 79: Buffer < RemovableCollection: superclass init_table position */},
   {(bigint) standard___collection___array___AbstractArray___clear},
   {(bigint) standard___collection___array___AbstractArray___remove},
   {(bigint) standard___collection___array___AbstractArray___remove_all},
-  {(bigint) 2 /* 78: Buffer < MapRead: superclass init_table position */},
-  {(bigint) standard___string___AbstractString_____bra},
-  {(bigint) standard___collection___array___AbstractArrayRead___has_key},
-  {(bigint) 10 /* 81: Buffer < SimpleCollection: superclass init_table position */},
+  {(bigint) 4 /* 83: Buffer < AbstractArrayRead: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
+  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
+  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
+  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
+  {(bigint) standard___collection___array___AbstractArrayRead___init},
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {0} /* Class Hole :( */,
+  {(bigint) 8 /* 93: Buffer < SimpleCollection: superclass init_table position */},
   {(bigint) standard___string___Buffer___add},
   {(bigint) standard___collection___abstract_collection___SimpleCollection___add_all},
-  {(bigint) 1 /* 84: Buffer < SequenceRead: superclass init_table position */},
-  {(bigint) standard___collection___abstract_collection___SequenceRead___last},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of},
-  {(bigint) standard___string___Map___map_join},
-  {(bigint) 9 /* 88: Buffer < Map: superclass init_table position */},
-  {(bigint) standard___string___Buffer_____braeq},
-  {(bigint) standard___collection___array___AbstractArray___remove_at},
-  {(bigint) standard___collection___abstract_collection___Map___recover_with},
-  {(bigint) 8 /* 92: Buffer < Sequence: superclass init_table position */},
+  {(bigint) 7 /* 96: Buffer < Sequence: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Sequence___first__eq},
   {(bigint) standard___collection___abstract_collection___Sequence___last__eq},
   {(bigint) standard___collection___array___AbstractArray___push},
@@ -21281,14 +22257,9 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___collection___array___AbstractArray___pop},
   {(bigint) standard___collection___array___AbstractArray___unshift},
   {(bigint) standard___collection___array___AbstractArray___shift},
-  {(bigint) 5 /* 100: Buffer < AbstractArrayRead: superclass init_table position */},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of},
-  {(bigint) standard___collection___array___AbstractArrayRead___index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___last_index_of_from},
-  {(bigint) standard___collection___array___AbstractArrayRead___reversed},
-  {(bigint) standard___collection___array___AbstractArrayRead___copy_to},
-  {(bigint) standard___collection___array___AbstractArrayRead___init},
-  {(bigint) 0 /* 107: Buffer < AbstractString: superclass init_table position */},
+  {(bigint) standard___string___Buffer_____braeq},
+  {(bigint) standard___collection___array___AbstractArray___remove_at},
+  {(bigint) 0 /* 106: Buffer < AbstractString: superclass init_table position */},
   {(bigint) standard___string___AbstractString___items},
   {(bigint) standard___string___AbstractString___substring},
   {(bigint) standard___string___AbstractString___substring_from},
@@ -21300,10 +22271,11 @@ const classtable_elt_t VFT_standard___string___Buffer[128] = {
   {(bigint) standard___string___AbstractString___a_to},
   {(bigint) standard___string___AbstractString___to_upper},
   {(bigint) standard___string___AbstractString___to_lower},
-  {(bigint) 12 /* 119: Buffer < AbstractArray: superclass init_table position */},
+  {(bigint) 10 /* 118: Buffer < AbstractArray: superclass init_table position */},
   {(bigint) standard___string___Buffer___enlarge},
   {(bigint) standard___collection___array___AbstractArray___insert},
-  {(bigint) 13 /* 122: Buffer < Buffer: superclass init_table position */},
+  {(bigint) standard___collection___array___AbstractArray___swap_at},
+  {(bigint) 11 /* 122: Buffer < Buffer: superclass init_table position */},
   {(bigint) standard___collection___abstract_collection___Sequence___append},
   {(bigint) standard___string___Buffer___init},
   {(bigint) standard___string___Buffer___from},
@@ -21373,15 +22345,15 @@ void CHECKNEW_standard___string___Buffer(val_t p0){
 val_t NEW_Buffer_standard___string___Buffer___init(void){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 349;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/standard//string.nit:349 */
+  /* ./../lib/standard//string.nit:352 */
   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);
@@ -21392,17 +22364,17 @@ val_t NEW_Buffer_standard___string___Buffer___init(void){
 val_t NEW_Buffer_standard___string___Buffer___from(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 355;
+  fra.me.line = 358;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:355 */
+  /* ./../lib/standard//string.nit:358 */
   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);
@@ -21414,16 +22386,16 @@ val_t NEW_Buffer_standard___string___Buffer___with_capacity(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
   val_t tmp;
-  int init_table[14] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+  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 = 363;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_NEW_Buffer_standard___string___Buffer___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//string.nit:363 */
+  /* ./../lib/standard//string.nit:366 */
   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);
@@ -21431,7 +22403,7 @@ 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[62] = {
+const classtable_elt_t VFT_standard___string___NativeString[60] = {
   {(bigint) -5 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeString" /* 2: Class Name */},
@@ -21448,11 +22420,9 @@ const classtable_elt_t VFT_standard___string___NativeString[62] = {
   {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) 0 /* 20: NativeString < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: NativeString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21482,7 +22452,7 @@ const classtable_elt_t VFT_standard___string___NativeString[62] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___environ___NativeString___get_environ},
-  {(bigint) 1 /* 50: NativeString < NativeString: superclass init_table position */},
+  {(bigint) 1 /* 48: NativeString < NativeString: superclass init_table position */},
   {(bigint) standard___string___NativeString_____bra},
   {(bigint) standard___string___NativeString_____braeq},
   {(bigint) standard___string___NativeString___copy_to},
@@ -21505,7 +22475,7 @@ val_t BOX_NativeString(char * val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_standard___string___StringCapable[52] = {
+const classtable_elt_t VFT_standard___string___StringCapable[50] = {
   {(bigint) 35 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "StringCapable" /* 2: Class Name */},
@@ -21522,11 +22492,9 @@ const classtable_elt_t VFT_standard___string___StringCapable[52] = {
   {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) 0 /* 20: StringCapable < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: StringCapable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21555,7 +22523,7 @@ const classtable_elt_t VFT_standard___string___StringCapable[52] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: StringCapable < StringCapable: superclass init_table position */},
+  {(bigint) 1 /* 47: StringCapable < StringCapable: superclass init_table position */},
   {(bigint) standard___string___StringCapable___calloc_string},
   {(bigint) standard___string___StringCapable___init},
 };
@@ -21610,7 +22578,7 @@ val_t NEW_StringCapable_standard___string___StringCapable___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___symbol___Symbol[52] = {
+const classtable_elt_t VFT_standard___symbol___Symbol[50] = {
   {(bigint) 31 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Symbol" /* 2: Class Name */},
@@ -21627,11 +22595,9 @@ const classtable_elt_t VFT_standard___symbol___Symbol[52] = {
   {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) 0 /* 20: Symbol < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Symbol < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21661,7 +22627,7 @@ const classtable_elt_t VFT_standard___symbol___Symbol[52] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) standard___environ___Symbol___environ},
-  {(bigint) 1 /* 50: Symbol < Symbol: superclass init_table position */},
+  {(bigint) 1 /* 48: Symbol < Symbol: superclass init_table position */},
   {(bigint) standard___symbol___Symbol___init},
 };
 /* 0: Pointer to the classtable */
@@ -21727,15 +22693,13 @@ val_t NEW_Symbol_standard___symbol___Symbol___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___stream___IOS[61] = {
-  {(bigint) 207 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___IOS[59] = {
+  {(bigint) 215 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IOS" /* 2: Class Name */},
   {(bigint) 3 /* 3: IOS < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 207 /* 5: IOS < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: IOS < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21748,7 +22712,7 @@ const classtable_elt_t VFT_standard___stream___IOS[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IOS < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IOS < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21786,7 +22750,7 @@ const classtable_elt_t VFT_standard___stream___IOS[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: IOS < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: IOS < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
 };
@@ -21841,17 +22805,15 @@ val_t NEW_IOS_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___IStream[71] = {
-  {(bigint) 2207 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___IStream[69] = {
+  {(bigint) 2227 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: IStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 207 /* 5: IStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2207 /* 7: IStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: IStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2227 /* 7: IStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21862,7 +22824,7 @@ const classtable_elt_t VFT_standard___stream___IStream[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -21900,13 +22862,13 @@ const classtable_elt_t VFT_standard___stream___IStream[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: IStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: IStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2 /* 64: IStream < IStream: superclass init_table position */},
+  {(bigint) 2 /* 62: IStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___IStream___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
@@ -21965,16 +22927,14 @@ val_t NEW_IStream_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___OStream[64] = {
-  {(bigint) 2095 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___OStream[62] = {
+  {(bigint) 2107 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: OStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 207 /* 5: OStream < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: OStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: OStream < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: OStream < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -21986,7 +22946,7 @@ const classtable_elt_t VFT_standard___stream___OStream[64] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22024,10 +22984,10 @@ const classtable_elt_t VFT_standard___stream___OStream[64] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: OStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: OStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 2 /* 61: OStream < OStream: superclass init_table position */},
+  {(bigint) 2 /* 59: OStream < OStream: superclass init_table position */},
   {(bigint) standard___stream___OStream___write},
   {(bigint) standard___stream___OStream___is_writable},
 };
@@ -22082,17 +23042,15 @@ val_t NEW_OStream_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___BufferedIStream[75] = {
-  {(bigint) 2987 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___BufferedIStream[73] = {
+  {(bigint) 3015 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "BufferedIStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: BufferedIStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 207 /* 5: BufferedIStream < IOS: superclass typecheck marker */},
-  {(bigint) 2987 /* 6: BufferedIStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: BufferedIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: BufferedIStream < IOS: superclass typecheck marker */},
+  {(bigint) 3015 /* 6: BufferedIStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: BufferedIStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22103,7 +23061,7 @@ const classtable_elt_t VFT_standard___stream___BufferedIStream[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: BufferedIStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: BufferedIStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22141,20 +23099,20 @@ const classtable_elt_t VFT_standard___stream___BufferedIStream[75] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: BufferedIStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: BufferedIStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 2 /* 64: BufferedIStream < IStream: superclass init_table position */},
+  {(bigint) 2 /* 62: BufferedIStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___BufferedIStream___read_char},
   {(bigint) standard___stream___BufferedIStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___BufferedIStream___read_all},
   {(bigint) standard___stream___BufferedIStream___append_line_to},
   {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 3 /* 71: BufferedIStream < BufferedIStream: superclass init_table position */},
+  {(bigint) 3 /* 69: BufferedIStream < BufferedIStream: superclass init_table position */},
   {(bigint) standard___stream___BufferedIStream___fill_buffer},
   {(bigint) standard___stream___BufferedIStream___end_reached},
   {(bigint) standard___stream___BufferedIStream___prepare_buffer},
@@ -22232,20 +23190,18 @@ val_t NEW_BufferedIStream_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___IOStream[78] = {
-  {(bigint) 2859 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___IOStream[76] = {
+  {(bigint) 2879 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IOStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: IOStream < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 207 /* 5: IOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: IOStream < OStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: IOStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2859 /* 10: IOStream < IOStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: IOStream < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: IOStream < OStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: IOStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2879 /* 10: IOStream < IOStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22253,7 +23209,7 @@ const classtable_elt_t VFT_standard___stream___IOStream[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IOStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IOStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22291,13 +23247,13 @@ const classtable_elt_t VFT_standard___stream___IOStream[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: IOStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: IOStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 61: IOStream < OStream: superclass init_table position */},
+  {(bigint) 3 /* 59: IOStream < OStream: superclass init_table position */},
   {(bigint) standard___stream___OStream___write},
   {(bigint) standard___stream___OStream___is_writable},
-  {(bigint) 2 /* 64: IOStream < IStream: superclass init_table position */},
+  {(bigint) 2 /* 62: IOStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___IStream___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
@@ -22310,7 +23266,7 @@ const classtable_elt_t VFT_standard___stream___IOStream[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 77: IOStream < IOStream: superclass init_table position */},
+  {(bigint) 4 /* 75: IOStream < IOStream: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -22363,15 +23319,13 @@ val_t NEW_IOStream_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDStream[61] = {
-  {(bigint) 2263 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___FDStream[59] = {
+  {(bigint) 2287 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FDStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: FDStream < Object: superclass typecheck marker */},
-  {(bigint) 2263 /* 4: FDStream < FDStream: superclass typecheck marker */},
-  {(bigint) 207 /* 5: FDStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2287 /* 4: FDStream < FDStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: FDStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22384,7 +23338,7 @@ const classtable_elt_t VFT_standard___stream___FDStream[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FDStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FDStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22413,7 +23367,7 @@ const classtable_elt_t VFT_standard___stream___FDStream[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: FDStream < FDStream: superclass init_table position */},
+  {(bigint) 2 /* 47: FDStream < FDStream: superclass init_table position */},
   {(bigint) standard___stream___FDStream___native_close},
   {(bigint) standard___stream___FDStream___native_read_char},
   {(bigint) standard___stream___FDStream___native_read},
@@ -22422,7 +23376,7 @@ const classtable_elt_t VFT_standard___stream___FDStream[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: FDStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: FDStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___FDStream___close},
   {(bigint) standard___stream___IOS___init},
 };
@@ -22489,19 +23443,17 @@ val_t NEW_FDStream_standard___stream___FDStream___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDIStream[73] = {
-  {(bigint) 2951 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___FDIStream[71] = {
+  {(bigint) 2979 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FDIStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: FDIStream < Object: superclass typecheck marker */},
-  {(bigint) 2263 /* 4: FDIStream < FDStream: superclass typecheck marker */},
-  {(bigint) 207 /* 5: FDIStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2207 /* 7: FDIStream < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2951 /* 9: FDIStream < FDIStream: superclass typecheck marker */},
+  {(bigint) 2287 /* 4: FDIStream < FDStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: FDIStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2227 /* 7: FDIStream < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2979 /* 9: FDIStream < FDIStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22510,7 +23462,7 @@ const classtable_elt_t VFT_standard___stream___FDIStream[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FDIStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FDIStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22539,7 +23491,7 @@ const classtable_elt_t VFT_standard___stream___FDIStream[73] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: FDIStream < FDStream: superclass init_table position */},
+  {(bigint) 2 /* 47: FDIStream < FDStream: superclass init_table position */},
   {(bigint) standard___stream___FDStream___native_close},
   {(bigint) standard___stream___FDStream___native_read_char},
   {(bigint) standard___stream___FDStream___native_read},
@@ -22548,20 +23500,20 @@ const classtable_elt_t VFT_standard___stream___FDIStream[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: FDIStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: FDIStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___FDStream___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3 /* 64: FDIStream < IStream: superclass init_table position */},
+  {(bigint) 3 /* 62: FDIStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___FDIStream___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___IStream___read_all},
   {(bigint) standard___stream___IStream___append_line_to},
   {(bigint) standard___stream___FDIStream___eof},
-  {(bigint) 4 /* 71: FDIStream < FDIStream: superclass init_table position */},
+  {(bigint) 4 /* 69: FDIStream < FDIStream: superclass init_table position */},
   {(bigint) standard___stream___FDIStream___init},
 };
 /* 0: Pointer to the classtable */
@@ -22640,18 +23592,16 @@ val_t NEW_FDIStream_standard___stream___FDIStream___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDOStream[64] = {
-  {(bigint) 2947 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___FDOStream[62] = {
+  {(bigint) 2975 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FDOStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: FDOStream < Object: superclass typecheck marker */},
-  {(bigint) 2263 /* 4: FDOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 207 /* 5: FDOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: FDOStream < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2947 /* 8: FDOStream < FDOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 2287 /* 4: FDOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: FDOStream < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: FDOStream < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2975 /* 8: FDOStream < FDOStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22661,7 +23611,7 @@ const classtable_elt_t VFT_standard___stream___FDOStream[64] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FDOStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FDOStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22690,19 +23640,19 @@ const classtable_elt_t VFT_standard___stream___FDOStream[64] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: FDOStream < FDStream: superclass init_table position */},
+  {(bigint) 2 /* 47: FDOStream < FDStream: superclass init_table position */},
   {(bigint) standard___stream___FDStream___native_close},
   {(bigint) standard___stream___FDStream___native_read_char},
   {(bigint) standard___stream___FDStream___native_read},
   {(bigint) standard___stream___FDStream___native_write},
   {(bigint) standard___stream___FDStream___init},
-  {(bigint) 4 /* 55: FDOStream < FDOStream: superclass init_table position */},
+  {(bigint) 4 /* 53: FDOStream < FDOStream: superclass init_table position */},
   {(bigint) standard___stream___FDOStream___init},
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: FDOStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: FDOStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___FDStream___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 61: FDOStream < OStream: superclass init_table position */},
+  {(bigint) 3 /* 59: FDOStream < OStream: superclass init_table position */},
   {(bigint) standard___stream___FDOStream___write},
   {(bigint) standard___stream___FDOStream___is_writable},
 };
@@ -22775,28 +23725,26 @@ val_t NEW_FDOStream_standard___stream___FDOStream___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___stream___FDIOStream[78] = {
-  {(bigint) 3187 /* 0: Identity */},
+const classtable_elt_t VFT_standard___stream___FDIOStream[76] = {
+  {(bigint) 3231 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FDIOStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: FDIOStream < Object: superclass typecheck marker */},
-  {(bigint) 2263 /* 4: FDIOStream < FDStream: superclass typecheck marker */},
-  {(bigint) 207 /* 5: FDIOStream < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: FDIOStream < OStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: FDIOStream < IStream: superclass typecheck marker */},
-  {(bigint) 2947 /* 8: FDIOStream < FDOStream: superclass typecheck marker */},
-  {(bigint) 2951 /* 9: FDIOStream < FDIStream: superclass typecheck marker */},
-  {(bigint) 2859 /* 10: FDIOStream < IOStream: superclass typecheck marker */},
-  {(bigint) 3187 /* 11: FDIOStream < FDIOStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2287 /* 4: FDIOStream < FDStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: FDIOStream < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: FDIOStream < OStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: FDIOStream < IStream: superclass typecheck marker */},
+  {(bigint) 2975 /* 8: FDIOStream < FDOStream: superclass typecheck marker */},
+  {(bigint) 2979 /* 9: FDIOStream < FDIStream: superclass typecheck marker */},
+  {(bigint) 2879 /* 10: FDIOStream < IOStream: superclass typecheck marker */},
+  {(bigint) 3231 /* 11: FDIOStream < FDIOStream: 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) 0 /* 20: FDIOStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FDIOStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -22825,35 +23773,35 @@ const classtable_elt_t VFT_standard___stream___FDIOStream[78] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: FDIOStream < FDStream: superclass init_table position */},
+  {(bigint) 2 /* 47: FDIOStream < FDStream: superclass init_table position */},
   {(bigint) standard___stream___FDStream___native_close},
   {(bigint) standard___stream___FDStream___native_read_char},
   {(bigint) standard___stream___FDStream___native_read},
   {(bigint) standard___stream___FDStream___native_write},
   {(bigint) standard___stream___FDStream___init},
-  {(bigint) 6 /* 55: FDIOStream < FDOStream: superclass init_table position */},
+  {(bigint) 6 /* 53: FDIOStream < FDOStream: superclass init_table position */},
   {(bigint) standard___stream___FDOStream___init},
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 58: FDIOStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: FDIOStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___FDStream___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 5 /* 61: FDIOStream < OStream: superclass init_table position */},
+  {(bigint) 5 /* 59: FDIOStream < OStream: superclass init_table position */},
   {(bigint) standard___stream___FDOStream___write},
   {(bigint) standard___stream___FDOStream___is_writable},
-  {(bigint) 3 /* 64: FDIOStream < IStream: superclass init_table position */},
+  {(bigint) 3 /* 62: FDIOStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___FDIStream___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___IStream___read_all},
   {(bigint) standard___stream___IStream___append_line_to},
   {(bigint) standard___stream___FDIStream___eof},
-  {(bigint) 4 /* 71: FDIOStream < FDIStream: superclass init_table position */},
+  {(bigint) 4 /* 69: FDIOStream < FDIStream: superclass init_table position */},
   {(bigint) standard___stream___FDIStream___init},
-  {(bigint) 8 /* 73: FDIOStream < FDIOStream: superclass init_table position */},
+  {(bigint) 8 /* 71: FDIOStream < FDIOStream: superclass init_table position */},
   {(bigint) standard___stream___FDIOStream___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 7 /* 77: FDIOStream < IOStream: superclass init_table position */},
+  {(bigint) 7 /* 75: FDIOStream < IOStream: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -22936,15 +23884,13 @@ val_t NEW_FDIOStream_standard___stream___FDIOStream___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___string_search___BM_Pattern[60] = {
-  {(bigint) 2327 /* 0: Identity */},
+const classtable_elt_t VFT_standard___string_search___BM_Pattern[58] = {
+  {(bigint) 2355 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "BM_Pattern" /* 2: Class Name */},
   {(bigint) 3 /* 3: BM_Pattern < Object: superclass typecheck marker */},
   {(bigint) 103 /* 4: BM_Pattern < Pattern: superclass typecheck marker */},
-  {(bigint) 2327 /* 5: BM_Pattern < BM_Pattern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2355 /* 5: BM_Pattern < BM_Pattern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -22957,7 +23903,7 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: BM_Pattern < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: 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},
@@ -22986,12 +23932,12 @@ const classtable_elt_t VFT_standard___string_search___BM_Pattern[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: BM_Pattern < Pattern: superclass init_table position */},
+  {(bigint) 0 /* 47: BM_Pattern < Pattern: superclass init_table position */},
   {(bigint) standard___string_search___BM_Pattern___search_index_in},
   {(bigint) standard___string_search___BM_Pattern___search_in},
   {(bigint) standard___string_search___Pattern___search_all_in},
   {(bigint) standard___string_search___Pattern___split_in},
-  {(bigint) 2 /* 54: BM_Pattern < BM_Pattern: superclass init_table position */},
+  {(bigint) 2 /* 52: BM_Pattern < BM_Pattern: superclass init_table position */},
   {(bigint) standard___string_search___BM_Pattern___init},
   {(bigint) standard___string_search___BM_Pattern___bc},
   {(bigint) standard___string_search___BM_Pattern___compute_bc},
@@ -23064,14 +24010,14 @@ val_t NEW_BM_Pattern_standard___string_search___BM_Pattern___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 107;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_NEW_BM_Pattern_standard___string_search___BM_Pattern___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:107 */
+  /* ./../lib/standard//string_search.nit:108 */
   fra.me.REG[1] = NEW_standard___string_search___BM_Pattern();
   INIT_ATTRIBUTES__standard___string_search___BM_Pattern(fra.me.REG[1]);
   standard___string_search___BM_Pattern___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -23079,7 +24025,7 @@ val_t NEW_BM_Pattern_standard___string_search___BM_Pattern___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___string_search___Match[55] = {
+const classtable_elt_t VFT_standard___string_search___Match[53] = {
   {(bigint) 131 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Match" /* 2: Class Name */},
@@ -23096,11 +24042,9 @@ const classtable_elt_t VFT_standard___string_search___Match[55] = {
   {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) 0 /* 20: Match < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Match < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23129,7 +24073,7 @@ const classtable_elt_t VFT_standard___string_search___Match[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Match < Match: superclass init_table position */},
+  {(bigint) 1 /* 47: Match < Match: superclass init_table position */},
   {(bigint) standard___string_search___Match___string},
   {(bigint) standard___string_search___Match___from},
   {(bigint) standard___string_search___Match___length},
@@ -23198,7 +24142,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 = 221;
   fra.me.meth = LOCATE_NEW_Match_standard___string_search___Match___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -23207,7 +24151,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:221 */
   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);
@@ -23215,18 +24159,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___FStream[61] = {
-  {(bigint) 2259 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___FStream[59] = {
+  {(bigint) 2283 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: FStream < Object: superclass typecheck marker */},
   {(bigint) 119 /* 4: FStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: FStream < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2259 /* 8: FStream < FStream: superclass typecheck marker */},
+  {(bigint) 215 /* 5: FStream < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2283 /* 8: FStream < FStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23236,7 +24178,7 @@ const classtable_elt_t VFT_standard___file___FStream[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23265,16 +24207,16 @@ const classtable_elt_t VFT_standard___file___FStream[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: FStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: FStream < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: FStream < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: FStream < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: FStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: FStream < IOS: superclass init_table position */},
   {(bigint) standard___stream___IOS___close},
   {(bigint) standard___stream___IOS___init},
 };
@@ -23340,19 +24282,17 @@ val_t NEW_FStream_standard___stream___IOS___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___IFStream[80] = {
-  {(bigint) 3175 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___IFStream[78] = {
+  {(bigint) 3223 /* 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) 119 /* 4: IFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: IFStream < IOS: superclass typecheck marker */},
-  {(bigint) 2987 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: IFStream < IStream: superclass typecheck marker */},
-  {(bigint) 2259 /* 8: IFStream < FStream: superclass typecheck marker */},
-  {(bigint) 3175 /* 9: IFStream < IFStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: IFStream < IOS: superclass typecheck marker */},
+  {(bigint) 3015 /* 6: IFStream < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: IFStream < IStream: superclass typecheck marker */},
+  {(bigint) 2283 /* 8: IFStream < FStream: superclass typecheck marker */},
+  {(bigint) 3223 /* 9: IFStream < IFStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23361,7 +24301,7 @@ const classtable_elt_t VFT_standard___file___IFStream[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IFStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IFStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23390,33 +24330,33 @@ const classtable_elt_t VFT_standard___file___IFStream[80] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: IFStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: IFStream < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: IFStream < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: IFStream < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: IFStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: IFStream < IOS: superclass init_table position */},
   {(bigint) standard___file___IFStream___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 64: IFStream < IStream: superclass init_table position */},
+  {(bigint) 4 /* 62: IFStream < IStream: superclass init_table position */},
   {(bigint) standard___stream___BufferedIStream___read_char},
   {(bigint) standard___stream___BufferedIStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___BufferedIStream___read_all},
   {(bigint) standard___stream___BufferedIStream___append_line_to},
   {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 5 /* 71: IFStream < BufferedIStream: superclass init_table position */},
+  {(bigint) 5 /* 69: IFStream < BufferedIStream: superclass init_table position */},
   {(bigint) standard___file___IFStream___fill_buffer},
   {(bigint) standard___file___IFStream___end_reached},
   {(bigint) standard___stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 75: IFStream < IFStream: superclass init_table position */},
+  {(bigint) 6 /* 73: IFStream < IFStream: superclass init_table position */},
   {(bigint) standard___file___IFStream___reopen},
   {(bigint) standard___file___IFStream___open},
   {(bigint) standard___file___IFStream___init},
@@ -23442,7 +24382,7 @@ void INIT_ATTRIBUTES__standard___file___IFStream(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:99 */
+  /* ./../lib/standard//file.nit:100 */
   REGB0 = TAG_Bool(false);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   /* ./../lib/standard//file.nit:55 */
@@ -23498,14 +24438,14 @@ val_t NEW_IFStream_standard___file___IFStream___open(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 = 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;
   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);
@@ -23519,12 +24459,12 @@ val_t NEW_IFStream_standard___file___IFStream___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 = 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.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);
@@ -23538,12 +24478,12 @@ val_t NEW_IFStream_standard___file___IFStream___without_file(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 = 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.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);
@@ -23551,18 +24491,16 @@ val_t NEW_IFStream_standard___file___IFStream___without_file(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___OFStream[69] = {
-  {(bigint) 2787 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___OFStream[67] = {
+  {(bigint) 2811 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OFStream" /* 2: Class Name */},
   {(bigint) 3 /* 3: OFStream < Object: superclass typecheck marker */},
   {(bigint) 119 /* 4: OFStream < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: OFStream < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: OFStream < OStream: superclass typecheck marker */},
-  {(bigint) 2787 /* 7: OFStream < OFStream: superclass typecheck marker */},
-  {(bigint) 2259 /* 8: OFStream < FStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: OFStream < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: OFStream < OStream: superclass typecheck marker */},
+  {(bigint) 2811 /* 7: OFStream < OFStream: superclass typecheck marker */},
+  {(bigint) 2283 /* 8: OFStream < FStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23572,7 +24510,7 @@ const classtable_elt_t VFT_standard___file___OFStream[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OFStream < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OFStream < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23601,22 +24539,22 @@ const classtable_elt_t VFT_standard___file___OFStream[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: OFStream < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: OFStream < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: OFStream < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: OFStream < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: OFStream < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: OFStream < IOS: superclass init_table position */},
   {(bigint) standard___file___OFStream___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 61: OFStream < OStream: superclass init_table position */},
+  {(bigint) 4 /* 59: OFStream < OStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write},
   {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 64: OFStream < OFStream: superclass init_table position */},
+  {(bigint) 5 /* 62: OFStream < OFStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write_native},
   {(bigint) standard___file___OFStream___open},
   {(bigint) standard___file___OFStream___init},
@@ -23734,20 +24672,18 @@ val_t NEW_OFStream_standard___file___OFStream___without_file(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stdin[82] = {
-  {(bigint) 3495 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___Stdin[80] = {
+  {(bigint) 3539 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Stdin" /* 2: Class Name */},
   {(bigint) 3 /* 3: Stdin < Object: superclass typecheck marker */},
   {(bigint) 119 /* 4: Stdin < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: Stdin < IOS: superclass typecheck marker */},
-  {(bigint) 2987 /* 6: Stdin < BufferedIStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: Stdin < IStream: superclass typecheck marker */},
-  {(bigint) 2259 /* 8: Stdin < FStream: superclass typecheck marker */},
-  {(bigint) 3175 /* 9: Stdin < IFStream: superclass typecheck marker */},
-  {(bigint) 3495 /* 10: Stdin < Stdin: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: Stdin < IOS: superclass typecheck marker */},
+  {(bigint) 3015 /* 6: Stdin < BufferedIStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: Stdin < IStream: superclass typecheck marker */},
+  {(bigint) 2283 /* 8: Stdin < FStream: superclass typecheck marker */},
+  {(bigint) 3223 /* 9: Stdin < IFStream: superclass typecheck marker */},
+  {(bigint) 3539 /* 10: Stdin < Stdin: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23755,7 +24691,7 @@ const classtable_elt_t VFT_standard___file___Stdin[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: Stdin < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Stdin < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23784,38 +24720,38 @@ const classtable_elt_t VFT_standard___file___Stdin[82] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: Stdin < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: Stdin < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: Stdin < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: Stdin < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: Stdin < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: Stdin < IOS: superclass init_table position */},
   {(bigint) standard___file___IFStream___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 64: Stdin < IStream: superclass init_table position */},
+  {(bigint) 4 /* 62: Stdin < IStream: superclass init_table position */},
   {(bigint) standard___stream___BufferedIStream___read_char},
   {(bigint) standard___stream___BufferedIStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___BufferedIStream___read_all},
   {(bigint) standard___stream___BufferedIStream___append_line_to},
   {(bigint) standard___stream___BufferedIStream___eof},
-  {(bigint) 5 /* 71: Stdin < BufferedIStream: superclass init_table position */},
+  {(bigint) 5 /* 69: Stdin < BufferedIStream: superclass init_table position */},
   {(bigint) standard___file___IFStream___fill_buffer},
   {(bigint) standard___file___IFStream___end_reached},
   {(bigint) standard___stream___BufferedIStream___prepare_buffer},
-  {(bigint) 6 /* 75: Stdin < IFStream: superclass init_table position */},
+  {(bigint) 6 /* 73: Stdin < IFStream: superclass init_table position */},
   {(bigint) standard___file___IFStream___reopen},
   {(bigint) standard___file___IFStream___open},
   {(bigint) standard___file___IFStream___init},
   {(bigint) standard___file___IFStream___without_file},
-  {(bigint) 7 /* 80: Stdin < Stdin: superclass init_table position */},
+  {(bigint) 7 /* 78: Stdin < Stdin: superclass init_table position */},
   {(bigint) standard___file___Stdin___init},
 };
 /* 0: Pointer to the classtable */
@@ -23838,7 +24774,7 @@ void INIT_ATTRIBUTES__standard___file___Stdin(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:99 */
+  /* ./../lib/standard//file.nit:100 */
   REGB0 = TAG_Bool(false);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   /* ./../lib/standard//file.nit:55 */
@@ -23907,19 +24843,17 @@ val_t NEW_Stdin_standard___file___Stdin___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stdout[71] = {
-  {(bigint) 3123 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___Stdout[69] = {
+  {(bigint) 3175 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Stdout" /* 2: Class Name */},
   {(bigint) 3 /* 3: Stdout < Object: superclass typecheck marker */},
   {(bigint) 119 /* 4: Stdout < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: Stdout < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: Stdout < OStream: superclass typecheck marker */},
-  {(bigint) 2787 /* 7: Stdout < OFStream: superclass typecheck marker */},
-  {(bigint) 2259 /* 8: Stdout < FStream: superclass typecheck marker */},
-  {(bigint) 3123 /* 9: Stdout < Stdout: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: Stdout < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: Stdout < OStream: superclass typecheck marker */},
+  {(bigint) 2811 /* 7: Stdout < OFStream: superclass typecheck marker */},
+  {(bigint) 2283 /* 8: Stdout < FStream: superclass typecheck marker */},
+  {(bigint) 3175 /* 9: Stdout < Stdout: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -23928,7 +24862,7 @@ const classtable_elt_t VFT_standard___file___Stdout[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: Stdout < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Stdout < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -23957,27 +24891,27 @@ const classtable_elt_t VFT_standard___file___Stdout[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: Stdout < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: Stdout < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: Stdout < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: Stdout < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: Stdout < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: Stdout < IOS: superclass init_table position */},
   {(bigint) standard___file___OFStream___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 61: Stdout < OStream: superclass init_table position */},
+  {(bigint) 4 /* 59: Stdout < OStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write},
   {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 64: Stdout < OFStream: superclass init_table position */},
+  {(bigint) 5 /* 62: Stdout < OFStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write_native},
   {(bigint) standard___file___OFStream___open},
   {(bigint) standard___file___OFStream___init},
   {(bigint) standard___file___OFStream___without_file},
-  {(bigint) 6 /* 69: Stdout < Stdout: superclass init_table position */},
+  {(bigint) 6 /* 67: Stdout < Stdout: superclass init_table position */},
   {(bigint) standard___file___Stdout___init},
 };
 /* 0: Pointer to the classtable */
@@ -24052,19 +24986,17 @@ val_t NEW_Stdout_standard___file___Stdout___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_standard___file___Stderr[71] = {
-  {(bigint) 3127 /* 0: Identity */},
+const classtable_elt_t VFT_standard___file___Stderr[69] = {
+  {(bigint) 3179 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Stderr" /* 2: Class Name */},
   {(bigint) 3 /* 3: Stderr < Object: superclass typecheck marker */},
   {(bigint) 119 /* 4: Stderr < NativeFileCapable: superclass typecheck marker */},
-  {(bigint) 207 /* 5: Stderr < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: Stderr < OStream: superclass typecheck marker */},
-  {(bigint) 2787 /* 7: Stderr < OFStream: superclass typecheck marker */},
-  {(bigint) 2259 /* 8: Stderr < FStream: superclass typecheck marker */},
-  {(bigint) 3127 /* 9: Stderr < Stderr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: Stderr < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: Stderr < OStream: superclass typecheck marker */},
+  {(bigint) 2811 /* 7: Stderr < OFStream: superclass typecheck marker */},
+  {(bigint) 2283 /* 8: Stderr < FStream: superclass typecheck marker */},
+  {(bigint) 3179 /* 9: Stderr < Stderr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24073,7 +25005,7 @@ const classtable_elt_t VFT_standard___file___Stderr[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: Stderr < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Stderr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24102,27 +25034,27 @@ const classtable_elt_t VFT_standard___file___Stderr[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 2 /* 49: Stderr < NativeFileCapable: superclass init_table position */},
+  {(bigint) 2 /* 47: Stderr < NativeFileCapable: superclass init_table position */},
   {(bigint) standard___file___NativeFileCapable___io_open_read},
   {(bigint) standard___file___NativeFileCapable___io_open_write},
   {(bigint) standard___file___NativeFileCapable___native_stdin},
   {(bigint) standard___file___NativeFileCapable___native_stdout},
   {(bigint) standard___file___NativeFileCapable___native_stderr},
-  {(bigint) 3 /* 55: Stderr < FStream: superclass init_table position */},
+  {(bigint) 3 /* 53: Stderr < FStream: superclass init_table position */},
   {(bigint) standard___file___FStream___path},
   {(bigint) standard___file___FStream___file_stat},
-  {(bigint) 1 /* 58: Stderr < IOS: superclass init_table position */},
+  {(bigint) 1 /* 56: Stderr < IOS: superclass init_table position */},
   {(bigint) standard___file___OFStream___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 4 /* 61: Stderr < OStream: superclass init_table position */},
+  {(bigint) 4 /* 59: Stderr < OStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write},
   {(bigint) standard___file___OFStream___is_writable},
-  {(bigint) 5 /* 64: Stderr < OFStream: superclass init_table position */},
+  {(bigint) 5 /* 62: Stderr < OFStream: superclass init_table position */},
   {(bigint) standard___file___OFStream___write_native},
   {(bigint) standard___file___OFStream___open},
   {(bigint) standard___file___OFStream___init},
   {(bigint) standard___file___OFStream___without_file},
-  {(bigint) 6 /* 69: Stderr < Stderr: superclass init_table position */},
+  {(bigint) 6 /* 67: Stderr < Stderr: superclass init_table position */},
   {(bigint) standard___file___Stderr___init},
 };
 /* 0: Pointer to the classtable */
@@ -24197,7 +25129,7 @@ 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[56] = {
+const classtable_elt_t VFT_standard___file___FileStat[54] = {
   {(bigint) -25 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FileStat" /* 2: Class Name */},
@@ -24214,11 +25146,9 @@ const classtable_elt_t VFT_standard___file___FileStat[56] = {
   {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) 0 /* 20: FileStat < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FileStat < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24247,8 +25177,8 @@ const classtable_elt_t VFT_standard___file___FileStat[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: FileStat < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 50: FileStat < FileStat: superclass init_table position */},
+  {(bigint) 1 /* 47: FileStat < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 48: FileStat < FileStat: superclass init_table position */},
   {(bigint) standard___file___FileStat___mode},
   {(bigint) standard___file___FileStat___atime},
   {(bigint) standard___file___FileStat___ctime},
@@ -24265,7 +25195,7 @@ val_t BOX_FileStat(void * val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_standard___file___NativeFile[55] = {
+const classtable_elt_t VFT_standard___file___NativeFile[53] = {
   {(bigint) -21 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeFile" /* 2: Class Name */},
@@ -24282,11 +25212,9 @@ const classtable_elt_t VFT_standard___file___NativeFile[55] = {
   {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) 0 /* 20: NativeFile < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: NativeFile < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24315,8 +25243,8 @@ const classtable_elt_t VFT_standard___file___NativeFile[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: NativeFile < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 50: NativeFile < NativeFile: superclass init_table position */},
+  {(bigint) 1 /* 47: NativeFile < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 48: NativeFile < NativeFile: superclass init_table position */},
   {(bigint) standard___file___NativeFile___io_read},
   {(bigint) standard___file___NativeFile___io_write},
   {(bigint) standard___file___NativeFile___io_close},
@@ -24332,7 +25260,7 @@ val_t BOX_NativeFile(void * val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_standard___exec___Process[58] = {
+const classtable_elt_t VFT_standard___exec___Process[56] = {
   {(bigint) 95 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Process" /* 2: Class Name */},
@@ -24349,11 +25277,9 @@ const classtable_elt_t VFT_standard___exec___Process[58] = {
   {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) 0 /* 20: Process < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Process < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24382,7 +25308,7 @@ const classtable_elt_t VFT_standard___exec___Process[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Process < Process: superclass init_table position */},
+  {(bigint) 1 /* 47: Process < Process: superclass init_table position */},
   {(bigint) standard___exec___Process___id},
   {(bigint) standard___exec___Process___is_finished},
   {(bigint) standard___exec___Process___wait},
@@ -24503,19 +25429,17 @@ val_t NEW_Process_standard___exec___Process___execute(val_t p0, val_t p1, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_standard___exec___IProcess[77] = {
-  {(bigint) 2851 /* 0: Identity */},
+const classtable_elt_t VFT_standard___exec___IProcess[75] = {
+  {(bigint) 2871 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IProcess" /* 2: Class Name */},
   {(bigint) 3 /* 3: IProcess < Object: superclass typecheck marker */},
   {(bigint) 95 /* 4: IProcess < Process: superclass typecheck marker */},
-  {(bigint) 207 /* 5: IProcess < IOS: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2207 /* 7: IProcess < IStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2851 /* 9: IProcess < IProcess: superclass typecheck marker */},
+  {(bigint) 215 /* 5: IProcess < IOS: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2227 /* 7: IProcess < IStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2871 /* 9: IProcess < IProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24524,7 +25448,7 @@ const classtable_elt_t VFT_standard___exec___IProcess[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IProcess < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IProcess < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24553,7 +25477,7 @@ const classtable_elt_t VFT_standard___exec___IProcess[77] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: IProcess < Process: superclass init_table position */},
+  {(bigint) 1 /* 47: IProcess < Process: superclass init_table position */},
   {(bigint) standard___exec___Process___id},
   {(bigint) standard___exec___Process___is_finished},
   {(bigint) standard___exec___Process___wait},
@@ -24562,13 +25486,13 @@ const classtable_elt_t VFT_standard___exec___IProcess[77] = {
   {(bigint) standard___exec___Process___init_},
   {(bigint) standard___exec___Process___execute},
   {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 58: IProcess < IOS: superclass init_table position */},
+  {(bigint) 2 /* 56: IProcess < IOS: superclass init_table position */},
   {(bigint) standard___exec___IProcess___close},
   {(bigint) standard___stream___IOS___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 3 /* 64: IProcess < IStream: superclass init_table position */},
+  {(bigint) 3 /* 62: IProcess < IStream: superclass init_table position */},
   {(bigint) standard___exec___IProcess___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
@@ -24578,7 +25502,7 @@ const classtable_elt_t VFT_standard___exec___IProcess[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 74: IProcess < IProcess: superclass init_table position */},
+  {(bigint) 4 /* 72: IProcess < IProcess: superclass init_table position */},
   {(bigint) standard___exec___IProcess___init},
   {(bigint) standard___exec___IProcess___init_},
 };
@@ -24675,18 +25599,16 @@ val_t NEW_IProcess_standard___exec___IProcess___init_(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___exec___OProcess[74] = {
-  {(bigint) 2783 /* 0: Identity */},
+const classtable_elt_t VFT_standard___exec___OProcess[72] = {
+  {(bigint) 2807 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OProcess" /* 2: Class Name */},
   {(bigint) 3 /* 3: OProcess < Object: superclass typecheck marker */},
   {(bigint) 95 /* 4: OProcess < Process: superclass typecheck marker */},
-  {(bigint) 207 /* 5: OProcess < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: OProcess < OStream: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2783 /* 8: OProcess < OProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: OProcess < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: OProcess < OStream: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2807 /* 8: OProcess < OProcess: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -24696,7 +25618,7 @@ const classtable_elt_t VFT_standard___exec___OProcess[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OProcess < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OProcess < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24725,7 +25647,7 @@ const classtable_elt_t VFT_standard___exec___OProcess[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OProcess < Process: superclass init_table position */},
+  {(bigint) 1 /* 47: OProcess < Process: superclass init_table position */},
   {(bigint) standard___exec___Process___id},
   {(bigint) standard___exec___Process___is_finished},
   {(bigint) standard___exec___Process___wait},
@@ -24734,10 +25656,10 @@ const classtable_elt_t VFT_standard___exec___OProcess[74] = {
   {(bigint) standard___exec___Process___init_},
   {(bigint) standard___exec___Process___execute},
   {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 58: OProcess < IOS: superclass init_table position */},
+  {(bigint) 2 /* 56: OProcess < IOS: superclass init_table position */},
   {(bigint) standard___exec___OProcess___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 3 /* 61: OProcess < OStream: superclass init_table position */},
+  {(bigint) 3 /* 59: OProcess < OStream: superclass init_table position */},
   {(bigint) standard___exec___OProcess___write},
   {(bigint) standard___exec___OProcess___is_writable},
   {0} /* Class Hole :( */,
@@ -24747,7 +25669,7 @@ const classtable_elt_t VFT_standard___exec___OProcess[74] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 71: OProcess < OProcess: superclass init_table position */},
+  {(bigint) 4 /* 69: OProcess < OProcess: superclass init_table position */},
   {(bigint) standard___exec___OProcess___init},
   {(bigint) standard___exec___OProcess___init_},
 };
@@ -24843,28 +25765,26 @@ val_t NEW_OProcess_standard___exec___OProcess___init_(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___exec___IOProcess[81] = {
-  {(bigint) 3163 /* 0: Identity */},
+const classtable_elt_t VFT_standard___exec___IOProcess[79] = {
+  {(bigint) 3211 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IOProcess" /* 2: Class Name */},
   {(bigint) 3 /* 3: IOProcess < Object: superclass typecheck marker */},
   {(bigint) 95 /* 4: IOProcess < Process: superclass typecheck marker */},
-  {(bigint) 207 /* 5: IOProcess < IOS: superclass typecheck marker */},
-  {(bigint) 2095 /* 6: IOProcess < OStream: superclass typecheck marker */},
-  {(bigint) 2207 /* 7: IOProcess < IStream: superclass typecheck marker */},
-  {(bigint) 2783 /* 8: IOProcess < OProcess: superclass typecheck marker */},
-  {(bigint) 2851 /* 9: IOProcess < IProcess: superclass typecheck marker */},
-  {(bigint) 2859 /* 10: IOProcess < IOStream: superclass typecheck marker */},
-  {(bigint) 3163 /* 11: IOProcess < IOProcess: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 215 /* 5: IOProcess < IOS: superclass typecheck marker */},
+  {(bigint) 2107 /* 6: IOProcess < OStream: superclass typecheck marker */},
+  {(bigint) 2227 /* 7: IOProcess < IStream: superclass typecheck marker */},
+  {(bigint) 2807 /* 8: IOProcess < OProcess: superclass typecheck marker */},
+  {(bigint) 2871 /* 9: IOProcess < IProcess: superclass typecheck marker */},
+  {(bigint) 2879 /* 10: IOProcess < IOStream: superclass typecheck marker */},
+  {(bigint) 3211 /* 11: IOProcess < IOProcess: 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) 0 /* 20: IOProcess < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IOProcess < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -24893,7 +25813,7 @@ const classtable_elt_t VFT_standard___exec___IOProcess[81] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: IOProcess < Process: superclass init_table position */},
+  {(bigint) 1 /* 47: IOProcess < Process: superclass init_table position */},
   {(bigint) standard___exec___Process___id},
   {(bigint) standard___exec___Process___is_finished},
   {(bigint) standard___exec___Process___wait},
@@ -24902,27 +25822,27 @@ const classtable_elt_t VFT_standard___exec___IOProcess[81] = {
   {(bigint) standard___exec___Process___init_},
   {(bigint) standard___exec___Process___execute},
   {(bigint) standard___exec___Process___basic_exec_execute},
-  {(bigint) 2 /* 58: IOProcess < IOS: superclass init_table position */},
+  {(bigint) 2 /* 56: IOProcess < IOS: superclass init_table position */},
   {(bigint) standard___exec___IOProcess___close},
   {(bigint) standard___stream___IOS___init},
-  {(bigint) 5 /* 61: IOProcess < OStream: superclass init_table position */},
+  {(bigint) 5 /* 59: IOProcess < OStream: superclass init_table position */},
   {(bigint) standard___exec___OProcess___write},
   {(bigint) standard___exec___OProcess___is_writable},
-  {(bigint) 3 /* 64: IOProcess < IStream: superclass init_table position */},
+  {(bigint) 3 /* 62: IOProcess < IStream: superclass init_table position */},
   {(bigint) standard___exec___IProcess___read_char},
   {(bigint) standard___stream___IStream___read},
   {(bigint) standard___stream___IStream___read_line},
   {(bigint) standard___stream___IStream___read_all},
   {(bigint) standard___stream___IStream___append_line_to},
   {(bigint) standard___exec___IProcess___eof},
-  {(bigint) 6 /* 71: IOProcess < OProcess: superclass init_table position */},
+  {(bigint) 6 /* 69: IOProcess < OProcess: superclass init_table position */},
   {(bigint) standard___exec___OProcess___init},
   {(bigint) standard___exec___OProcess___init_},
-  {(bigint) 4 /* 74: IOProcess < IProcess: superclass init_table position */},
+  {(bigint) 4 /* 72: IOProcess < IProcess: superclass init_table position */},
   {(bigint) standard___exec___IProcess___init},
   {(bigint) standard___exec___IProcess___init_},
-  {(bigint) 7 /* 77: IOProcess < IOStream: superclass init_table position */},
-  {(bigint) 8 /* 78: IOProcess < IOProcess: superclass init_table position */},
+  {(bigint) 7 /* 75: IOProcess < IOStream: superclass init_table position */},
+  {(bigint) 8 /* 76: IOProcess < IOProcess: superclass init_table position */},
   {(bigint) standard___exec___IOProcess___init},
   {(bigint) standard___exec___IOProcess___init_},
 };
@@ -25024,7 +25944,7 @@ val_t NEW_IOProcess_standard___exec___IOProcess___init_(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_standard___exec___NativeProcess[58] = {
+const classtable_elt_t VFT_standard___exec___NativeProcess[56] = {
   {(bigint) -17 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "NativeProcess" /* 2: Class Name */},
@@ -25041,11 +25961,9 @@ const classtable_elt_t VFT_standard___exec___NativeProcess[58] = {
   {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) 0 /* 20: NativeProcess < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: NativeProcess < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25074,8 +25992,8 @@ const classtable_elt_t VFT_standard___exec___NativeProcess[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: NativeProcess < Pointer: superclass init_table position */},
-  {(bigint) 2 /* 50: NativeProcess < NativeProcess: superclass init_table position */},
+  {(bigint) 1 /* 47: NativeProcess < Pointer: superclass init_table position */},
+  {(bigint) 2 /* 48: NativeProcess < NativeProcess: superclass init_table position */},
   {(bigint) standard___exec___NativeProcess___id},
   {(bigint) standard___exec___NativeProcess___is_finished},
   {(bigint) standard___exec___NativeProcess___status},
@@ -25094,7 +26012,7 @@ val_t BOX_NativeProcess(void * val) {
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(box);
 }
-const classtable_elt_t VFT_location___SourceFile[57] = {
+const classtable_elt_t VFT_location___SourceFile[55] = {
   {(bigint) 43 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SourceFile" /* 2: Class Name */},
@@ -25111,11 +26029,9 @@ const classtable_elt_t VFT_location___SourceFile[57] = {
   {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) 0 /* 20: SourceFile < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: SourceFile < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25144,7 +26060,7 @@ const classtable_elt_t VFT_location___SourceFile[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: SourceFile < SourceFile: superclass init_table position */},
+  {(bigint) 1 /* 47: SourceFile < SourceFile: superclass init_table position */},
   {(bigint) location___SourceFile___filename},
   {(bigint) location___SourceFile___filename__eq},
   {(bigint) location___SourceFile___string},
@@ -25237,15 +26153,13 @@ val_t NEW_SourceFile_location___SourceFile___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_location___Location[73] = {
-  {(bigint) 2183 /* 0: Identity */},
+  {(bigint) 2199 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Location" /* 2: Class Name */},
   {(bigint) 3 /* 3: Location < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 267 /* 5: Location < Comparable: superclass typecheck marker */},
-  {(bigint) 2183 /* 6: Location < Location: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 275 /* 5: Location < Comparable: superclass typecheck marker */},
+  {(bigint) 2199 /* 6: Location < Location: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25257,7 +26171,7 @@ const classtable_elt_t VFT_location___Location[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: Location < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Location < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) location___Location_____eqeq},
@@ -25291,7 +26205,9 @@ const classtable_elt_t VFT_location___Location[73] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 0 /* 54: Location < Comparable: superclass init_table position */},
+  {(bigint) 0 /* 52: Location < Comparable: superclass init_table position */},
+  {(bigint) 2199 /* 53: VT Location::OTHER : id of Location */},
+  {(bigint) 6 /* 54: VT Location::OTHER : color of Location */},
   {(bigint) location___Location_____l},
   {(bigint) standard___kernel___Comparable_____leq},
   {(bigint) standard___kernel___Comparable_____geq},
@@ -25422,16 +26338,14 @@ val_t NEW_Location_location___Location___with_file(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEol[75] = {
-  {(bigint) 2687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TEol[73] = {
+  {(bigint) 2715 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TEol" /* 2: Class Name */},
   {(bigint) 3 /* 3: TEol < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TEol < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TEol < Token: superclass typecheck marker */},
-  {(bigint) 2687 /* 6: TEol < TEol: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TEol < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TEol < Token: superclass typecheck marker */},
+  {(bigint) 2715 /* 6: TEol < TEol: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25443,7 +26357,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TEol < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TEol < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25485,7 +26399,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TEol < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -25495,9 +26409,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEol[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TEol___parser_index},
-  {(bigint) 0 /* 72: TEol < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TEol < Token: superclass init_table position */},
   {(bigint) parser___lexer___TEol___init_tk},
-  {(bigint) 3 /* 74: TEol < TEol: superclass init_table position */},
+  {(bigint) 3 /* 72: TEol < TEol: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -25587,16 +26501,14 @@ val_t NEW_TEol_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TComment[75] = {
-  {(bigint) 2711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TComment[73] = {
+  {(bigint) 2739 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TComment" /* 2: Class Name */},
   {(bigint) 3 /* 3: TComment < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TComment < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TComment < Token: superclass typecheck marker */},
-  {(bigint) 2711 /* 6: TComment < TComment: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TComment < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TComment < Token: superclass typecheck marker */},
+  {(bigint) 2739 /* 6: TComment < TComment: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25608,7 +26520,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TComment < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TComment < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25650,7 +26562,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TComment < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -25660,9 +26572,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TComment[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TComment___parser_index},
-  {(bigint) 0 /* 72: TComment < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TComment < Token: superclass init_table position */},
   {(bigint) parser___lexer___TComment___init_tk},
-  {(bigint) 3 /* 74: TComment < TComment: superclass init_table position */},
+  {(bigint) 3 /* 72: TComment < TComment: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -25752,16 +26664,14 @@ val_t NEW_TComment_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[75] = {
-  {(bigint) 2547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[73] = {
+  {(bigint) 2575 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwmodule" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwmodule < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwmodule < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwmodule < Token: superclass typecheck marker */},
-  {(bigint) 2547 /* 6: TKwmodule < TKwmodule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwmodule < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwmodule < Token: superclass typecheck marker */},
+  {(bigint) 2575 /* 6: TKwmodule < TKwmodule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25773,7 +26683,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwmodule < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwmodule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25815,7 +26725,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwmodule < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -25825,9 +26735,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmodule[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwmodule___parser_index},
-  {(bigint) 0 /* 72: TKwmodule < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwmodule < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwmodule___init_tk},
-  {(bigint) 3 /* 74: TKwmodule < TKwmodule: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwmodule < TKwmodule: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -25917,16 +26827,14 @@ val_t NEW_TKwmodule_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwimport[75] = {
-  {(bigint) 2595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwimport[73] = {
+  {(bigint) 2623 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwimport" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwimport < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwimport < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwimport < Token: superclass typecheck marker */},
-  {(bigint) 2595 /* 6: TKwimport < TKwimport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwimport < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwimport < Token: superclass typecheck marker */},
+  {(bigint) 2623 /* 6: TKwimport < TKwimport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -25938,7 +26846,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwimport < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwimport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -25980,7 +26888,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwimport < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -25990,9 +26898,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwimport[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwimport___parser_index},
-  {(bigint) 0 /* 72: TKwimport < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwimport < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwimport___init_tk},
-  {(bigint) 3 /* 74: TKwimport < TKwimport: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwimport < TKwimport: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26080,16 +26988,14 @@ val_t NEW_TKwimport_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwclass[75] = {
-  {(bigint) 2635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwclass[73] = {
+  {(bigint) 2663 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwclass" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwclass < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwclass < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwclass < Token: superclass typecheck marker */},
-  {(bigint) 2635 /* 6: TKwclass < TKwclass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwclass < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwclass < Token: superclass typecheck marker */},
+  {(bigint) 2663 /* 6: TKwclass < TKwclass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26101,7 +27007,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwclass < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwclass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26143,7 +27049,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwclass < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -26153,9 +27059,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwclass[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwclass___parser_index},
-  {(bigint) 0 /* 72: TKwclass < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwclass < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwclass___init_tk},
-  {(bigint) 3 /* 74: TKwclass < TKwclass: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwclass < TKwclass: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26243,16 +27149,14 @@ val_t NEW_TKwclass_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[75] = {
-  {(bigint) 2655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[73] = {
+  {(bigint) 2683 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwabstract" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwabstract < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwabstract < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwabstract < Token: superclass typecheck marker */},
-  {(bigint) 2655 /* 6: TKwabstract < TKwabstract: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwabstract < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwabstract < Token: superclass typecheck marker */},
+  {(bigint) 2683 /* 6: TKwabstract < TKwabstract: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26264,7 +27168,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwabstract < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwabstract < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26306,7 +27210,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwabstract < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -26316,9 +27220,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabstract[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwabstract___parser_index},
-  {(bigint) 0 /* 72: TKwabstract < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwabstract < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwabstract___init_tk},
-  {(bigint) 3 /* 74: TKwabstract < TKwabstract: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwabstract < TKwabstract: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26406,16 +27310,14 @@ val_t NEW_TKwabstract_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[75] = {
-  {(bigint) 2583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[73] = {
+  {(bigint) 2611 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwinterface" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwinterface < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwinterface < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwinterface < Token: superclass typecheck marker */},
-  {(bigint) 2583 /* 6: TKwinterface < TKwinterface: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwinterface < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwinterface < Token: superclass typecheck marker */},
+  {(bigint) 2611 /* 6: TKwinterface < TKwinterface: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26427,7 +27329,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwinterface < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwinterface < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26469,7 +27371,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwinterface < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -26479,9 +27381,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinterface[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwinterface___parser_index},
-  {(bigint) 0 /* 72: TKwinterface < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwinterface < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwinterface___init_tk},
-  {(bigint) 3 /* 74: TKwinterface < TKwinterface: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwinterface < TKwinterface: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26569,16 +27471,14 @@ val_t NEW_TKwinterface_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwenum[75] = {
-  {(bigint) 2615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwenum[73] = {
+  {(bigint) 2643 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwenum" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwenum < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwenum < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwenum < Token: superclass typecheck marker */},
-  {(bigint) 2615 /* 6: TKwenum < TKwenum: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwenum < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwenum < Token: superclass typecheck marker */},
+  {(bigint) 2643 /* 6: TKwenum < TKwenum: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26590,7 +27490,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwenum < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwenum < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26632,7 +27532,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwenum < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -26642,9 +27542,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwenum[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwenum___parser_index},
-  {(bigint) 0 /* 72: TKwenum < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwenum < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwenum___init_tk},
-  {(bigint) 3 /* 74: TKwenum < TKwenum: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwenum < TKwenum: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26734,16 +27634,14 @@ val_t NEW_TKwenum_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[75] = {
-  {(bigint) 2495 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[73] = {
+  {(bigint) 2523 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwspecial" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwspecial < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwspecial < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwspecial < Token: superclass typecheck marker */},
-  {(bigint) 2495 /* 6: TKwspecial < TKwspecial: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwspecial < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwspecial < Token: superclass typecheck marker */},
+  {(bigint) 2523 /* 6: TKwspecial < TKwspecial: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26755,7 +27653,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwspecial < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwspecial < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26797,7 +27695,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwspecial < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: TKwspecial < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -26807,9 +27705,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwspecial[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwspecial___parser_index},
-  {(bigint) 0 /* 72: TKwspecial < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwspecial < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwspecial___init_tk},
-  {(bigint) 3 /* 74: TKwspecial < TKwspecial: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwspecial < TKwspecial: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -26897,16 +27795,14 @@ val_t NEW_TKwspecial_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwend[75] = {
-  {(bigint) 2619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwend[73] = {
+  {(bigint) 2647 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwend" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwend < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwend < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwend < Token: superclass typecheck marker */},
-  {(bigint) 2619 /* 6: TKwend < TKwend: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwend < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwend < Token: superclass typecheck marker */},
+  {(bigint) 2647 /* 6: TKwend < TKwend: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -26918,7 +27814,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwend < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwend < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -26960,7 +27856,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwend < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -26970,9 +27866,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwend[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwend___parser_index},
-  {(bigint) 0 /* 72: TKwend < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwend < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwend___init_tk},
-  {(bigint) 3 /* 74: TKwend < TKwend: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwend < TKwend: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27060,16 +27956,14 @@ val_t NEW_TKwend_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[75] = {
-  {(bigint) 2551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[73] = {
+  {(bigint) 2579 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwmeth" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwmeth < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwmeth < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwmeth < Token: superclass typecheck marker */},
-  {(bigint) 2551 /* 6: TKwmeth < TKwmeth: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwmeth < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwmeth < Token: superclass typecheck marker */},
+  {(bigint) 2579 /* 6: TKwmeth < TKwmeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27081,7 +27975,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwmeth < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwmeth < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27123,7 +28017,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwmeth < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27133,9 +28027,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwmeth[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwmeth___parser_index},
-  {(bigint) 0 /* 72: TKwmeth < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwmeth < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwmeth___init_tk},
-  {(bigint) 3 /* 74: TKwmeth < TKwmeth: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwmeth < TKwmeth: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27223,16 +28117,14 @@ val_t NEW_TKwmeth_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwtype[75] = {
-  {(bigint) 2479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwtype[73] = {
+  {(bigint) 2507 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwtype" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwtype < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwtype < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwtype < Token: superclass typecheck marker */},
-  {(bigint) 2479 /* 6: TKwtype < TKwtype: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwtype < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwtype < Token: superclass typecheck marker */},
+  {(bigint) 2507 /* 6: TKwtype < TKwtype: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27244,7 +28136,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwtype < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwtype < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27286,7 +28178,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwtype < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27296,9 +28188,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtype[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwtype___parser_index},
-  {(bigint) 0 /* 72: TKwtype < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwtype < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwtype___init_tk},
-  {(bigint) 3 /* 74: TKwtype < TKwtype: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwtype < TKwtype: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27386,16 +28278,14 @@ val_t NEW_TKwtype_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwinit[75] = {
-  {(bigint) 2587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwinit[73] = {
+  {(bigint) 2615 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwinit" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwinit < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwinit < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwinit < Token: superclass typecheck marker */},
-  {(bigint) 2587 /* 6: TKwinit < TKwinit: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwinit < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwinit < Token: superclass typecheck marker */},
+  {(bigint) 2615 /* 6: TKwinit < TKwinit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27407,7 +28297,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwinit < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwinit < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27449,7 +28339,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwinit < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27459,9 +28349,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwinit[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwinit___parser_index},
-  {(bigint) 0 /* 72: TKwinit < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwinit < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwinit___init_tk},
-  {(bigint) 3 /* 74: TKwinit < TKwinit: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwinit < TKwinit: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27549,16 +28439,14 @@ val_t NEW_TKwinit_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwredef[75] = {
-  {(bigint) 2507 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwredef[73] = {
+  {(bigint) 2535 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwredef" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwredef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwredef < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwredef < Token: superclass typecheck marker */},
-  {(bigint) 2507 /* 6: TKwredef < TKwredef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwredef < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwredef < Token: superclass typecheck marker */},
+  {(bigint) 2535 /* 6: TKwredef < TKwredef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27570,7 +28458,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwredef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwredef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27612,7 +28500,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwredef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27622,9 +28510,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwredef[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwredef___parser_index},
-  {(bigint) 0 /* 72: TKwredef < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwredef < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwredef___init_tk},
-  {(bigint) 3 /* 74: TKwredef < TKwredef: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwredef < TKwredef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27712,16 +28600,14 @@ val_t NEW_TKwredef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwis[75] = {
-  {(bigint) 2571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwis[73] = {
+  {(bigint) 2599 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwis" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwis < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwis < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwis < Token: superclass typecheck marker */},
-  {(bigint) 2571 /* 6: TKwis < TKwis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwis < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwis < Token: superclass typecheck marker */},
+  {(bigint) 2599 /* 6: TKwis < TKwis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27733,7 +28619,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwis < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27775,7 +28661,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwis < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27785,9 +28671,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwis[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwis___parser_index},
-  {(bigint) 0 /* 72: TKwis < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwis < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwis___init_tk},
-  {(bigint) 3 /* 74: TKwis < TKwis: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwis < TKwis: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -27875,16 +28761,14 @@ val_t NEW_TKwis_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwdo[75] = {
-  {(bigint) 2627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwdo[73] = {
+  {(bigint) 2655 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwdo" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwdo < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwdo < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwdo < Token: superclass typecheck marker */},
-  {(bigint) 2627 /* 6: TKwdo < TKwdo: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwdo < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwdo < Token: superclass typecheck marker */},
+  {(bigint) 2655 /* 6: TKwdo < TKwdo: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -27896,7 +28780,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwdo < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwdo < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -27938,7 +28822,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwdo < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -27948,9 +28832,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwdo[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwdo___parser_index},
-  {(bigint) 0 /* 72: TKwdo < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwdo < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwdo___init_tk},
-  {(bigint) 3 /* 74: TKwdo < TKwdo: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwdo < TKwdo: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28038,16 +28922,14 @@ val_t NEW_TKwdo_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[75] = {
-  {(bigint) 2511 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[73] = {
+  {(bigint) 2539 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwreadable" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwreadable < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwreadable < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwreadable < Token: superclass typecheck marker */},
-  {(bigint) 2511 /* 6: TKwreadable < TKwreadable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwreadable < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwreadable < Token: superclass typecheck marker */},
+  {(bigint) 2539 /* 6: TKwreadable < TKwreadable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28059,7 +28941,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwreadable < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwreadable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28101,7 +28983,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwreadable < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28111,9 +28993,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreadable[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwreadable___parser_index},
-  {(bigint) 0 /* 72: TKwreadable < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwreadable < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwreadable___init_tk},
-  {(bigint) 3 /* 74: TKwreadable < TKwreadable: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwreadable < TKwreadable: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28201,16 +29083,14 @@ val_t NEW_TKwreadable_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[75] = {
-  {(bigint) 2467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[73] = {
+  {(bigint) 2495 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwwritable" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwwritable < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwwritable < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwwritable < Token: superclass typecheck marker */},
-  {(bigint) 2467 /* 6: TKwwritable < TKwwritable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwwritable < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwwritable < Token: superclass typecheck marker */},
+  {(bigint) 2495 /* 6: TKwwritable < TKwwritable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28222,7 +29102,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwwritable < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwwritable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28264,7 +29144,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwwritable < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28274,9 +29154,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwritable[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwwritable___parser_index},
-  {(bigint) 0 /* 72: TKwwritable < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwwritable < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwwritable___init_tk},
-  {(bigint) 3 /* 74: TKwwritable < TKwwritable: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwwritable < TKwwritable: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28364,16 +29244,14 @@ val_t NEW_TKwwritable_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwvar[75] = {
-  {(bigint) 2475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwvar[73] = {
+  {(bigint) 2503 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwvar" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwvar < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwvar < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwvar < Token: superclass typecheck marker */},
-  {(bigint) 2475 /* 6: TKwvar < TKwvar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwvar < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwvar < Token: superclass typecheck marker */},
+  {(bigint) 2503 /* 6: TKwvar < TKwvar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28385,7 +29263,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwvar < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwvar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28427,7 +29305,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwvar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28437,9 +29315,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwvar[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwvar___parser_index},
-  {(bigint) 0 /* 72: TKwvar < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwvar < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwvar___init_tk},
-  {(bigint) 3 /* 74: TKwvar < TKwvar: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwvar < TKwvar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28527,16 +29405,14 @@ val_t NEW_TKwvar_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwintern[75] = {
-  {(bigint) 2579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwintern[73] = {
+  {(bigint) 2607 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwintern" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwintern < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwintern < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwintern < Token: superclass typecheck marker */},
-  {(bigint) 2579 /* 6: TKwintern < TKwintern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwintern < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwintern < Token: superclass typecheck marker */},
+  {(bigint) 2607 /* 6: TKwintern < TKwintern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28548,7 +29424,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwintern < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwintern < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28590,7 +29466,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwintern < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28600,9 +29476,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintern[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwintern___parser_index},
-  {(bigint) 0 /* 72: TKwintern < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwintern < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwintern___init_tk},
-  {(bigint) 3 /* 74: TKwintern < TKwintern: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwintern < TKwintern: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28690,16 +29566,14 @@ val_t NEW_TKwintern_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwextern[75] = {
-  {(bigint) 2611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwextern[73] = {
+  {(bigint) 2639 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwextern" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwextern < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwextern < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwextern < Token: superclass typecheck marker */},
-  {(bigint) 2611 /* 6: TKwextern < TKwextern: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwextern < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwextern < Token: superclass typecheck marker */},
+  {(bigint) 2639 /* 6: TKwextern < TKwextern: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28711,7 +29585,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwextern < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwextern < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28753,7 +29627,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwextern < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28763,9 +29637,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwextern[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwextern___parser_index},
-  {(bigint) 0 /* 72: TKwextern < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwextern < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwextern___init_tk},
-  {(bigint) 3 /* 74: TKwextern < TKwextern: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwextern < TKwextern: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -28853,16 +29727,14 @@ val_t NEW_TKwextern_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[75] = {
-  {(bigint) 2515 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[73] = {
+  {(bigint) 2543 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwprotected" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwprotected < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwprotected < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwprotected < Token: superclass typecheck marker */},
-  {(bigint) 2515 /* 6: TKwprotected < TKwprotected: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwprotected < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwprotected < Token: superclass typecheck marker */},
+  {(bigint) 2543 /* 6: TKwprotected < TKwprotected: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -28874,7 +29746,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwprotected < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwprotected < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -28916,7 +29788,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwprotected < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -28926,9 +29798,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprotected[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwprotected___parser_index},
-  {(bigint) 0 /* 72: TKwprotected < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwprotected < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwprotected___init_tk},
-  {(bigint) 3 /* 74: TKwprotected < TKwprotected: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwprotected < TKwprotected: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29016,16 +29888,14 @@ val_t NEW_TKwprotected_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[75] = {
-  {(bigint) 2519 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[73] = {
+  {(bigint) 2547 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwprivate" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwprivate < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwprivate < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwprivate < Token: superclass typecheck marker */},
-  {(bigint) 2519 /* 6: TKwprivate < TKwprivate: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwprivate < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwprivate < Token: superclass typecheck marker */},
+  {(bigint) 2547 /* 6: TKwprivate < TKwprivate: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29037,7 +29907,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwprivate < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwprivate < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29079,7 +29949,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwprivate < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29089,9 +29959,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwprivate[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwprivate___parser_index},
-  {(bigint) 0 /* 72: TKwprivate < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwprivate < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwprivate___init_tk},
-  {(bigint) 3 /* 74: TKwprivate < TKwprivate: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwprivate < TKwprivate: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29179,16 +30049,14 @@ val_t NEW_TKwprivate_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[75] = {
-  {(bigint) 2575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[73] = {
+  {(bigint) 2603 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwintrude" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwintrude < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwintrude < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwintrude < Token: superclass typecheck marker */},
-  {(bigint) 2575 /* 6: TKwintrude < TKwintrude: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwintrude < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwintrude < Token: superclass typecheck marker */},
+  {(bigint) 2603 /* 6: TKwintrude < TKwintrude: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29200,7 +30068,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwintrude < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwintrude < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29242,7 +30110,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwintrude < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29252,9 +30120,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwintrude[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwintrude___parser_index},
-  {(bigint) 0 /* 72: TKwintrude < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwintrude < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwintrude___init_tk},
-  {(bigint) 3 /* 74: TKwintrude < TKwintrude: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwintrude < TKwintrude: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29342,16 +30210,14 @@ val_t NEW_TKwintrude_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwif[75] = {
-  {(bigint) 2599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwif[73] = {
+  {(bigint) 2627 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwif" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwif < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwif < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwif < Token: superclass typecheck marker */},
-  {(bigint) 2599 /* 6: TKwif < TKwif: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwif < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwif < Token: superclass typecheck marker */},
+  {(bigint) 2627 /* 6: TKwif < TKwif: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29363,7 +30229,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwif < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwif < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29405,7 +30271,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwif < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29415,9 +30281,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwif[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwif___parser_index},
-  {(bigint) 0 /* 72: TKwif < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwif < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwif___init_tk},
-  {(bigint) 3 /* 74: TKwif < TKwif: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwif < TKwif: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29505,16 +30371,14 @@ val_t NEW_TKwif_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwthen[75] = {
-  {(bigint) 2487 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwthen[73] = {
+  {(bigint) 2515 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwthen" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwthen < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwthen < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwthen < Token: superclass typecheck marker */},
-  {(bigint) 2487 /* 6: TKwthen < TKwthen: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwthen < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwthen < Token: superclass typecheck marker */},
+  {(bigint) 2515 /* 6: TKwthen < TKwthen: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29526,7 +30390,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwthen < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwthen < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29568,7 +30432,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwthen < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29578,9 +30442,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwthen[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwthen___parser_index},
-  {(bigint) 0 /* 72: TKwthen < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwthen < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwthen___init_tk},
-  {(bigint) 3 /* 74: TKwthen < TKwthen: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwthen < TKwthen: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29668,16 +30532,14 @@ val_t NEW_TKwthen_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwelse[75] = {
-  {(bigint) 2623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwelse[73] = {
+  {(bigint) 2651 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwelse" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwelse < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwelse < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwelse < Token: superclass typecheck marker */},
-  {(bigint) 2623 /* 6: TKwelse < TKwelse: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwelse < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwelse < Token: superclass typecheck marker */},
+  {(bigint) 2651 /* 6: TKwelse < TKwelse: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29689,7 +30551,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwelse < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwelse < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29731,7 +30593,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwelse < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29741,9 +30603,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwelse[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwelse___parser_index},
-  {(bigint) 0 /* 72: TKwelse < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwelse < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwelse___init_tk},
-  {(bigint) 3 /* 74: TKwelse < TKwelse: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwelse < TKwelse: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29831,16 +30693,14 @@ val_t NEW_TKwelse_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[75] = {
-  {(bigint) 2471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[73] = {
+  {(bigint) 2499 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwwhile" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwwhile < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwwhile < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwwhile < Token: superclass typecheck marker */},
-  {(bigint) 2471 /* 6: TKwwhile < TKwwhile: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwwhile < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwwhile < Token: superclass typecheck marker */},
+  {(bigint) 2499 /* 6: TKwwhile < TKwwhile: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -29852,7 +30712,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwwhile < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwwhile < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -29894,7 +30754,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwwhile < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -29904,9 +30764,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwwhile[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwwhile___parser_index},
-  {(bigint) 0 /* 72: TKwwhile < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwwhile < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwwhile___init_tk},
-  {(bigint) 3 /* 74: TKwwhile < TKwwhile: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwwhile < TKwwhile: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -29994,16 +30854,14 @@ val_t NEW_TKwwhile_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwloop[75] = {
-  {(bigint) 2555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwloop[73] = {
+  {(bigint) 2583 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwloop" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwloop < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwloop < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwloop < Token: superclass typecheck marker */},
-  {(bigint) 2555 /* 6: TKwloop < TKwloop: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwloop < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwloop < Token: superclass typecheck marker */},
+  {(bigint) 2583 /* 6: TKwloop < TKwloop: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30015,7 +30873,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwloop < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwloop < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30057,7 +30915,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwloop < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30067,9 +30925,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwloop[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwloop___parser_index},
-  {(bigint) 0 /* 72: TKwloop < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwloop < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwloop___init_tk},
-  {(bigint) 3 /* 74: TKwloop < TKwloop: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwloop < TKwloop: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30157,16 +31015,14 @@ val_t NEW_TKwloop_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwfor[75] = {
-  {(bigint) 2603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwfor[73] = {
+  {(bigint) 2631 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwfor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwfor < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwfor < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwfor < Token: superclass typecheck marker */},
-  {(bigint) 2603 /* 6: TKwfor < TKwfor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwfor < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwfor < Token: superclass typecheck marker */},
+  {(bigint) 2631 /* 6: TKwfor < TKwfor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30178,7 +31034,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwfor < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwfor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30220,7 +31076,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwfor < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30230,9 +31086,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfor[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwfor___parser_index},
-  {(bigint) 0 /* 72: TKwfor < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwfor < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwfor___init_tk},
-  {(bigint) 3 /* 74: TKwfor < TKwfor: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwfor < TKwfor: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30320,16 +31176,14 @@ val_t NEW_TKwfor_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwin[75] = {
-  {(bigint) 2591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwin[73] = {
+  {(bigint) 2619 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwin" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwin < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwin < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwin < Token: superclass typecheck marker */},
-  {(bigint) 2591 /* 6: TKwin < TKwin: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwin < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwin < Token: superclass typecheck marker */},
+  {(bigint) 2619 /* 6: TKwin < TKwin: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30341,7 +31195,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwin < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwin < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30383,7 +31237,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwin < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30393,9 +31247,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwin[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwin___parser_index},
-  {(bigint) 0 /* 72: TKwin < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwin < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwin___init_tk},
-  {(bigint) 3 /* 74: TKwin < TKwin: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwin < TKwin: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30483,16 +31337,14 @@ val_t NEW_TKwin_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwand[75] = {
-  {(bigint) 2651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwand[73] = {
+  {(bigint) 2679 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwand" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwand < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwand < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwand < Token: superclass typecheck marker */},
-  {(bigint) 2651 /* 6: TKwand < TKwand: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwand < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwand < Token: superclass typecheck marker */},
+  {(bigint) 2679 /* 6: TKwand < TKwand: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30504,7 +31356,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwand < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwand < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30546,7 +31398,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwand < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30556,9 +31408,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwand[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwand___parser_index},
-  {(bigint) 0 /* 72: TKwand < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwand < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwand___init_tk},
-  {(bigint) 3 /* 74: TKwand < TKwand: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwand < TKwand: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30646,16 +31498,14 @@ val_t NEW_TKwand_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwor[75] = {
-  {(bigint) 2523 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwor[73] = {
+  {(bigint) 2551 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwor < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwor < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwor < Token: superclass typecheck marker */},
-  {(bigint) 2523 /* 6: TKwor < TKwor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwor < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwor < Token: superclass typecheck marker */},
+  {(bigint) 2551 /* 6: TKwor < TKwor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30667,7 +31517,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwor < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30709,7 +31559,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwor < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30719,9 +31569,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwor[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwor___parser_index},
-  {(bigint) 0 /* 72: TKwor < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwor < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwor___init_tk},
-  {(bigint) 3 /* 74: TKwor < TKwor: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwor < TKwor: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30809,16 +31659,14 @@ val_t NEW_TKwor_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnot[75] = {
-  {(bigint) 2539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwnot[73] = {
+  {(bigint) 2567 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwnot" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwnot < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwnot < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwnot < Token: superclass typecheck marker */},
-  {(bigint) 2539 /* 6: TKwnot < TKwnot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwnot < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwnot < Token: superclass typecheck marker */},
+  {(bigint) 2567 /* 6: TKwnot < TKwnot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30830,7 +31678,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwnot < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwnot < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -30872,7 +31720,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwnot < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -30882,9 +31730,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnot[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwnot___parser_index},
-  {(bigint) 0 /* 72: TKwnot < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwnot < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwnot___init_tk},
-  {(bigint) 3 /* 74: TKwnot < TKwnot: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwnot < TKwnot: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -30972,16 +31820,14 @@ val_t NEW_TKwnot_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[75] = {
-  {(bigint) 2503 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[73] = {
+  {(bigint) 2531 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwreturn" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwreturn < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwreturn < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwreturn < Token: superclass typecheck marker */},
-  {(bigint) 2503 /* 6: TKwreturn < TKwreturn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwreturn < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwreturn < Token: superclass typecheck marker */},
+  {(bigint) 2531 /* 6: TKwreturn < TKwreturn: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -30993,7 +31839,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwreturn < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwreturn < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31035,7 +31881,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwreturn < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31045,9 +31891,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwreturn[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwreturn___parser_index},
-  {(bigint) 0 /* 72: TKwreturn < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwreturn < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwreturn___init_tk},
-  {(bigint) 3 /* 74: TKwreturn < TKwreturn: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwreturn < TKwreturn: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31135,16 +31981,14 @@ val_t NEW_TKwreturn_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[75] = {
-  {(bigint) 2631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[73] = {
+  {(bigint) 2659 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwcontinue" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwcontinue < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwcontinue < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwcontinue < Token: superclass typecheck marker */},
-  {(bigint) 2631 /* 6: TKwcontinue < TKwcontinue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwcontinue < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwcontinue < Token: superclass typecheck marker */},
+  {(bigint) 2659 /* 6: TKwcontinue < TKwcontinue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31156,7 +32000,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwcontinue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwcontinue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31198,7 +32042,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwcontinue < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31208,9 +32052,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwcontinue[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwcontinue___parser_index},
-  {(bigint) 0 /* 72: TKwcontinue < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwcontinue < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwcontinue___init_tk},
-  {(bigint) 3 /* 74: TKwcontinue < TKwcontinue: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwcontinue < TKwcontinue: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31298,16 +32142,14 @@ val_t NEW_TKwcontinue_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[75] = {
-  {(bigint) 2639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[73] = {
+  {(bigint) 2667 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwbreak" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwbreak < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwbreak < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwbreak < Token: superclass typecheck marker */},
-  {(bigint) 2639 /* 6: TKwbreak < TKwbreak: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwbreak < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwbreak < Token: superclass typecheck marker */},
+  {(bigint) 2667 /* 6: TKwbreak < TKwbreak: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31319,7 +32161,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwbreak < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwbreak < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31361,7 +32203,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwbreak < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31371,9 +32213,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwbreak[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwbreak___parser_index},
-  {(bigint) 0 /* 72: TKwbreak < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwbreak < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwbreak___init_tk},
-  {(bigint) 3 /* 74: TKwbreak < TKwbreak: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwbreak < TKwbreak: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31461,16 +32303,14 @@ val_t NEW_TKwbreak_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwabort[75] = {
-  {(bigint) 2659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwabort[73] = {
+  {(bigint) 2687 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwabort" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwabort < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwabort < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwabort < Token: superclass typecheck marker */},
-  {(bigint) 2659 /* 6: TKwabort < TKwabort: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwabort < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwabort < Token: superclass typecheck marker */},
+  {(bigint) 2687 /* 6: TKwabort < TKwabort: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31482,7 +32322,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwabort < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwabort < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31524,7 +32364,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwabort < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31534,9 +32374,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwabort[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwabort___parser_index},
-  {(bigint) 0 /* 72: TKwabort < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwabort < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwabort___init_tk},
-  {(bigint) 3 /* 74: TKwabort < TKwabort: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwabort < TKwabort: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31624,16 +32464,14 @@ val_t NEW_TKwabort_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwassert[75] = {
-  {(bigint) 2643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwassert[73] = {
+  {(bigint) 2671 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwassert" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwassert < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwassert < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwassert < Token: superclass typecheck marker */},
-  {(bigint) 2643 /* 6: TKwassert < TKwassert: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwassert < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwassert < Token: superclass typecheck marker */},
+  {(bigint) 2671 /* 6: TKwassert < TKwassert: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31645,7 +32483,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwassert < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwassert < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31687,7 +32525,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwassert < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31697,9 +32535,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwassert[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwassert___parser_index},
-  {(bigint) 0 /* 72: TKwassert < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwassert < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwassert___init_tk},
-  {(bigint) 3 /* 74: TKwassert < TKwassert: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwassert < TKwassert: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31787,16 +32625,14 @@ val_t NEW_TKwassert_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnew[75] = {
-  {(bigint) 2543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwnew[73] = {
+  {(bigint) 2571 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwnew" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwnew < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwnew < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwnew < Token: superclass typecheck marker */},
-  {(bigint) 2543 /* 6: TKwnew < TKwnew: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwnew < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwnew < Token: superclass typecheck marker */},
+  {(bigint) 2571 /* 6: TKwnew < TKwnew: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31808,7 +32644,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwnew < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwnew < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -31850,7 +32686,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwnew < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -31860,9 +32696,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnew[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwnew___parser_index},
-  {(bigint) 0 /* 72: TKwnew < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwnew < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwnew___init_tk},
-  {(bigint) 3 /* 74: TKwnew < TKwnew: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwnew < TKwnew: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -31950,16 +32786,14 @@ val_t NEW_TKwnew_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwisa[75] = {
-  {(bigint) 2567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwisa[73] = {
+  {(bigint) 2595 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwisa" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwisa < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwisa < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwisa < Token: superclass typecheck marker */},
-  {(bigint) 2567 /* 6: TKwisa < TKwisa: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwisa < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwisa < Token: superclass typecheck marker */},
+  {(bigint) 2595 /* 6: TKwisa < TKwisa: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -31971,7 +32805,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwisa < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwisa < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32013,7 +32847,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwisa < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32023,9 +32857,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisa[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwisa___parser_index},
-  {(bigint) 0 /* 72: TKwisa < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwisa < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwisa___init_tk},
-  {(bigint) 3 /* 74: TKwisa < TKwisa: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwisa < TKwisa: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32113,16 +32947,14 @@ val_t NEW_TKwisa_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwonce[75] = {
-  {(bigint) 2527 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwonce[73] = {
+  {(bigint) 2555 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwonce" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwonce < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwonce < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwonce < Token: superclass typecheck marker */},
-  {(bigint) 2527 /* 6: TKwonce < TKwonce: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwonce < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwonce < Token: superclass typecheck marker */},
+  {(bigint) 2555 /* 6: TKwonce < TKwonce: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32134,7 +32966,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwonce < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwonce < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32176,7 +33008,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwonce < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32186,9 +33018,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwonce[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwonce___parser_index},
-  {(bigint) 0 /* 72: TKwonce < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwonce < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwonce___init_tk},
-  {(bigint) 3 /* 74: TKwonce < TKwonce: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwonce < TKwonce: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32276,16 +33108,14 @@ val_t NEW_TKwonce_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[75] = {
-  {(bigint) 2491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[73] = {
+  {(bigint) 2519 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwsuper" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwsuper < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwsuper < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwsuper < Token: superclass typecheck marker */},
-  {(bigint) 2491 /* 6: TKwsuper < TKwsuper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwsuper < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwsuper < Token: superclass typecheck marker */},
+  {(bigint) 2519 /* 6: TKwsuper < TKwsuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32297,7 +33127,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwsuper < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwsuper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32339,7 +33169,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwsuper < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32349,9 +33179,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwsuper[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwsuper___parser_index},
-  {(bigint) 0 /* 72: TKwsuper < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwsuper < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwsuper___init_tk},
-  {(bigint) 3 /* 74: TKwsuper < TKwsuper: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwsuper < TKwsuper: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32439,16 +33269,14 @@ val_t NEW_TKwsuper_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwself[75] = {
-  {(bigint) 2499 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwself[73] = {
+  {(bigint) 2527 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwself" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwself < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwself < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwself < Token: superclass typecheck marker */},
-  {(bigint) 2499 /* 6: TKwself < TKwself: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwself < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwself < Token: superclass typecheck marker */},
+  {(bigint) 2527 /* 6: TKwself < TKwself: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32460,7 +33288,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwself < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwself < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32502,7 +33330,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwself < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32512,9 +33340,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwself[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwself___parser_index},
-  {(bigint) 0 /* 72: TKwself < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwself < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwself___init_tk},
-  {(bigint) 3 /* 74: TKwself < TKwself: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwself < TKwself: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32602,16 +33430,14 @@ val_t NEW_TKwself_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[75] = {
-  {(bigint) 2483 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[73] = {
+  {(bigint) 2511 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwtrue" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwtrue < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwtrue < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwtrue < Token: superclass typecheck marker */},
-  {(bigint) 2483 /* 6: TKwtrue < TKwtrue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwtrue < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwtrue < Token: superclass typecheck marker */},
+  {(bigint) 2511 /* 6: TKwtrue < TKwtrue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32623,7 +33449,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwtrue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwtrue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32665,7 +33491,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwtrue < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32675,9 +33501,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwtrue[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwtrue___parser_index},
-  {(bigint) 0 /* 72: TKwtrue < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwtrue < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwtrue___init_tk},
-  {(bigint) 3 /* 74: TKwtrue < TKwtrue: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwtrue < TKwtrue: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32765,16 +33591,14 @@ val_t NEW_TKwtrue_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[75] = {
-  {(bigint) 2607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[73] = {
+  {(bigint) 2635 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwfalse" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwfalse < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwfalse < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwfalse < Token: superclass typecheck marker */},
-  {(bigint) 2607 /* 6: TKwfalse < TKwfalse: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwfalse < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwfalse < Token: superclass typecheck marker */},
+  {(bigint) 2635 /* 6: TKwfalse < TKwfalse: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32786,7 +33610,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwfalse < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwfalse < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32828,7 +33652,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwfalse < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -32838,9 +33662,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwfalse[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwfalse___parser_index},
-  {(bigint) 0 /* 72: TKwfalse < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwfalse < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwfalse___init_tk},
-  {(bigint) 3 /* 74: TKwfalse < TKwfalse: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwfalse < TKwfalse: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -32928,16 +33752,14 @@ val_t NEW_TKwfalse_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnull[75] = {
-  {(bigint) 2535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwnull[73] = {
+  {(bigint) 2563 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwnull" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwnull < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwnull < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwnull < Token: superclass typecheck marker */},
-  {(bigint) 2535 /* 6: TKwnull < TKwnull: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwnull < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwnull < Token: superclass typecheck marker */},
+  {(bigint) 2563 /* 6: TKwnull < TKwnull: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -32949,7 +33771,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwnull < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwnull < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -32991,7 +33813,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwnull < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33001,9 +33823,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnull[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwnull___parser_index},
-  {(bigint) 0 /* 72: TKwnull < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwnull < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwnull___init_tk},
-  {(bigint) 3 /* 74: TKwnull < TKwnull: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwnull < TKwnull: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33091,16 +33913,14 @@ val_t NEW_TKwnull_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwas[75] = {
-  {(bigint) 2647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwas[73] = {
+  {(bigint) 2675 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwas" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwas < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwas < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwas < Token: superclass typecheck marker */},
-  {(bigint) 2647 /* 6: TKwas < TKwas: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwas < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwas < Token: superclass typecheck marker */},
+  {(bigint) 2675 /* 6: TKwas < TKwas: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33112,7 +33932,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwas < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwas < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33154,7 +33974,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwas < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33164,9 +33984,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwas[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwas___parser_index},
-  {(bigint) 0 /* 72: TKwas < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwas < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwas___init_tk},
-  {(bigint) 3 /* 74: TKwas < TKwas: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwas < TKwas: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33254,16 +34074,14 @@ val_t NEW_TKwas_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[75] = {
-  {(bigint) 2531 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[73] = {
+  {(bigint) 2559 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwnullable" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwnullable < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwnullable < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwnullable < Token: superclass typecheck marker */},
-  {(bigint) 2531 /* 6: TKwnullable < TKwnullable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwnullable < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwnullable < Token: superclass typecheck marker */},
+  {(bigint) 2559 /* 6: TKwnullable < TKwnullable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33275,7 +34093,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwnullable < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwnullable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33317,7 +34135,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwnullable < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33327,9 +34145,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwnullable[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwnullable___parser_index},
-  {(bigint) 0 /* 72: TKwnullable < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwnullable < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwnullable___init_tk},
-  {(bigint) 3 /* 74: TKwnullable < TKwnullable: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwnullable < TKwnullable: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33417,16 +34235,14 @@ val_t NEW_TKwnullable_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwisset[75] = {
-  {(bigint) 2563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwisset[73] = {
+  {(bigint) 2591 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwisset" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwisset < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwisset < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwisset < Token: superclass typecheck marker */},
-  {(bigint) 2563 /* 6: TKwisset < TKwisset: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwisset < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwisset < Token: superclass typecheck marker */},
+  {(bigint) 2591 /* 6: TKwisset < TKwisset: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33438,7 +34254,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwisset < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwisset < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33480,7 +34296,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwisset < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33490,9 +34306,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwisset[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwisset___parser_index},
-  {(bigint) 0 /* 72: TKwisset < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwisset < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwisset___init_tk},
-  {(bigint) 3 /* 74: TKwisset < TKwisset: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwisset < TKwisset: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33580,16 +34396,14 @@ val_t NEW_TKwisset_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[75] = {
-  {(bigint) 2559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[73] = {
+  {(bigint) 2587 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TKwlabel" /* 2: Class Name */},
   {(bigint) 3 /* 3: TKwlabel < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TKwlabel < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TKwlabel < Token: superclass typecheck marker */},
-  {(bigint) 2559 /* 6: TKwlabel < TKwlabel: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TKwlabel < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TKwlabel < Token: superclass typecheck marker */},
+  {(bigint) 2587 /* 6: TKwlabel < TKwlabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33601,7 +34415,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TKwlabel < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TKwlabel < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33643,7 +34457,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TKwlabel < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33653,9 +34467,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TKwlabel[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TKwlabel___parser_index},
-  {(bigint) 0 /* 72: TKwlabel < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TKwlabel < Token: superclass init_table position */},
   {(bigint) parser___lexer___TKwlabel___init_tk},
-  {(bigint) 3 /* 74: TKwlabel < TKwlabel: superclass init_table position */},
+  {(bigint) 3 /* 72: TKwlabel < TKwlabel: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33743,16 +34557,14 @@ val_t NEW_TKwlabel_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TOpar[75] = {
-  {(bigint) 2427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TOpar[73] = {
+  {(bigint) 2455 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TOpar" /* 2: Class Name */},
   {(bigint) 3 /* 3: TOpar < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TOpar < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TOpar < Token: superclass typecheck marker */},
-  {(bigint) 2427 /* 6: TOpar < TOpar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TOpar < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TOpar < Token: superclass typecheck marker */},
+  {(bigint) 2455 /* 6: TOpar < TOpar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33764,7 +34576,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TOpar < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TOpar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33806,7 +34618,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TOpar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33816,9 +34628,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TOpar[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TOpar___parser_index},
-  {(bigint) 0 /* 72: TOpar < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TOpar < Token: superclass init_table position */},
   {(bigint) parser___lexer___TOpar___init_tk},
-  {(bigint) 3 /* 74: TOpar < TOpar: superclass init_table position */},
+  {(bigint) 3 /* 72: TOpar < TOpar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -33906,16 +34718,14 @@ val_t NEW_TOpar_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TCpar[75] = {
-  {(bigint) 2707 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TCpar[73] = {
+  {(bigint) 2735 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TCpar" /* 2: Class Name */},
   {(bigint) 3 /* 3: TCpar < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TCpar < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TCpar < Token: superclass typecheck marker */},
-  {(bigint) 2707 /* 6: TCpar < TCpar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TCpar < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TCpar < Token: superclass typecheck marker */},
+  {(bigint) 2735 /* 6: TCpar < TCpar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -33927,7 +34737,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TCpar < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TCpar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -33969,7 +34779,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TCpar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -33979,9 +34789,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TCpar[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TCpar___parser_index},
-  {(bigint) 0 /* 72: TCpar < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TCpar < Token: superclass init_table position */},
   {(bigint) parser___lexer___TCpar___init_tk},
-  {(bigint) 3 /* 74: TCpar < TCpar: superclass init_table position */},
+  {(bigint) 3 /* 72: TCpar < TCpar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34069,16 +34879,14 @@ val_t NEW_TCpar_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TObra[75] = {
-  {(bigint) 2431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TObra[73] = {
+  {(bigint) 2459 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TObra" /* 2: Class Name */},
   {(bigint) 3 /* 3: TObra < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TObra < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TObra < Token: superclass typecheck marker */},
-  {(bigint) 2431 /* 6: TObra < TObra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TObra < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TObra < Token: superclass typecheck marker */},
+  {(bigint) 2459 /* 6: TObra < TObra: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34090,7 +34898,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TObra < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TObra < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34132,7 +34940,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TObra < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34142,9 +34950,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TObra[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TObra___parser_index},
-  {(bigint) 0 /* 72: TObra < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TObra < Token: superclass init_table position */},
   {(bigint) parser___lexer___TObra___init_tk},
-  {(bigint) 3 /* 74: TObra < TObra: superclass init_table position */},
+  {(bigint) 3 /* 72: TObra < TObra: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34232,16 +35040,14 @@ val_t NEW_TObra_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TCbra[75] = {
-  {(bigint) 2731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TCbra[73] = {
+  {(bigint) 2759 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TCbra" /* 2: Class Name */},
   {(bigint) 3 /* 3: TCbra < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TCbra < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TCbra < Token: superclass typecheck marker */},
-  {(bigint) 2731 /* 6: TCbra < TCbra: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TCbra < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TCbra < Token: superclass typecheck marker */},
+  {(bigint) 2759 /* 6: TCbra < TCbra: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34253,7 +35059,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TCbra < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TCbra < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34295,7 +35101,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TCbra < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34305,9 +35111,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TCbra[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TCbra___parser_index},
-  {(bigint) 0 /* 72: TCbra < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TCbra < Token: superclass init_table position */},
   {(bigint) parser___lexer___TCbra___init_tk},
-  {(bigint) 3 /* 74: TCbra < TCbra: superclass init_table position */},
+  {(bigint) 3 /* 72: TCbra < TCbra: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34395,16 +35201,14 @@ val_t NEW_TCbra_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TComma[75] = {
-  {(bigint) 2715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TComma[73] = {
+  {(bigint) 2743 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TComma" /* 2: Class Name */},
   {(bigint) 3 /* 3: TComma < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TComma < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TComma < Token: superclass typecheck marker */},
-  {(bigint) 2715 /* 6: TComma < TComma: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TComma < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TComma < Token: superclass typecheck marker */},
+  {(bigint) 2743 /* 6: TComma < TComma: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34416,7 +35220,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TComma < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TComma < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34458,7 +35262,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TComma < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34468,9 +35272,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TComma[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TComma___parser_index},
-  {(bigint) 0 /* 72: TComma < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TComma < Token: superclass init_table position */},
   {(bigint) parser___lexer___TComma___init_tk},
-  {(bigint) 3 /* 74: TComma < TComma: superclass init_table position */},
+  {(bigint) 3 /* 72: TComma < TComma: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34558,16 +35362,14 @@ val_t NEW_TComma_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TColumn[75] = {
-  {(bigint) 2719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TColumn[73] = {
+  {(bigint) 2747 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TColumn" /* 2: Class Name */},
   {(bigint) 3 /* 3: TColumn < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TColumn < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TColumn < Token: superclass typecheck marker */},
-  {(bigint) 2719 /* 6: TColumn < TColumn: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TColumn < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TColumn < Token: superclass typecheck marker */},
+  {(bigint) 2747 /* 6: TColumn < TColumn: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34579,7 +35381,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TColumn < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TColumn < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34621,7 +35423,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TColumn < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34631,9 +35433,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TColumn[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TColumn___parser_index},
-  {(bigint) 0 /* 72: TColumn < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TColumn < Token: superclass init_table position */},
   {(bigint) parser___lexer___TColumn___init_tk},
-  {(bigint) 3 /* 74: TColumn < TColumn: superclass init_table position */},
+  {(bigint) 3 /* 72: TColumn < TColumn: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34721,16 +35523,14 @@ val_t NEW_TColumn_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TQuad[75] = {
-  {(bigint) 2411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TQuad[73] = {
+  {(bigint) 2439 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TQuad" /* 2: Class Name */},
   {(bigint) 3 /* 3: TQuad < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TQuad < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TQuad < Token: superclass typecheck marker */},
-  {(bigint) 2411 /* 6: TQuad < TQuad: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TQuad < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TQuad < Token: superclass typecheck marker */},
+  {(bigint) 2439 /* 6: TQuad < TQuad: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34742,7 +35542,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TQuad < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TQuad < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34784,7 +35584,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TQuad < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34794,9 +35594,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TQuad[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TQuad___parser_index},
-  {(bigint) 0 /* 72: TQuad < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TQuad < Token: superclass init_table position */},
   {(bigint) parser___lexer___TQuad___init_tk},
-  {(bigint) 3 /* 74: TQuad < TQuad: superclass init_table position */},
+  {(bigint) 3 /* 72: TQuad < TQuad: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -34884,16 +35684,14 @@ val_t NEW_TQuad_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TAssign[75] = {
-  {(bigint) 2743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TAssign[73] = {
+  {(bigint) 2771 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TAssign" /* 2: Class Name */},
   {(bigint) 3 /* 3: TAssign < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TAssign < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TAssign < Token: superclass typecheck marker */},
-  {(bigint) 2743 /* 6: TAssign < TAssign: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TAssign < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TAssign < Token: superclass typecheck marker */},
+  {(bigint) 2771 /* 6: TAssign < TAssign: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -34905,7 +35703,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TAssign < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TAssign < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -34947,7 +35745,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TAssign < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -34957,9 +35755,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TAssign[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TAssign___parser_index},
-  {(bigint) 0 /* 72: TAssign < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TAssign < Token: superclass init_table position */},
   {(bigint) parser___lexer___TAssign___init_tk},
-  {(bigint) 3 /* 74: TAssign < TAssign: superclass init_table position */},
+  {(bigint) 3 /* 72: TAssign < TAssign: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35047,16 +35845,14 @@ val_t NEW_TAssign_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPluseq[75] = {
-  {(bigint) 2415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TPluseq[73] = {
+  {(bigint) 2443 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TPluseq" /* 2: Class Name */},
   {(bigint) 3 /* 3: TPluseq < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TPluseq < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TPluseq < Token: superclass typecheck marker */},
-  {(bigint) 2415 /* 6: TPluseq < TPluseq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TPluseq < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TPluseq < Token: superclass typecheck marker */},
+  {(bigint) 2443 /* 6: TPluseq < TPluseq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35068,7 +35864,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TPluseq < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TPluseq < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35110,7 +35906,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TPluseq < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35120,9 +35916,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TPluseq[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TPluseq___parser_index},
-  {(bigint) 0 /* 72: TPluseq < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TPluseq < Token: superclass init_table position */},
   {(bigint) parser___lexer___TPluseq___init_tk},
-  {(bigint) 3 /* 74: TPluseq < TPluseq: superclass init_table position */},
+  {(bigint) 3 /* 72: TPluseq < TPluseq: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35210,16 +36006,14 @@ val_t NEW_TPluseq_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[75] = {
-  {(bigint) 2443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[73] = {
+  {(bigint) 2471 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TMinuseq" /* 2: Class Name */},
   {(bigint) 3 /* 3: TMinuseq < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TMinuseq < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TMinuseq < Token: superclass typecheck marker */},
-  {(bigint) 2443 /* 6: TMinuseq < TMinuseq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TMinuseq < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TMinuseq < Token: superclass typecheck marker */},
+  {(bigint) 2471 /* 6: TMinuseq < TMinuseq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35231,7 +36025,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TMinuseq < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TMinuseq < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35273,7 +36067,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TMinuseq < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35283,9 +36077,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinuseq[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TMinuseq___parser_index},
-  {(bigint) 0 /* 72: TMinuseq < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TMinuseq < Token: superclass init_table position */},
   {(bigint) parser___lexer___TMinuseq___init_tk},
-  {(bigint) 3 /* 74: TMinuseq < TMinuseq: superclass init_table position */},
+  {(bigint) 3 /* 72: TMinuseq < TMinuseq: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35373,16 +36167,14 @@ val_t NEW_TMinuseq_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[75] = {
-  {(bigint) 2695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[73] = {
+  {(bigint) 2723 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TDotdotdot" /* 2: Class Name */},
   {(bigint) 3 /* 3: TDotdotdot < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TDotdotdot < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TDotdotdot < Token: superclass typecheck marker */},
-  {(bigint) 2695 /* 6: TDotdotdot < TDotdotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TDotdotdot < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TDotdotdot < Token: superclass typecheck marker */},
+  {(bigint) 2723 /* 6: TDotdotdot < TDotdotdot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35394,7 +36186,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TDotdotdot < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TDotdotdot < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35436,7 +36228,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TDotdotdot < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35446,9 +36238,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdotdot[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TDotdotdot___parser_index},
-  {(bigint) 0 /* 72: TDotdotdot < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TDotdotdot < Token: superclass init_table position */},
   {(bigint) parser___lexer___TDotdotdot___init_tk},
-  {(bigint) 3 /* 74: TDotdotdot < TDotdotdot: superclass init_table position */},
+  {(bigint) 3 /* 72: TDotdotdot < TDotdotdot: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35536,16 +36328,14 @@ val_t NEW_TDotdotdot_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TDotdot[75] = {
-  {(bigint) 2699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TDotdot[73] = {
+  {(bigint) 2727 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TDotdot" /* 2: Class Name */},
   {(bigint) 3 /* 3: TDotdot < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TDotdot < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TDotdot < Token: superclass typecheck marker */},
-  {(bigint) 2699 /* 6: TDotdot < TDotdot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TDotdot < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TDotdot < Token: superclass typecheck marker */},
+  {(bigint) 2727 /* 6: TDotdot < TDotdot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35557,7 +36347,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TDotdot < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TDotdot < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35599,7 +36389,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TDotdot < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35609,9 +36399,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDotdot[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TDotdot___parser_index},
-  {(bigint) 0 /* 72: TDotdot < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TDotdot < Token: superclass init_table position */},
   {(bigint) parser___lexer___TDotdot___init_tk},
-  {(bigint) 3 /* 74: TDotdot < TDotdot: superclass init_table position */},
+  {(bigint) 3 /* 72: TDotdot < TDotdot: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35699,16 +36489,14 @@ val_t NEW_TDotdot_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TDot[75] = {
-  {(bigint) 2703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TDot[73] = {
+  {(bigint) 2731 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TDot" /* 2: Class Name */},
   {(bigint) 3 /* 3: TDot < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TDot < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TDot < Token: superclass typecheck marker */},
-  {(bigint) 2703 /* 6: TDot < TDot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TDot < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TDot < Token: superclass typecheck marker */},
+  {(bigint) 2731 /* 6: TDot < TDot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35720,7 +36508,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TDot < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TDot < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35762,7 +36550,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TDot < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35772,9 +36560,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TDot[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TDot___parser_index},
-  {(bigint) 0 /* 72: TDot < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TDot < Token: superclass init_table position */},
   {(bigint) parser___lexer___TDot___init_tk},
-  {(bigint) 3 /* 74: TDot < TDot: superclass init_table position */},
+  {(bigint) 3 /* 72: TDot < TDot: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -35862,16 +36650,14 @@ val_t NEW_TDot_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPlus[75] = {
-  {(bigint) 2419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TPlus[73] = {
+  {(bigint) 2447 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TPlus" /* 2: Class Name */},
   {(bigint) 3 /* 3: TPlus < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TPlus < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TPlus < Token: superclass typecheck marker */},
-  {(bigint) 2419 /* 6: TPlus < TPlus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TPlus < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TPlus < Token: superclass typecheck marker */},
+  {(bigint) 2447 /* 6: TPlus < TPlus: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -35883,7 +36669,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TPlus < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TPlus < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -35925,7 +36711,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TPlus < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -35935,9 +36721,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TPlus[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TPlus___parser_index},
-  {(bigint) 0 /* 72: TPlus < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TPlus < Token: superclass init_table position */},
   {(bigint) parser___lexer___TPlus___init_tk},
-  {(bigint) 3 /* 74: TPlus < TPlus: superclass init_table position */},
+  {(bigint) 3 /* 72: TPlus < TPlus: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36025,16 +36811,14 @@ val_t NEW_TPlus_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMinus[75] = {
-  {(bigint) 2447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TMinus[73] = {
+  {(bigint) 2475 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TMinus" /* 2: Class Name */},
   {(bigint) 3 /* 3: TMinus < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TMinus < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TMinus < Token: superclass typecheck marker */},
-  {(bigint) 2447 /* 6: TMinus < TMinus: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TMinus < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TMinus < Token: superclass typecheck marker */},
+  {(bigint) 2475 /* 6: TMinus < TMinus: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36046,7 +36830,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TMinus < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TMinus < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36088,7 +36872,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TMinus < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36098,9 +36882,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMinus[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TMinus___parser_index},
-  {(bigint) 0 /* 72: TMinus < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TMinus < Token: superclass init_table position */},
   {(bigint) parser___lexer___TMinus___init_tk},
-  {(bigint) 3 /* 74: TMinus < TMinus: superclass init_table position */},
+  {(bigint) 3 /* 72: TMinus < TMinus: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36188,16 +36972,14 @@ val_t NEW_TMinus_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStar[75] = {
-  {(bigint) 2403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TStar[73] = {
+  {(bigint) 2431 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TStar" /* 2: Class Name */},
   {(bigint) 3 /* 3: TStar < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TStar < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TStar < Token: superclass typecheck marker */},
-  {(bigint) 2403 /* 6: TStar < TStar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TStar < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TStar < Token: superclass typecheck marker */},
+  {(bigint) 2431 /* 6: TStar < TStar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36209,7 +36991,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TStar < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TStar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36251,7 +37033,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TStar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36261,9 +37043,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStar[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TStar___parser_index},
-  {(bigint) 0 /* 72: TStar < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TStar < Token: superclass init_table position */},
   {(bigint) parser___lexer___TStar___init_tk},
-  {(bigint) 3 /* 74: TStar < TStar: superclass init_table position */},
+  {(bigint) 3 /* 72: TStar < TStar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36351,16 +37133,14 @@ val_t NEW_TStar_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TSlash[75] = {
-  {(bigint) 2407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TSlash[73] = {
+  {(bigint) 2435 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TSlash" /* 2: Class Name */},
   {(bigint) 3 /* 3: TSlash < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TSlash < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TSlash < Token: superclass typecheck marker */},
-  {(bigint) 2407 /* 6: TSlash < TSlash: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TSlash < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TSlash < Token: superclass typecheck marker */},
+  {(bigint) 2435 /* 6: TSlash < TSlash: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36372,7 +37152,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TSlash < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TSlash < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36414,7 +37194,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TSlash < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36424,9 +37204,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TSlash[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TSlash___parser_index},
-  {(bigint) 0 /* 72: TSlash < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TSlash < Token: superclass init_table position */},
   {(bigint) parser___lexer___TSlash___init_tk},
-  {(bigint) 3 /* 74: TSlash < TSlash: superclass init_table position */},
+  {(bigint) 3 /* 72: TSlash < TSlash: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36514,16 +37294,14 @@ val_t NEW_TSlash_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TPercent[75] = {
-  {(bigint) 2423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TPercent[73] = {
+  {(bigint) 2451 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TPercent" /* 2: Class Name */},
   {(bigint) 3 /* 3: TPercent < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TPercent < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TPercent < Token: superclass typecheck marker */},
-  {(bigint) 2423 /* 6: TPercent < TPercent: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TPercent < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TPercent < Token: superclass typecheck marker */},
+  {(bigint) 2451 /* 6: TPercent < TPercent: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36535,7 +37313,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TPercent < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TPercent < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36577,7 +37355,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TPercent < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36587,9 +37365,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TPercent[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TPercent___parser_index},
-  {(bigint) 0 /* 72: TPercent < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TPercent < Token: superclass init_table position */},
   {(bigint) parser___lexer___TPercent___init_tk},
-  {(bigint) 3 /* 74: TPercent < TPercent: superclass init_table position */},
+  {(bigint) 3 /* 72: TPercent < TPercent: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36677,16 +37455,14 @@ val_t NEW_TPercent_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEq[75] = {
-  {(bigint) 2683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TEq[73] = {
+  {(bigint) 2711 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TEq" /* 2: Class Name */},
   {(bigint) 3 /* 3: TEq < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TEq < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TEq < Token: superclass typecheck marker */},
-  {(bigint) 2683 /* 6: TEq < TEq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TEq < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TEq < Token: superclass typecheck marker */},
+  {(bigint) 2711 /* 6: TEq < TEq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36698,7 +37474,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TEq < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TEq < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36740,7 +37516,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TEq < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36750,9 +37526,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEq[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TEq___parser_index},
-  {(bigint) 0 /* 72: TEq < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TEq < Token: superclass init_table position */},
   {(bigint) parser___lexer___TEq___init_tk},
-  {(bigint) 3 /* 74: TEq < TEq: superclass init_table position */},
+  {(bigint) 3 /* 72: TEq < TEq: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -36840,16 +37616,14 @@ val_t NEW_TEq_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TNe[75] = {
-  {(bigint) 2439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TNe[73] = {
+  {(bigint) 2467 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TNe" /* 2: Class Name */},
   {(bigint) 3 /* 3: TNe < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TNe < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TNe < Token: superclass typecheck marker */},
-  {(bigint) 2439 /* 6: TNe < TNe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TNe < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TNe < Token: superclass typecheck marker */},
+  {(bigint) 2467 /* 6: TNe < TNe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -36861,7 +37635,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TNe < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TNe < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -36903,7 +37677,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TNe < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -36913,9 +37687,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TNe[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TNe___parser_index},
-  {(bigint) 0 /* 72: TNe < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TNe < Token: superclass init_table position */},
   {(bigint) parser___lexer___TNe___init_tk},
-  {(bigint) 3 /* 74: TNe < TNe: superclass init_table position */},
+  {(bigint) 3 /* 72: TNe < TNe: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37003,16 +37777,14 @@ val_t NEW_TNe_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLt[75] = {
-  {(bigint) 2455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TLt[73] = {
+  {(bigint) 2483 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TLt" /* 2: Class Name */},
   {(bigint) 3 /* 3: TLt < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TLt < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TLt < Token: superclass typecheck marker */},
-  {(bigint) 2455 /* 6: TLt < TLt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TLt < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TLt < Token: superclass typecheck marker */},
+  {(bigint) 2483 /* 6: TLt < TLt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37024,7 +37796,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TLt < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TLt < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37066,7 +37838,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TLt < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37076,9 +37848,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLt[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TLt___parser_index},
-  {(bigint) 0 /* 72: TLt < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TLt < Token: superclass init_table position */},
   {(bigint) parser___lexer___TLt___init_tk},
-  {(bigint) 3 /* 74: TLt < TLt: superclass init_table position */},
+  {(bigint) 3 /* 72: TLt < TLt: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37166,16 +37938,14 @@ val_t NEW_TLt_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLe[75] = {
-  {(bigint) 2463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TLe[73] = {
+  {(bigint) 2491 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TLe" /* 2: Class Name */},
   {(bigint) 3 /* 3: TLe < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TLe < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TLe < Token: superclass typecheck marker */},
-  {(bigint) 2463 /* 6: TLe < TLe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TLe < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TLe < Token: superclass typecheck marker */},
+  {(bigint) 2491 /* 6: TLe < TLe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37187,7 +37957,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TLe < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TLe < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37229,7 +37999,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TLe < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37239,9 +38009,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLe[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TLe___parser_index},
-  {(bigint) 0 /* 72: TLe < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TLe < Token: superclass init_table position */},
   {(bigint) parser___lexer___TLe___init_tk},
-  {(bigint) 3 /* 74: TLe < TLe: superclass init_table position */},
+  {(bigint) 3 /* 72: TLe < TLe: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37329,16 +38099,14 @@ val_t NEW_TLe_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TLl[75] = {
-  {(bigint) 2459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TLl[73] = {
+  {(bigint) 2487 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TLl" /* 2: Class Name */},
   {(bigint) 3 /* 3: TLl < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TLl < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TLl < Token: superclass typecheck marker */},
-  {(bigint) 2459 /* 6: TLl < TLl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TLl < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TLl < Token: superclass typecheck marker */},
+  {(bigint) 2487 /* 6: TLl < TLl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37350,7 +38118,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TLl < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TLl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37392,7 +38160,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TLl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37402,9 +38170,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TLl[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TLl___parser_index},
-  {(bigint) 0 /* 72: TLl < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TLl < Token: superclass init_table position */},
   {(bigint) parser___lexer___TLl___init_tk},
-  {(bigint) 3 /* 74: TLl < TLl: superclass init_table position */},
+  {(bigint) 3 /* 72: TLl < TLl: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37492,16 +38260,14 @@ val_t NEW_TLl_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGt[75] = {
-  {(bigint) 2667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TGt[73] = {
+  {(bigint) 2695 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TGt" /* 2: Class Name */},
   {(bigint) 3 /* 3: TGt < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TGt < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TGt < Token: superclass typecheck marker */},
-  {(bigint) 2667 /* 6: TGt < TGt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TGt < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TGt < Token: superclass typecheck marker */},
+  {(bigint) 2695 /* 6: TGt < TGt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37513,7 +38279,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TGt < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TGt < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37555,7 +38321,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TGt < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37565,9 +38331,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TGt[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TGt___parser_index},
-  {(bigint) 0 /* 72: TGt < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TGt < Token: superclass init_table position */},
   {(bigint) parser___lexer___TGt___init_tk},
-  {(bigint) 3 /* 74: TGt < TGt: superclass init_table position */},
+  {(bigint) 3 /* 72: TGt < TGt: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37655,16 +38421,14 @@ val_t NEW_TGt_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGe[75] = {
-  {(bigint) 2675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TGe[73] = {
+  {(bigint) 2703 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TGe" /* 2: Class Name */},
   {(bigint) 3 /* 3: TGe < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TGe < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TGe < Token: superclass typecheck marker */},
-  {(bigint) 2675 /* 6: TGe < TGe: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TGe < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TGe < Token: superclass typecheck marker */},
+  {(bigint) 2703 /* 6: TGe < TGe: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37676,7 +38440,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TGe < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TGe < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37718,7 +38482,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TGe < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37728,9 +38492,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TGe[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TGe___parser_index},
-  {(bigint) 0 /* 72: TGe < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TGe < Token: superclass init_table position */},
   {(bigint) parser___lexer___TGe___init_tk},
-  {(bigint) 3 /* 74: TGe < TGe: superclass init_table position */},
+  {(bigint) 3 /* 72: TGe < TGe: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37818,16 +38582,14 @@ val_t NEW_TGe_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TGg[75] = {
-  {(bigint) 2671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TGg[73] = {
+  {(bigint) 2699 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TGg" /* 2: Class Name */},
   {(bigint) 3 /* 3: TGg < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TGg < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TGg < Token: superclass typecheck marker */},
-  {(bigint) 2671 /* 6: TGg < TGg: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TGg < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TGg < Token: superclass typecheck marker */},
+  {(bigint) 2699 /* 6: TGg < TGg: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -37839,7 +38601,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TGg < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TGg < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -37881,7 +38643,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TGg < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -37891,9 +38653,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TGg[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TGg___parser_index},
-  {(bigint) 0 /* 72: TGg < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TGg < Token: superclass init_table position */},
   {(bigint) parser___lexer___TGg___init_tk},
-  {(bigint) 3 /* 74: TGg < TGg: superclass init_table position */},
+  {(bigint) 3 /* 72: TGg < TGg: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -37981,16 +38743,14 @@ val_t NEW_TGg_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStarship[75] = {
-  {(bigint) 2399 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TStarship[73] = {
+  {(bigint) 2427 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TStarship" /* 2: Class Name */},
   {(bigint) 3 /* 3: TStarship < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TStarship < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TStarship < Token: superclass typecheck marker */},
-  {(bigint) 2399 /* 6: TStarship < TStarship: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TStarship < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TStarship < Token: superclass typecheck marker */},
+  {(bigint) 2427 /* 6: TStarship < TStarship: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38002,7 +38762,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TStarship < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TStarship < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38044,7 +38804,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TStarship < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38054,9 +38814,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStarship[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TStarship___parser_index},
-  {(bigint) 0 /* 72: TStarship < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TStarship < Token: superclass init_table position */},
   {(bigint) parser___lexer___TStarship___init_tk},
-  {(bigint) 3 /* 74: TStarship < TStarship: superclass init_table position */},
+  {(bigint) 3 /* 72: TStarship < TStarship: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38144,16 +38904,14 @@ val_t NEW_TStarship_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TBang[75] = {
-  {(bigint) 2735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TBang[73] = {
+  {(bigint) 2763 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TBang" /* 2: Class Name */},
   {(bigint) 3 /* 3: TBang < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TBang < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TBang < Token: superclass typecheck marker */},
-  {(bigint) 2735 /* 6: TBang < TBang: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TBang < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TBang < Token: superclass typecheck marker */},
+  {(bigint) 2763 /* 6: TBang < TBang: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38165,7 +38923,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TBang < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TBang < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38207,7 +38965,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TBang < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38217,9 +38975,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TBang[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TBang___parser_index},
-  {(bigint) 0 /* 72: TBang < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TBang < Token: superclass init_table position */},
   {(bigint) parser___lexer___TBang___init_tk},
-  {(bigint) 3 /* 74: TBang < TBang: superclass init_table position */},
+  {(bigint) 3 /* 72: TBang < TBang: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38307,16 +39065,14 @@ val_t NEW_TBang_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TClassid[75] = {
-  {(bigint) 2723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TClassid[73] = {
+  {(bigint) 2751 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TClassid" /* 2: Class Name */},
   {(bigint) 3 /* 3: TClassid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TClassid < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TClassid < Token: superclass typecheck marker */},
-  {(bigint) 2723 /* 6: TClassid < TClassid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TClassid < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TClassid < Token: superclass typecheck marker */},
+  {(bigint) 2751 /* 6: TClassid < TClassid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38328,7 +39084,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TClassid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TClassid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38370,7 +39126,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TClassid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38380,9 +39136,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TClassid[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TClassid___parser_index},
-  {(bigint) 0 /* 72: TClassid < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TClassid < Token: superclass init_table position */},
   {(bigint) parser___lexer___TClassid___init_tk},
-  {(bigint) 3 /* 74: TClassid < TClassid: superclass init_table position */},
+  {(bigint) 3 /* 72: TClassid < TClassid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38472,16 +39228,14 @@ val_t NEW_TClassid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TId[75] = {
-  {(bigint) 2663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TId[73] = {
+  {(bigint) 2691 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TId < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TId < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TId < Token: superclass typecheck marker */},
-  {(bigint) 2663 /* 6: TId < TId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TId < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TId < Token: superclass typecheck marker */},
+  {(bigint) 2691 /* 6: TId < TId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38493,7 +39247,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38535,7 +39289,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TId < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38545,9 +39299,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TId[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TId___parser_index},
-  {(bigint) 0 /* 72: TId < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TId < Token: superclass init_table position */},
   {(bigint) parser___lexer___TId___init_tk},
-  {(bigint) 3 /* 74: TId < TId: superclass init_table position */},
+  {(bigint) 3 /* 72: TId < TId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38637,16 +39391,14 @@ val_t NEW_TId_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TAttrid[75] = {
-  {(bigint) 2739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TAttrid[73] = {
+  {(bigint) 2767 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TAttrid" /* 2: Class Name */},
   {(bigint) 3 /* 3: TAttrid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TAttrid < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TAttrid < Token: superclass typecheck marker */},
-  {(bigint) 2739 /* 6: TAttrid < TAttrid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TAttrid < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TAttrid < Token: superclass typecheck marker */},
+  {(bigint) 2767 /* 6: TAttrid < TAttrid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38658,7 +39410,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TAttrid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TAttrid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38700,7 +39452,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TAttrid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38710,9 +39462,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TAttrid[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TAttrid___parser_index},
-  {(bigint) 0 /* 72: TAttrid < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TAttrid < Token: superclass init_table position */},
   {(bigint) parser___lexer___TAttrid___init_tk},
-  {(bigint) 3 /* 74: TAttrid < TAttrid: superclass init_table position */},
+  {(bigint) 3 /* 72: TAttrid < TAttrid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38802,16 +39554,14 @@ val_t NEW_TAttrid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TNumber[75] = {
-  {(bigint) 2435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TNumber[73] = {
+  {(bigint) 2463 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TNumber" /* 2: Class Name */},
   {(bigint) 3 /* 3: TNumber < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TNumber < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TNumber < Token: superclass typecheck marker */},
-  {(bigint) 2435 /* 6: TNumber < TNumber: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TNumber < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TNumber < Token: superclass typecheck marker */},
+  {(bigint) 2463 /* 6: TNumber < TNumber: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38823,7 +39573,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TNumber < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TNumber < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -38865,7 +39615,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TNumber < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -38875,9 +39625,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TNumber[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TNumber___parser_index},
-  {(bigint) 0 /* 72: TNumber < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TNumber < Token: superclass init_table position */},
   {(bigint) parser___lexer___TNumber___init_tk},
-  {(bigint) 3 /* 74: TNumber < TNumber: superclass init_table position */},
+  {(bigint) 3 /* 72: TNumber < TNumber: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -38967,16 +39717,14 @@ val_t NEW_TNumber_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TFloat[75] = {
-  {(bigint) 2679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TFloat[73] = {
+  {(bigint) 2707 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TFloat" /* 2: Class Name */},
   {(bigint) 3 /* 3: TFloat < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TFloat < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TFloat < Token: superclass typecheck marker */},
-  {(bigint) 2679 /* 6: TFloat < TFloat: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TFloat < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TFloat < Token: superclass typecheck marker */},
+  {(bigint) 2707 /* 6: TFloat < TFloat: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -38988,7 +39736,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TFloat < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TFloat < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39030,7 +39778,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TFloat < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39040,9 +39788,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TFloat[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TFloat___parser_index},
-  {(bigint) 0 /* 72: TFloat < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TFloat < Token: superclass init_table position */},
   {(bigint) parser___lexer___TFloat___init_tk},
-  {(bigint) 3 /* 74: TFloat < TFloat: superclass init_table position */},
+  {(bigint) 3 /* 72: TFloat < TFloat: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39132,16 +39880,14 @@ val_t NEW_TFloat_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TChar[75] = {
-  {(bigint) 2727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TChar[73] = {
+  {(bigint) 2755 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TChar" /* 2: Class Name */},
   {(bigint) 3 /* 3: TChar < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TChar < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TChar < Token: superclass typecheck marker */},
-  {(bigint) 2727 /* 6: TChar < TChar: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TChar < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TChar < Token: superclass typecheck marker */},
+  {(bigint) 2755 /* 6: TChar < TChar: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39153,7 +39899,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TChar < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TChar < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39195,7 +39941,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TChar < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39205,9 +39951,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TChar[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TChar___parser_index},
-  {(bigint) 0 /* 72: TChar < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TChar < Token: superclass init_table position */},
   {(bigint) parser___lexer___TChar___init_tk},
-  {(bigint) 3 /* 74: TChar < TChar: superclass init_table position */},
+  {(bigint) 3 /* 72: TChar < TChar: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39297,16 +40043,14 @@ val_t NEW_TChar_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TString[75] = {
-  {(bigint) 2391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TString[73] = {
+  {(bigint) 2419 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TString" /* 2: Class Name */},
   {(bigint) 3 /* 3: TString < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TString < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TString < Token: superclass typecheck marker */},
-  {(bigint) 2391 /* 6: TString < TString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TString < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TString < Token: superclass typecheck marker */},
+  {(bigint) 2419 /* 6: TString < TString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39318,7 +40062,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TString < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39360,7 +40104,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39370,9 +40114,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TString[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TString___parser_index},
-  {(bigint) 0 /* 72: TString < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TString < Token: superclass init_table position */},
   {(bigint) parser___lexer___TString___init_tk},
-  {(bigint) 3 /* 74: TString < TString: superclass init_table position */},
+  {(bigint) 3 /* 72: TString < TString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39462,16 +40206,14 @@ val_t NEW_TString_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TStartString[75] = {
-  {(bigint) 2395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TStartString[73] = {
+  {(bigint) 2423 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TStartString" /* 2: Class Name */},
   {(bigint) 3 /* 3: TStartString < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TStartString < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TStartString < Token: superclass typecheck marker */},
-  {(bigint) 2395 /* 6: TStartString < TStartString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TStartString < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TStartString < Token: superclass typecheck marker */},
+  {(bigint) 2423 /* 6: TStartString < TStartString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39483,7 +40225,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TStartString < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TStartString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39525,7 +40267,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TStartString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39535,9 +40277,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TStartString[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TStartString___parser_index},
-  {(bigint) 0 /* 72: TStartString < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TStartString < Token: superclass init_table position */},
   {(bigint) parser___lexer___TStartString___init_tk},
-  {(bigint) 3 /* 74: TStartString < TStartString: superclass init_table position */},
+  {(bigint) 3 /* 72: TStartString < TStartString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39627,16 +40369,14 @@ val_t NEW_TStartString_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TMidString[75] = {
-  {(bigint) 2451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TMidString[73] = {
+  {(bigint) 2479 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TMidString" /* 2: Class Name */},
   {(bigint) 3 /* 3: TMidString < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TMidString < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TMidString < Token: superclass typecheck marker */},
-  {(bigint) 2451 /* 6: TMidString < TMidString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TMidString < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TMidString < Token: superclass typecheck marker */},
+  {(bigint) 2479 /* 6: TMidString < TMidString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39648,7 +40388,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TMidString < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TMidString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39690,7 +40430,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TMidString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39700,9 +40440,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TMidString[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TMidString___parser_index},
-  {(bigint) 0 /* 72: TMidString < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TMidString < Token: superclass init_table position */},
   {(bigint) parser___lexer___TMidString___init_tk},
-  {(bigint) 3 /* 74: TMidString < TMidString: superclass init_table position */},
+  {(bigint) 3 /* 72: TMidString < TMidString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39792,16 +40532,14 @@ val_t NEW_TMidString_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___TEndString[75] = {
-  {(bigint) 2691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___TEndString[73] = {
+  {(bigint) 2719 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TEndString" /* 2: Class Name */},
   {(bigint) 3 /* 3: TEndString < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: TEndString < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: TEndString < Token: superclass typecheck marker */},
-  {(bigint) 2691 /* 6: TEndString < TEndString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: TEndString < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: TEndString < Token: superclass typecheck marker */},
+  {(bigint) 2719 /* 6: TEndString < TEndString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39813,7 +40551,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[75] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TEndString < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TEndString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -39855,7 +40593,7 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[75] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: TEndString < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -39865,9 +40603,9 @@ const classtable_elt_t VFT_parser___parser_nodes___TEndString[75] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___TEndString___parser_index},
-  {(bigint) 0 /* 72: TEndString < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: TEndString < Token: superclass init_table position */},
   {(bigint) parser___lexer___TEndString___init_tk},
-  {(bigint) 3 /* 74: TEndString < TEndString: superclass init_table position */},
+  {(bigint) 3 /* 72: TEndString < TEndString: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -39957,16 +40695,14 @@ val_t NEW_TEndString_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___EOF[76] = {
-  {(bigint) 2959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___EOF[74] = {
+  {(bigint) 2987 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "EOF" /* 2: Class Name */},
   {(bigint) 3 /* 3: EOF < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: EOF < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: EOF < Token: superclass typecheck marker */},
-  {(bigint) 2959 /* 6: EOF < EOF: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: EOF < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: EOF < Token: superclass typecheck marker */},
+  {(bigint) 2987 /* 6: EOF < EOF: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -39978,7 +40714,7 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: EOF < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: EOF < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40020,7 +40756,7 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[76] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: EOF < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -40030,9 +40766,9 @@ const classtable_elt_t VFT_parser___parser_nodes___EOF[76] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___EOF___parser_index},
-  {(bigint) 0 /* 72: EOF < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: EOF < Token: superclass init_table position */},
   {(bigint) parser___lexer___EOF___init},
-  {(bigint) 3 /* 74: EOF < EOF: superclass init_table position */},
+  {(bigint) 3 /* 72: EOF < EOF: superclass init_table position */},
   {(bigint) parser___parser_nodes___EOF___noinit},
 };
 /* 0: Pointer to the classtable */
@@ -40120,17 +40856,15 @@ val_t NEW_EOF_parser___parser_nodes___EOF___noinit(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AError[80] = {
-  {(bigint) 3403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AError[78] = {
+  {(bigint) 3443 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AError" /* 2: Class Name */},
   {(bigint) 3 /* 3: AError < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AError < ANode: superclass typecheck marker */},
-  {(bigint) 323 /* 5: AError < Token: superclass typecheck marker */},
-  {(bigint) 2959 /* 6: AError < EOF: superclass typecheck marker */},
-  {(bigint) 3403 /* 7: AError < AError: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AError < ANode: superclass typecheck marker */},
+  {(bigint) 331 /* 5: AError < Token: superclass typecheck marker */},
+  {(bigint) 2987 /* 6: AError < EOF: superclass typecheck marker */},
+  {(bigint) 3443 /* 7: AError < AError: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40141,7 +40875,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AError < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AError < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40183,7 +40917,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[80] = {
   {(bigint) parser___parser_prod___Token___replace_child},
   {(bigint) parser___parser_prod___ANode___replace_with},
   {(bigint) parser___parser_prod___Token___visit_all},
-  {(bigint) 1 /* 62: AError < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -40193,13 +40927,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AError[80] = {
   {(bigint) syntax___syntax_base___Token___to_symbol},
   {(bigint) parser___lexer___Token___text},
   {(bigint) parser___lexer___EOF___parser_index},
-  {(bigint) 0 /* 72: AError < Token: superclass init_table position */},
+  {(bigint) 0 /* 70: AError < Token: superclass init_table position */},
   {(bigint) parser___lexer___EOF___init},
-  {(bigint) 3 /* 74: AError < EOF: superclass init_table position */},
+  {(bigint) 3 /* 72: AError < EOF: superclass init_table position */},
   {(bigint) parser___parser_nodes___EOF___noinit},
   {(bigint) parser___lexer___AError___message},
   {(bigint) parser___lexer___AError___init_error},
-  {(bigint) 4 /* 78: AError < AError: superclass init_table position */},
+  {(bigint) 4 /* 76: AError < AError: superclass init_table position */},
   {(bigint) parser___parser_nodes___AError___noinit},
 };
 /* 0: Pointer to the classtable */
@@ -40295,17 +41029,15 @@ val_t NEW_AError_parser___parser_nodes___AError___noinit(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModule[81] = {
-  {(bigint) 3035 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AModule[79] = {
+  {(bigint) 3079 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModule" /* 2: Class Name */},
   {(bigint) 3 /* 3: AModule < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AModule < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AModule < Prod: superclass typecheck marker */},
-  {(bigint) 3035 /* 7: AModule < AModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AModule < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AModule < Prod: superclass typecheck marker */},
+  {(bigint) 3079 /* 7: AModule < AModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40316,7 +41048,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AModule < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AModule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40358,7 +41090,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[81] = {
   {(bigint) parser___parser_prod___AModule___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AModule___visit_all},
-  {(bigint) 1 /* 62: AModule < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -40368,12 +41100,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AModule[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModule < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AModule < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AModule___import_super_modules},
   {(bigint) parser___parser_prod___AModule___empty_init},
   {(bigint) parser___parser_prod___AModule___init_amodule},
-  {(bigint) 3 /* 77: AModule < AModule: superclass init_table position */},
+  {(bigint) 3 /* 75: AModule < AModule: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModule___n_moduledecl},
   {(bigint) parser___parser_nodes___AModule___n_imports},
   {(bigint) parser___parser_nodes___AModule___n_classdefs},
@@ -40507,17 +41239,15 @@ val_t NEW_AModule_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[80] = {
-  {(bigint) 3027 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[78] = {
+  {(bigint) 3071 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModuledecl" /* 2: Class Name */},
   {(bigint) 3 /* 3: AModuledecl < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AModuledecl < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AModuledecl < Prod: superclass typecheck marker */},
-  {(bigint) 3027 /* 7: AModuledecl < AModuledecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AModuledecl < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AModuledecl < Prod: superclass typecheck marker */},
+  {(bigint) 3071 /* 7: AModuledecl < AModuledecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40528,7 +41258,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AModuledecl < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AModuledecl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40570,7 +41300,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[80] = {
   {(bigint) parser___parser_prod___AModuledecl___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AModuledecl___visit_all},
-  {(bigint) 1 /* 62: AModuledecl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -40580,11 +41310,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuledecl[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModuledecl < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AModuledecl < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___AModuledecl___empty_init},
   {(bigint) parser___parser_prod___AModuledecl___init_amoduledecl},
-  {(bigint) 3 /* 76: AModuledecl < AModuledecl: superclass init_table position */},
+  {(bigint) 3 /* 74: AModuledecl < AModuledecl: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModuledecl___n_doc},
   {(bigint) parser___parser_nodes___AModuledecl___n_kwmodule},
   {(bigint) parser___parser_nodes___AModuledecl___n_name},
@@ -40712,17 +41442,15 @@ val_t NEW_AModuledecl_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AImport[77] = {
-  {(bigint) 3051 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AImport[75] = {
+  {(bigint) 3095 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AImport" /* 2: Class Name */},
   {(bigint) 3 /* 3: AImport < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AImport < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AImport < Prod: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: AImport < AImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AImport < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AImport < Prod: superclass typecheck marker */},
+  {(bigint) 3095 /* 7: AImport < AImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40733,7 +41461,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AImport < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AImport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40775,7 +41503,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[77] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AImport < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AImport < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -40785,11 +41513,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AImport[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AImport < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AImport < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AImport___module_name},
   {(bigint) syntax___mmbuilder___AImport___visibility_level},
-  {(bigint) 3 /* 76: AImport < AImport: superclass init_table position */},
+  {(bigint) 3 /* 74: AImport < AImport: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -40848,18 +41576,16 @@ val_t NEW_AImport_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdImport[83] = {
-  {(bigint) 3239 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStdImport[81] = {
+  {(bigint) 3279 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStdImport" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStdImport < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStdImport < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStdImport < Prod: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: AStdImport < AImport: superclass typecheck marker */},
-  {(bigint) 3239 /* 8: AStdImport < AStdImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStdImport < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStdImport < Prod: superclass typecheck marker */},
+  {(bigint) 3095 /* 7: AStdImport < AImport: superclass typecheck marker */},
+  {(bigint) 3279 /* 8: AStdImport < AStdImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -40869,7 +41595,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStdImport < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStdImport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -40911,7 +41637,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[83] = {
   {(bigint) parser___parser_prod___AStdImport___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStdImport___visit_all},
-  {(bigint) 1 /* 62: AStdImport < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -40921,14 +41647,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdImport[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStdImport < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStdImport < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AStdImport___module_name},
   {(bigint) syntax___mmbuilder___AStdImport___visibility_level},
-  {(bigint) 3 /* 76: AStdImport < AImport: superclass init_table position */},
+  {(bigint) 3 /* 74: AStdImport < AImport: superclass init_table position */},
   {(bigint) parser___parser_prod___AStdImport___empty_init},
   {(bigint) parser___parser_prod___AStdImport___init_astdimport},
-  {(bigint) 4 /* 79: AStdImport < AStdImport: superclass init_table position */},
+  {(bigint) 4 /* 77: AStdImport < AStdImport: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStdImport___n_visibility},
   {(bigint) parser___parser_nodes___AStdImport___n_kwimport},
   {(bigint) parser___parser_nodes___AStdImport___n_name},
@@ -41055,18 +41781,16 @@ val_t NEW_AStdImport_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANoImport[83] = {
-  {(bigint) 3319 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANoImport[81] = {
+  {(bigint) 3359 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANoImport" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANoImport < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANoImport < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ANoImport < Prod: superclass typecheck marker */},
-  {(bigint) 3051 /* 7: ANoImport < AImport: superclass typecheck marker */},
-  {(bigint) 3319 /* 8: ANoImport < ANoImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANoImport < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ANoImport < Prod: superclass typecheck marker */},
+  {(bigint) 3095 /* 7: ANoImport < AImport: superclass typecheck marker */},
+  {(bigint) 3359 /* 8: ANoImport < ANoImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41076,7 +41800,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ANoImport < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ANoImport < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41118,7 +41842,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[83] = {
   {(bigint) parser___parser_prod___ANoImport___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANoImport___visit_all},
-  {(bigint) 1 /* 62: ANoImport < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -41128,14 +41852,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ANoImport[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ANoImport < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ANoImport < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANoImport___module_name},
   {(bigint) syntax___mmbuilder___AImport___visibility_level},
-  {(bigint) 3 /* 76: ANoImport < AImport: superclass init_table position */},
+  {(bigint) 3 /* 74: ANoImport < AImport: superclass init_table position */},
   {(bigint) parser___parser_prod___ANoImport___empty_init},
   {(bigint) parser___parser_prod___ANoImport___init_anoimport},
-  {(bigint) 4 /* 79: ANoImport < ANoImport: superclass init_table position */},
+  {(bigint) 4 /* 77: ANoImport < ANoImport: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANoImport___n_visibility},
   {(bigint) parser___parser_nodes___ANoImport___n_kwimport},
   {(bigint) parser___parser_nodes___ANoImport___n_kwend},
@@ -41262,17 +41986,15 @@ val_t NEW_ANoImport_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVisibility[76] = {
-  {(bigint) 2999 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVisibility[74] = {
+  {(bigint) 3043 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVisibility" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVisibility < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVisibility < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 2999 /* 7: AVisibility < AVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVisibility < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: AVisibility < AVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41283,7 +42005,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVisibility < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41325,7 +42047,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[76] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AVisibility < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AVisibility < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -41335,10 +42057,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AVisibility[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVisibility < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AVisibility___level},
-  {(bigint) 3 /* 75: AVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 3 /* 73: AVisibility < AVisibility: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -41397,18 +42119,16 @@ val_t NEW_AVisibility_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[79] = {
-  {(bigint) 3283 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[77] = {
+  {(bigint) 3323 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APublicVisibility" /* 2: Class Name */},
   {(bigint) 3 /* 3: APublicVisibility < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APublicVisibility < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APublicVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 2999 /* 7: APublicVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3283 /* 8: APublicVisibility < APublicVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APublicVisibility < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APublicVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: APublicVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3323 /* 8: APublicVisibility < APublicVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41418,7 +42138,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APublicVisibility < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APublicVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41460,7 +42180,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[79] = {
   {(bigint) parser___parser_prod___APublicVisibility___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APublicVisibility___visit_all},
-  {(bigint) 1 /* 62: APublicVisibility < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -41470,13 +42190,13 @@ const classtable_elt_t VFT_parser___parser_nodes___APublicVisibility[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APublicVisibility < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APublicVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___APublicVisibility___level},
-  {(bigint) 3 /* 75: APublicVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 3 /* 73: APublicVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___APublicVisibility___empty_init},
   {(bigint) parser___parser_prod___APublicVisibility___init_apublicvisibility},
-  {(bigint) 4 /* 78: APublicVisibility < APublicVisibility: superclass init_table position */},
+  {(bigint) 4 /* 76: APublicVisibility < APublicVisibility: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -41573,18 +42293,16 @@ val_t NEW_APublicVisibility_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[80] = {
-  {(bigint) 3299 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[78] = {
+  {(bigint) 3339 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APrivateVisibility" /* 2: Class Name */},
   {(bigint) 3 /* 3: APrivateVisibility < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APrivateVisibility < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APrivateVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 2999 /* 7: APrivateVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3299 /* 8: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APrivateVisibility < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APrivateVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: APrivateVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3339 /* 8: APrivateVisibility < APrivateVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41594,7 +42312,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APrivateVisibility < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APrivateVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41636,7 +42354,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[80] = {
   {(bigint) parser___parser_prod___APrivateVisibility___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APrivateVisibility___visit_all},
-  {(bigint) 1 /* 62: APrivateVisibility < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -41646,13 +42364,13 @@ const classtable_elt_t VFT_parser___parser_nodes___APrivateVisibility[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APrivateVisibility < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APrivateVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___APrivateVisibility___level},
-  {(bigint) 3 /* 75: APrivateVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 3 /* 73: APrivateVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___APrivateVisibility___empty_init},
   {(bigint) parser___parser_prod___APrivateVisibility___init_aprivatevisibility},
-  {(bigint) 4 /* 78: APrivateVisibility < APrivateVisibility: superclass init_table position */},
+  {(bigint) 4 /* 76: APrivateVisibility < APrivateVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___APrivateVisibility___n_kwprivate},
 };
 /* 0: Pointer to the classtable */
@@ -41761,18 +42479,16 @@ val_t NEW_APrivateVisibility_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[80] = {
-  {(bigint) 3291 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[78] = {
+  {(bigint) 3331 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AProtectedVisibility" /* 2: Class Name */},
   {(bigint) 3 /* 3: AProtectedVisibility < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AProtectedVisibility < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AProtectedVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 2999 /* 7: AProtectedVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3291 /* 8: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AProtectedVisibility < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AProtectedVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: AProtectedVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3331 /* 8: AProtectedVisibility < AProtectedVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41782,7 +42498,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AProtectedVisibility < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AProtectedVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -41824,7 +42540,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[80] = {
   {(bigint) parser___parser_prod___AProtectedVisibility___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AProtectedVisibility___visit_all},
-  {(bigint) 1 /* 62: AProtectedVisibility < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -41834,13 +42550,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AProtectedVisibility[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AProtectedVisibility < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AProtectedVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AProtectedVisibility___level},
-  {(bigint) 3 /* 75: AProtectedVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 3 /* 73: AProtectedVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___AProtectedVisibility___empty_init},
   {(bigint) parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility},
-  {(bigint) 4 /* 78: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
+  {(bigint) 4 /* 76: AProtectedVisibility < AProtectedVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProtectedVisibility___n_kwprotected},
 };
 /* 0: Pointer to the classtable */
@@ -41949,18 +42665,16 @@ val_t NEW_AProtectedVisibility_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[80] = {
-  {(bigint) 3355 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[78] = {
+  {(bigint) 3395 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIntrudeVisibility" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIntrudeVisibility < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIntrudeVisibility < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AIntrudeVisibility < Prod: superclass typecheck marker */},
-  {(bigint) 2999 /* 7: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
-  {(bigint) 3355 /* 8: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIntrudeVisibility < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AIntrudeVisibility < Prod: superclass typecheck marker */},
+  {(bigint) 3043 /* 7: AIntrudeVisibility < AVisibility: superclass typecheck marker */},
+  {(bigint) 3395 /* 8: AIntrudeVisibility < AIntrudeVisibility: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -41970,7 +42684,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIntrudeVisibility < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIntrudeVisibility < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42012,7 +42726,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[80] = {
   {(bigint) parser___parser_prod___AIntrudeVisibility___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIntrudeVisibility___visit_all},
-  {(bigint) 1 /* 62: AIntrudeVisibility < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -42022,13 +42736,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntrudeVisibility[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIntrudeVisibility < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIntrudeVisibility < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AIntrudeVisibility___level},
-  {(bigint) 3 /* 75: AIntrudeVisibility < AVisibility: superclass init_table position */},
+  {(bigint) 3 /* 73: AIntrudeVisibility < AVisibility: superclass init_table position */},
   {(bigint) parser___parser_prod___AIntrudeVisibility___empty_init},
   {(bigint) parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility},
-  {(bigint) 4 /* 78: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
+  {(bigint) 4 /* 76: AIntrudeVisibility < AIntrudeVisibility: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIntrudeVisibility___n_kwintrude},
 };
 /* 0: Pointer to the classtable */
@@ -42137,17 +42851,15 @@ val_t NEW_AIntrudeVisibility_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClassdef[87] = {
-  {(bigint) 3087 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClassdef[85] = {
+  {(bigint) 3131 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClassdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClassdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClassdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3087 /* 7: AClassdef < AClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClassdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3131 /* 7: AClassdef < AClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42158,7 +42870,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AClassdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42200,7 +42912,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[87] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AClassdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AClassdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -42210,7 +42922,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClassdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AClassdef___name},
   {(bigint) syntax___mmbuilder___AClassdef___arity},
@@ -42223,7 +42935,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClassdef[87] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 85: AClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 3 /* 83: AClassdef < AClassdef: superclass init_table position */},
   {(bigint) syntax___typing___ANode___accept_typing},
 };
 /* 0: Pointer to the classtable */
@@ -42291,18 +43003,16 @@ val_t NEW_AClassdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[100] = {
-  {(bigint) 3243 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[98] = {
+  {(bigint) 3283 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStdClassdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStdClassdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStdClassdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStdClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3087 /* 7: AStdClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3243 /* 8: AStdClassdef < AStdClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStdClassdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStdClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3131 /* 7: AStdClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3283 /* 8: AStdClassdef < AStdClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42312,7 +43022,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStdClassdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStdClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42354,7 +43064,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[100] = {
   {(bigint) parser___parser_prod___AStdClassdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStdClassdef___visit_all},
-  {(bigint) 1 /* 62: AStdClassdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -42364,7 +43074,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStdClassdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStdClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AStdClassdef___name},
   {(bigint) syntax___mmbuilder___AStdClassdef___arity},
@@ -42377,13 +43087,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AStdClassdef[100] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 85: AStdClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 3 /* 83: AStdClassdef < AClassdef: superclass init_table position */},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
   {(bigint) syntax___mmbuilder___AClassdef___accept_class_verifier},
   {(bigint) parser___parser_prod___AStdClassdef___empty_init},
   {(bigint) parser___parser_prod___AStdClassdef___init_astdclassdef},
-  {(bigint) 4 /* 91: AStdClassdef < AStdClassdef: superclass init_table position */},
+  {(bigint) 4 /* 89: AStdClassdef < AStdClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStdClassdef___n_doc},
   {(bigint) parser___parser_nodes___AStdClassdef___n_kwredef},
   {(bigint) parser___parser_nodes___AStdClassdef___n_visibility},
@@ -42566,18 +43276,16 @@ val_t NEW_AStdClassdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[91] = {
-  {(bigint) 3223 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[89] = {
+  {(bigint) 3263 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATopClassdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: ATopClassdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ATopClassdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ATopClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3087 /* 7: ATopClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3223 /* 8: ATopClassdef < ATopClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ATopClassdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ATopClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3131 /* 7: ATopClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3263 /* 8: ATopClassdef < ATopClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42587,7 +43295,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ATopClassdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ATopClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42629,7 +43337,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[91] = {
   {(bigint) parser___parser_prod___ATopClassdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ATopClassdef___visit_all},
-  {(bigint) 1 /* 62: ATopClassdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -42639,7 +43347,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ATopClassdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ATopClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ATopClassdef___name},
   {(bigint) syntax___mmbuilder___AClassdef___arity},
@@ -42652,11 +43360,11 @@ const classtable_elt_t VFT_parser___parser_nodes___ATopClassdef[91] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 85: ATopClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 3 /* 83: ATopClassdef < AClassdef: superclass init_table position */},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___ATopClassdef___empty_init},
   {(bigint) parser___parser_prod___ATopClassdef___init_atopclassdef},
-  {(bigint) 4 /* 89: ATopClassdef < ATopClassdef: superclass init_table position */},
+  {(bigint) 4 /* 87: ATopClassdef < ATopClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATopClassdef___n_propdefs},
 };
 /* 0: Pointer to the classtable */
@@ -42776,18 +43484,16 @@ val_t NEW_ATopClassdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[91] = {
-  {(bigint) 3339 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[89] = {
+  {(bigint) 3379 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMainClassdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMainClassdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMainClassdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMainClassdef < Prod: superclass typecheck marker */},
-  {(bigint) 3087 /* 7: AMainClassdef < AClassdef: superclass typecheck marker */},
-  {(bigint) 3339 /* 8: AMainClassdef < AMainClassdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMainClassdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMainClassdef < Prod: superclass typecheck marker */},
+  {(bigint) 3131 /* 7: AMainClassdef < AClassdef: superclass typecheck marker */},
+  {(bigint) 3379 /* 8: AMainClassdef < AMainClassdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -42797,7 +43503,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMainClassdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMainClassdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -42839,7 +43545,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[91] = {
   {(bigint) parser___parser_prod___AMainClassdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMainClassdef___visit_all},
-  {(bigint) 1 /* 62: AMainClassdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -42849,7 +43555,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMainClassdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMainClassdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AMainClassdef___name},
   {(bigint) syntax___mmbuilder___AClassdef___arity},
@@ -42862,11 +43568,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainClassdef[91] = {
   {(bigint) syntax___mmbuilder___AClassdef___local_class},
   {(bigint) syntax___syntax_base___AClassdef___next_node},
   {(bigint) syntax___syntax_base___AClassdef___next_node__eq},
-  {(bigint) 3 /* 85: AMainClassdef < AClassdef: superclass init_table position */},
+  {(bigint) 3 /* 83: AMainClassdef < AClassdef: superclass init_table position */},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AMainClassdef___empty_init},
   {(bigint) parser___parser_prod___AMainClassdef___init_amainclassdef},
-  {(bigint) 4 /* 89: AMainClassdef < AMainClassdef: superclass init_table position */},
+  {(bigint) 4 /* 87: AMainClassdef < AMainClassdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMainClassdef___n_propdefs},
 };
 /* 0: Pointer to the classtable */
@@ -42986,17 +43692,15 @@ val_t NEW_AMainClassdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClasskind[79] = {
-  {(bigint) 3083 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClasskind[77] = {
+  {(bigint) 3127 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AClasskind < AClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AClasskind < AClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43007,7 +43711,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43049,7 +43753,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[79] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AClasskind < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -43059,13 +43763,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AClasskind[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AClasskind < AClasskind: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -43124,18 +43828,16 @@ val_t NEW_AClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[83] = {
-  {(bigint) 3415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[81] = {
+  {(bigint) 3455 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AConcreteClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AConcreteClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AConcreteClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AConcreteClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3415 /* 8: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AConcreteClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AConcreteClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AConcreteClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3455 /* 8: AConcreteClasskind < AConcreteClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43145,7 +43847,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AConcreteClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AConcreteClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43187,7 +43889,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[83] = {
   {(bigint) parser___parser_prod___AConcreteClasskind___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AConcreteClasskind___visit_all},
-  {(bigint) 1 /* 62: AConcreteClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -43197,16 +43899,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteClasskind[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AConcreteClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AConcreteClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AConcreteClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AConcreteClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AConcreteClasskind___empty_init},
   {(bigint) parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind},
-  {(bigint) 4 /* 81: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
+  {(bigint) 4 /* 79: AConcreteClasskind < AConcreteClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteClasskind___n_kwclass},
 };
 /* 0: Pointer to the classtable */
@@ -43315,18 +44017,16 @@ val_t NEW_AConcreteClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[84] = {
-  {(bigint) 3479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[82] = {
+  {(bigint) 3519 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbstractClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAbstractClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAbstractClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAbstractClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AAbstractClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3479 /* 8: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAbstractClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAbstractClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AAbstractClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3519 /* 8: AAbstractClasskind < AAbstractClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43336,7 +44036,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAbstractClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAbstractClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43378,7 +44078,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[84] = {
   {(bigint) parser___parser_prod___AAbstractClasskind___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAbstractClasskind___visit_all},
-  {(bigint) 1 /* 62: AAbstractClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -43388,16 +44088,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbstractClasskind[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAbstractClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAbstractClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AAbstractClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AAbstractClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AAbstractClasskind___empty_init},
   {(bigint) parser___parser_prod___AAbstractClasskind___init_aabstractclasskind},
-  {(bigint) 4 /* 81: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
+  {(bigint) 4 /* 79: AAbstractClasskind < AAbstractClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwabstract},
   {(bigint) parser___parser_nodes___AAbstractClasskind___n_kwclass},
 };
@@ -43515,18 +44215,16 @@ val_t NEW_AAbstractClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[83] = {
-  {(bigint) 3359 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[81] = {
+  {(bigint) 3399 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInterfaceClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInterfaceClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AInterfaceClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AInterfaceClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3359 /* 8: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AInterfaceClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AInterfaceClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AInterfaceClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3399 /* 8: AInterfaceClasskind < AInterfaceClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43536,7 +44234,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AInterfaceClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AInterfaceClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43578,7 +44276,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[83] = {
   {(bigint) parser___parser_prod___AInterfaceClasskind___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AInterfaceClasskind___visit_all},
-  {(bigint) 1 /* 62: AInterfaceClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -43588,16 +44286,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AInterfaceClasskind[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AInterfaceClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AInterfaceClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AInterfaceClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AInterfaceClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AInterfaceClasskind___empty_init},
   {(bigint) parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind},
-  {(bigint) 4 /* 81: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
+  {(bigint) 4 /* 79: AInterfaceClasskind < AInterfaceClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInterfaceClasskind___n_kwinterface},
 };
 /* 0: Pointer to the classtable */
@@ -43706,18 +44404,16 @@ val_t NEW_AInterfaceClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[83] = {
-  {(bigint) 3411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[81] = {
+  {(bigint) 3451 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEnumClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEnumClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEnumClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AEnumClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AEnumClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3411 /* 8: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEnumClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AEnumClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AEnumClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3451 /* 8: AEnumClasskind < AEnumClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43727,7 +44423,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AEnumClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AEnumClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43769,7 +44465,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[83] = {
   {(bigint) parser___parser_prod___AEnumClasskind___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AEnumClasskind___visit_all},
-  {(bigint) 1 /* 62: AEnumClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -43779,16 +44475,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AEnumClasskind[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AEnumClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AEnumClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AEnumClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AEnumClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AEnumClasskind___empty_init},
   {(bigint) parser___parser_prod___AEnumClasskind___init_aenumclasskind},
-  {(bigint) 4 /* 81: AEnumClasskind < AEnumClasskind: superclass init_table position */},
+  {(bigint) 4 /* 79: AEnumClasskind < AEnumClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEnumClasskind___n_kwenum},
 };
 /* 0: Pointer to the classtable */
@@ -43897,18 +44593,16 @@ val_t NEW_AEnumClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[83] = {
-  {(bigint) 3395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[81] = {
+  {(bigint) 3435 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternClasskind" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternClasskind < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternClasskind < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExternClasskind < Prod: superclass typecheck marker */},
-  {(bigint) 3083 /* 7: AExternClasskind < AClasskind: superclass typecheck marker */},
-  {(bigint) 3395 /* 8: AExternClasskind < AExternClasskind: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternClasskind < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExternClasskind < Prod: superclass typecheck marker */},
+  {(bigint) 3127 /* 7: AExternClasskind < AClasskind: superclass typecheck marker */},
+  {(bigint) 3435 /* 8: AExternClasskind < AExternClasskind: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -43918,7 +44612,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternClasskind < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternClasskind < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -43960,7 +44654,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[83] = {
   {(bigint) parser___parser_prod___AExternClasskind___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternClasskind___visit_all},
-  {(bigint) 1 /* 62: AExternClasskind < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -43970,16 +44664,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternClasskind[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternClasskind < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternClasskind < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AExternClasskind < AClasskind: superclass init_table position */},
+  {(bigint) 3 /* 76: AExternClasskind < AClasskind: superclass init_table position */},
   {(bigint) parser___parser_prod___AExternClasskind___empty_init},
   {(bigint) parser___parser_prod___AExternClasskind___init_aexternclasskind},
-  {(bigint) 4 /* 81: AExternClasskind < AExternClasskind: superclass init_table position */},
+  {(bigint) 4 /* 79: AExternClasskind < AExternClasskind: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternClasskind___n_kwextern},
 };
 /* 0: Pointer to the classtable */
@@ -44088,17 +44782,15 @@ val_t NEW_AExternClasskind_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[81] = {
-  {(bigint) 3055 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[79] = {
+  {(bigint) 3099 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFormaldef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFormaldef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AFormaldef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AFormaldef < Prod: superclass typecheck marker */},
-  {(bigint) 3055 /* 7: AFormaldef < AFormaldef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AFormaldef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AFormaldef < Prod: superclass typecheck marker */},
+  {(bigint) 3099 /* 7: AFormaldef < AFormaldef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44109,7 +44801,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AFormaldef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AFormaldef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44151,7 +44843,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[81] = {
   {(bigint) parser___parser_prod___AFormaldef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AFormaldef___visit_all},
-  {(bigint) 1 /* 62: AFormaldef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -44161,13 +44853,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AFormaldef[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AFormaldef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AFormaldef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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 /* 78: AFormaldef < AFormaldef: superclass init_table position */},
+  {(bigint) 3 /* 76: AFormaldef < AFormaldef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFormaldef___n_id},
   {(bigint) parser___parser_nodes___AFormaldef___n_type},
 };
@@ -44287,17 +44979,15 @@ val_t NEW_AFormaldef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
-  {(bigint) 3007 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[82] = {
+  {(bigint) 3051 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperclass" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperclass < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASuperclass < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASuperclass < Prod: superclass typecheck marker */},
-  {(bigint) 3007 /* 7: ASuperclass < ASuperclass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASuperclass < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASuperclass < Prod: superclass typecheck marker */},
+  {(bigint) 3051 /* 7: ASuperclass < ASuperclass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44308,7 +44998,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASuperclass < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASuperclass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44350,7 +45040,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {(bigint) parser___parser_prod___ASuperclass___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASuperclass___visit_all},
-  {(bigint) 1 /* 62: ASuperclass < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -44360,7 +45050,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASuperclass < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASuperclass < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ASuperclass___ancestor},
   {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
@@ -44368,7 +45058,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperclass[84] = {
   {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
   {(bigint) parser___parser_prod___ASuperclass___empty_init},
   {(bigint) parser___parser_prod___ASuperclass___init_asuperclass},
-  {(bigint) 3 /* 80: ASuperclass < ASuperclass: superclass init_table position */},
+  {(bigint) 3 /* 78: ASuperclass < ASuperclass: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperclass___n_kwspecial},
   {(bigint) parser___parser_nodes___ASuperclass___n_kwsuper},
   {(bigint) parser___parser_nodes___ASuperclass___n_type},
@@ -44495,17 +45185,15 @@ val_t NEW_ASuperclass_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APropdef[81] = {
-  {(bigint) 3019 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APropdef[79] = {
+  {(bigint) 3063 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: APropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: APropdef < APropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: APropdef < APropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44516,7 +45204,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44558,7 +45246,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[81] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: APropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: APropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -44568,14 +45256,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APropdef[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: APropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: APropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
 };
 /* 0: Pointer to the classtable */
@@ -44643,18 +45331,16 @@ val_t NEW_APropdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[101] = {
-  {(bigint) 3451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[99] = {
+  {(bigint) 3491 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAttrPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAttrPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AAttrPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3451 /* 8: AAttrPropdef < AAttrPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAttrPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAttrPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AAttrPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3491 /* 8: AAttrPropdef < AAttrPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44664,7 +45350,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[101] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAttrPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAttrPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44706,7 +45392,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[101] = {
   {(bigint) parser___parser_prod___AAttrPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAttrPropdef___visit_all},
-  {(bigint) 1 /* 62: AAttrPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -44716,14 +45402,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[101] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAttrPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAttrPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AAttrPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AAttrPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -44733,7 +45419,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrPropdef[101] = {
   {(bigint) syntax___mmbuilder___AAttrPropdef___writemethod},
   {(bigint) parser___parser_prod___AAttrPropdef___empty_init},
   {(bigint) parser___parser_prod___AAttrPropdef___init_aattrpropdef},
-  {(bigint) 4 /* 89: AAttrPropdef < AAttrPropdef: superclass init_table position */},
+  {(bigint) 4 /* 87: AAttrPropdef < AAttrPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AAttrPropdef___n_kwvar},
@@ -44909,18 +45595,16 @@ val_t NEW_AAttrPropdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[96] = {
-  {(bigint) 3335 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[94] = {
+  {(bigint) 3375 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AMethPropdef < AMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -44930,7 +45614,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -44972,7 +45656,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[96] = {
   {(bigint) parser___parser_prod___AMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AMethPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -44982,14 +45666,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[96] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -44998,7 +45682,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethPropdef[96] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -45132,19 +45816,17 @@ val_t NEW_AMethPropdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
-  {(bigint) 3647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[98] = {
+  {(bigint) 3683 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADeferredMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: ADeferredMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ADeferredMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ADeferredMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3647 /* 9: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ADeferredMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ADeferredMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: ADeferredMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: ADeferredMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3683 /* 9: ADeferredMethPropdef < ADeferredMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45153,7 +45835,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ADeferredMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ADeferredMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45195,7 +45877,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
   {(bigint) parser___parser_prod___ADeferredMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ADeferredMethPropdef___visit_all},
-  {(bigint) 1 /* 62: ADeferredMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -45205,14 +45887,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ADeferredMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ADeferredMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: ADeferredMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: ADeferredMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -45221,7 +45903,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: ADeferredMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -45231,7 +45913,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADeferredMethPropdef[100] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___ADeferredMethPropdef___empty_init},
   {(bigint) parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef},
-  {(bigint) 5 /* 98: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 96: ADeferredMethPropdef < ADeferredMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADeferredMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
@@ -45418,19 +46100,17 @@ 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[100] = {
-  {(bigint) 3607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[98] = {
+  {(bigint) 3643 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInternMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AInternMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AInternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AInternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3607 /* 9: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AInternMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AInternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AInternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AInternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3643 /* 9: AInternMethPropdef < AInternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45439,7 +46119,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AInternMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AInternMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45481,7 +46161,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[100] = {
   {(bigint) parser___parser_prod___AInternMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AInternMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AInternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -45491,14 +46171,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AInternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AInternMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AInternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AInternMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -45507,7 +46187,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[100] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AInternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AInternMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -45517,7 +46197,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInternMethPropdef[100] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AInternMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef},
-  {(bigint) 5 /* 98: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 96: AInternMethPropdef < AInternMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInternMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
@@ -45704,19 +46384,17 @@ 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___AExternPropdef[100] = {
-  {(bigint) 3631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[98] = {
+  {(bigint) 3667 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExternPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AExternPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AExternPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3631 /* 9: AExternPropdef < AExternPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExternPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AExternPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AExternPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3667 /* 9: AExternPropdef < AExternPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45725,7 +46403,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[100] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -45767,7 +46445,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[100] = {
   {(bigint) parser___parser_prod___AMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AExternPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AExternPropdef < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___AMethPropdef___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -45777,14 +46455,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[100] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AExternPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AExternPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -45793,16 +46471,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternPropdef[100] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AExternPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AExternPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
   {(bigint) parser___parser_nodes___AMethPropdef___n_signature},
   {(bigint) syntax___icode_generation___ANode___accept_icode_generation},
-  {(bigint) syntax___icode_generation___AMethPropdef___fill_iroutine},
+  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 97: AExternPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) 5 /* 95: AExternPropdef < AExternPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
 };
@@ -45939,20 +46617,18 @@ val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
-  {(bigint) 3731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[103] = {
+  {(bigint) 3763 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExternMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AExternMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3631 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 3731 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExternMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AExternMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AExternMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3667 /* 9: AExternMethPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 3763 /* 10: AExternMethPropdef < AExternMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -45960,7 +46636,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46002,7 +46678,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
   {(bigint) parser___parser_prod___AExternMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AExternMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -46012,14 +46688,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AExternMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AExternMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -46028,7 +46704,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AExternMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AExternMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -46037,12 +46713,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternMethPropdef[104] = {
   {(bigint) syntax___icode_generation___AExternMethPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 97: AExternMethPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) 5 /* 95: AExternMethPropdef < AExternPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
   {(bigint) parser___parser_prod___AExternMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef},
-  {(bigint) 6 /* 102: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
+  {(bigint) 6 /* 101: AExternMethPropdef < AExternMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternMethPropdef___n_kwmeth},
 };
 /* 0: Pointer to the classtable */
@@ -46241,19 +46918,17 @@ 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[102] = {
-  {(bigint) 3659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[100] = {
+  {(bigint) 3695 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AConcreteMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AConcreteMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AConcreteMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3659 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AConcreteMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AConcreteMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AConcreteMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AConcreteMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3695 /* 9: AConcreteMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46262,7 +46937,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[102] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AConcreteMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AConcreteMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46304,7 +46979,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[102] = {
   {(bigint) parser___parser_prod___AConcreteMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AConcreteMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -46314,14 +46989,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[102] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AConcreteMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AConcreteMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AConcreteMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AConcreteMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -46330,7 +47005,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[102] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AConcreteMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -46341,7 +47016,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteMethPropdef[102] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 97: AConcreteMethPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
 };
@@ -46527,15 +47202,13 @@ 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___AInitPropdef[71] = {
-  {(bigint) 303 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[69] = {
+  {(bigint) 311 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInitPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInitPropdef < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 303 /* 5: AInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 311 /* 5: AInitPropdef < AInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46548,7 +47221,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: AInitPropdef < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: AInitPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46597,7 +47270,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropdef[71] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 69: AInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 1 /* 67: AInitPropdef < AInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitPropdef___init},
 };
 /* 0: Pointer to the classtable */
@@ -46651,20 +47324,18 @@ val_t NEW_AInitPropdef_parser___parser_nodes___AInitPropdef___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
-  {(bigint) 3739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[109] = {
+  {(bigint) 3771 /* 0: Identity */},
   {(bigint) 19 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AConcreteInitPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AConcreteInitPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AConcreteInitPropdef < ANode: superclass typecheck marker */},
-  {(bigint) 303 /* 5: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AConcreteInitPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3659 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 3739 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AConcreteInitPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 311 /* 5: AConcreteInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AConcreteInitPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AConcreteInitPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AConcreteInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3695 /* 9: AConcreteInitPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 3771 /* 10: AConcreteInitPropdef < AConcreteInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46672,7 +47343,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AConcreteInitPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AConcreteInitPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46714,24 +47385,24 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
   {(bigint) parser___parser_prod___AConcreteInitPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AConcreteInitPropdef___visit_all},
-  {(bigint) 1 /* 62: AConcreteInitPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AConcreteInitPropdef___accept_typing},
   {(bigint) syntax___typing___AConcreteInitPropdef___after_typing},
-  {(bigint) 6 /* 69: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 6 /* 67: AConcreteInitPropdef < AInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitPropdef___init},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AConcreteInitPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AConcreteInitPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AConcreteInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AConcreteInitPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -46740,7 +47411,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AConcreteInitPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -46751,7 +47422,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 97: AConcreteInitPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
@@ -46760,7 +47431,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AConcreteInitPropdef[111] = {
   {(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 /* 108: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
+  {(bigint) 7 /* 106: AConcreteInitPropdef < AConcreteInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteInitPropdef___init},
   {(bigint) parser___parser_nodes___AConcreteInitPropdef___n_kwinit},
 };
@@ -46924,20 +47595,18 @@ val_t NEW_AConcreteInitPropdef_parser___parser_nodes___AConcreteInitPropdef___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[107] = {
-  {(bigint) 3735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[106] = {
+  {(bigint) 3767 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternInitPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternInitPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternInitPropdef < ANode: superclass typecheck marker */},
-  {(bigint) 303 /* 5: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AExternInitPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AExternInitPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AExternInitPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3631 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
-  {(bigint) 3735 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternInitPropdef < ANode: superclass typecheck marker */},
+  {(bigint) 311 /* 5: AExternInitPropdef < AInitPropdef: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AExternInitPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AExternInitPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AExternInitPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3667 /* 9: AExternInitPropdef < AExternPropdef: superclass typecheck marker */},
+  {(bigint) 3767 /* 10: AExternInitPropdef < AExternInitPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -46945,7 +47614,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[107] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternInitPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternInitPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -46987,24 +47656,24 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[107] = {
   {(bigint) parser___parser_prod___AExternInitPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternInitPropdef___visit_all},
-  {(bigint) 1 /* 62: AExternInitPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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) syntax___icode_generation___AMethPropdef___accept_icode_generation},
   {(bigint) syntax___typing___AExternInitPropdef___accept_typing},
   {(bigint) syntax___typing___AExternInitPropdef___after_typing},
-  {(bigint) 6 /* 69: AExternInitPropdef < AInitPropdef: superclass init_table position */},
+  {(bigint) 6 /* 67: AExternInitPropdef < AInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitPropdef___init},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternInitPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternInitPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AExternInitPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AExternInitPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -47013,7 +47682,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[107] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AExternInitPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AExternInitPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -47022,14 +47691,15 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternInitPropdef[107] = {
   {(bigint) syntax___icode_generation___AExternInitPropdef___fill_iroutine},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___mmbuilder___AMethPropdef___accept_property_verifier},
-  {(bigint) 5 /* 97: AExternInitPropdef < AExternPropdef: superclass init_table position */},
+  {(bigint) 5 /* 95: AExternInitPropdef < AExternPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern},
   {(bigint) parser___parser_nodes___AExternPropdef___n_extern_calls},
+  {(bigint) syntax___icode_generation___AExternPropdef___fill_iroutine},
   {(bigint) syntax___typing___AMethPropdef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AExternInitPropdef___empty_init},
   {(bigint) parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef},
-  {(bigint) 7 /* 104: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
+  {(bigint) 7 /* 103: AExternInitPropdef < AExternInitPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternInitPropdef___init},
   {(bigint) parser___parser_nodes___AExternInitPropdef___n_kwnew},
 };
@@ -47180,20 +47850,18 @@ val_t NEW_AExternInitPropdef_parser___parser_nodes___AExternInitPropdef___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
-  {(bigint) 3727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[103] = {
+  {(bigint) 3759 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMainMethPropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMainMethPropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMainMethPropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMainMethPropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: AMainMethPropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3335 /* 8: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
-  {(bigint) 3659 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
-  {(bigint) 3727 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMainMethPropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMainMethPropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: AMainMethPropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3375 /* 8: AMainMethPropdef < AMethPropdef: superclass typecheck marker */},
+  {(bigint) 3695 /* 9: AMainMethPropdef < AConcreteMethPropdef: superclass typecheck marker */},
+  {(bigint) 3759 /* 10: AMainMethPropdef < AMainMethPropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47201,7 +47869,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMainMethPropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMainMethPropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47243,7 +47911,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
   {(bigint) parser___parser_prod___AMainMethPropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMainMethPropdef___visit_all},
-  {(bigint) 1 /* 62: AMainMethPropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -47253,14 +47921,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMainMethPropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMainMethPropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: AMainMethPropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: AMainMethPropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___AMethPropdef___name},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
@@ -47269,7 +47937,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
   {(bigint) syntax___mmbuilder___AMethPropdef___method},
   {(bigint) parser___parser_prod___AMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMethPropdef___init_amethpropdef},
-  {(bigint) 4 /* 88: AMainMethPropdef < AMethPropdef: superclass init_table position */},
+  {(bigint) 4 /* 86: AMainMethPropdef < AMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMethPropdef___n_kwredef},
   {(bigint) parser___parser_nodes___AMethPropdef___n_visibility},
   {(bigint) parser___parser_nodes___AMethPropdef___n_methid},
@@ -47280,12 +47948,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AMainMethPropdef[105] = {
   {(bigint) syntax___typing___ANode___after_typing},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef},
-  {(bigint) 5 /* 99: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
+  {(bigint) 5 /* 97: AMainMethPropdef < AConcreteMethPropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_kwmeth},
   {(bigint) parser___parser_nodes___AConcreteMethPropdef___n_block},
   {(bigint) parser___parser_prod___AMainMethPropdef___empty_init},
   {(bigint) parser___parser_prod___AMainMethPropdef___init_amainmethpropdef},
-  {(bigint) 6 /* 104: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
+  {(bigint) 6 /* 102: AMainMethPropdef < AMainMethPropdef: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -47511,17 +48179,15 @@ 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[79] = {
-  {(bigint) 3059 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[77] = {
+  {(bigint) 3103 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternCalls" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternCalls < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternCalls < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExternCalls < Prod: superclass typecheck marker */},
-  {(bigint) 3059 /* 7: AExternCalls < AExternCalls: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternCalls < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExternCalls < Prod: superclass typecheck marker */},
+  {(bigint) 3103 /* 7: AExternCalls < AExternCalls: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47532,7 +48198,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternCalls < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternCalls < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47574,7 +48240,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[79] = {
   {(bigint) parser___parser_prod___AExternCalls___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternCalls___visit_all},
-  {(bigint) 1 /* 62: AExternCalls < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -47584,11 +48250,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCalls[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternCalls < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternCalls < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___AExternCalls___empty_init},
   {(bigint) parser___parser_prod___AExternCalls___init_aexterncalls},
-  {(bigint) 3 /* 76: AExternCalls < AExternCalls: superclass init_table position */},
+  {(bigint) 3 /* 74: AExternCalls < AExternCalls: superclass init_table position */},
   {(bigint) parser___parser_nodes___AExternCalls___n_kwimport},
   {(bigint) parser___parser_nodes___AExternCalls___n_extern_calls},
 };
@@ -47712,17 +48378,15 @@ val_t NEW_AExternCalls_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExternCall[79] = {
-  {(bigint) 3063 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExternCall[77] = {
+  {(bigint) 3107 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AExternCall < AExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: AExternCall < AExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47733,7 +48397,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47775,7 +48439,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[79] = {
   {(bigint) parser___parser_prod___AExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 62: AExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -47785,13 +48449,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AExternCall[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: AExternCall < AExternCall: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -47888,18 +48552,16 @@ val_t NEW_AExternCall_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[80] = {
-  {(bigint) 3295 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[78] = {
+  {(bigint) 3335 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: APropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APropExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: APropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3295 /* 8: APropExternCall < APropExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APropExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: APropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3335 /* 8: APropExternCall < APropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -47909,7 +48571,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APropExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -47951,7 +48613,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[80] = {
   {(bigint) parser___parser_prod___AExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 62: APropExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: APropExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -47961,14 +48623,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APropExternCall[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APropExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: APropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 79: APropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: APropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 4 /* 77: APropExternCall < APropExternCall: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -48065,19 +48727,17 @@ val_t NEW_APropExternCall_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___ALocalPropExternCall[84] = {
-  {(bigint) 3595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[82] = {
+  {(bigint) 3631 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALocalPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALocalPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALocalPropExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ALocalPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ALocalPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3295 /* 8: ALocalPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3595 /* 9: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALocalPropExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ALocalPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: ALocalPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3335 /* 8: ALocalPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 3631 /* 9: ALocalPropExternCall < ALocalPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48086,7 +48746,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALocalPropExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALocalPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48128,7 +48788,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[84] = {
   {(bigint) parser___parser_prod___ALocalPropExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALocalPropExternCall___visit_all},
-  {(bigint) 1 /* 62: ALocalPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -48138,17 +48798,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALocalPropExternCall[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALocalPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALocalPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: ALocalPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 79: ALocalPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: ALocalPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 4 /* 77: ALocalPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ALocalPropExternCall___empty_init},
   {(bigint) parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall},
-  {(bigint) 5 /* 82: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 80: ALocalPropExternCall < ALocalPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALocalPropExternCall___n_methid},
 };
 /* 0: Pointer to the classtable */
@@ -48295,19 +48955,17 @@ 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[86] = {
-  {(bigint) 3619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[84] = {
+  {(bigint) 3655 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFullPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFullPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AFullPropExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AFullPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AFullPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3295 /* 8: AFullPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3619 /* 9: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AFullPropExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AFullPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: AFullPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3335 /* 8: AFullPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 3655 /* 9: AFullPropExternCall < AFullPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48316,7 +48974,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AFullPropExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AFullPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48358,7 +49016,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[86] = {
   {(bigint) parser___parser_prod___AFullPropExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AFullPropExternCall___visit_all},
-  {(bigint) 1 /* 62: AFullPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -48368,17 +49026,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AFullPropExternCall[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AFullPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AFullPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AFullPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 79: AFullPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: AFullPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 4 /* 77: AFullPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AFullPropExternCall___empty_init},
   {(bigint) parser___parser_prod___AFullPropExternCall___init_afullpropexterncall},
-  {(bigint) 5 /* 82: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 80: AFullPropExternCall < AFullPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_classid},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_quad},
   {(bigint) parser___parser_nodes___AFullPropExternCall___n_methid},
@@ -48544,19 +49202,17 @@ 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[84] = {
-  {(bigint) 3611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[82] = {
+  {(bigint) 3647 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInitPropExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInitPropExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AInitPropExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AInitPropExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AInitPropExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3295 /* 8: AInitPropExternCall < APropExternCall: superclass typecheck marker */},
-  {(bigint) 3611 /* 9: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AInitPropExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AInitPropExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: AInitPropExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3335 /* 8: AInitPropExternCall < APropExternCall: superclass typecheck marker */},
+  {(bigint) 3647 /* 9: AInitPropExternCall < AInitPropExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48565,7 +49221,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AInitPropExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AInitPropExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48607,7 +49263,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[84] = {
   {(bigint) parser___parser_prod___AInitPropExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AInitPropExternCall___visit_all},
-  {(bigint) 1 /* 62: AInitPropExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -48617,17 +49273,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitPropExternCall[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AInitPropExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AInitPropExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AInitPropExternCall < AExternCall: superclass init_table position */},
-  {(bigint) 4 /* 79: AInitPropExternCall < APropExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: AInitPropExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 4 /* 77: AInitPropExternCall < APropExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AInitPropExternCall___empty_init},
   {(bigint) parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall},
-  {(bigint) 5 /* 82: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
+  {(bigint) 5 /* 80: AInitPropExternCall < AInitPropExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitPropExternCall___n_classid},
 };
 /* 0: Pointer to the classtable */
@@ -48774,18 +49430,16 @@ 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[83] = {
-  {(bigint) 3231 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[81] = {
+  {(bigint) 3271 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASuperExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASuperExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ASuperExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3231 /* 8: ASuperExternCall < ASuperExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASuperExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASuperExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: ASuperExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3271 /* 8: ASuperExternCall < ASuperExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -48795,7 +49449,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASuperExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASuperExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -48837,7 +49491,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[83] = {
   {(bigint) parser___parser_prod___ASuperExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASuperExternCall___visit_all},
-  {(bigint) 1 /* 62: ASuperExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -48847,16 +49501,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExternCall[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASuperExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASuperExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: ASuperExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: ASuperExternCall < AExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ASuperExternCall___empty_init},
   {(bigint) parser___parser_prod___ASuperExternCall___init_asuperexterncall},
-  {(bigint) 4 /* 81: ASuperExternCall < ASuperExternCall: superclass init_table position */},
+  {(bigint) 4 /* 79: ASuperExternCall < ASuperExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperExternCall___n_kwsuper},
 };
 /* 0: Pointer to the classtable */
@@ -49003,18 +49657,16 @@ 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___ACastExternCall[82] = {
-  {(bigint) 3427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[80] = {
+  {(bigint) 3467 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACastExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACastExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACastExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ACastExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ACastExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3427 /* 8: ACastExternCall < ACastExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACastExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ACastExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: ACastExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3467 /* 8: ACastExternCall < ACastExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49024,7 +49676,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ACastExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ACastExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49066,7 +49718,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[82] = {
   {(bigint) parser___parser_prod___AExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AExternCall___visit_all},
-  {(bigint) 1 /* 62: ACastExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: ACastExternCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -49076,16 +49728,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastExternCall[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ACastExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ACastExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: ACastExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: ACastExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___ACastExternCall___from_type},
   {(bigint) syntax___typing___ACastExternCall___to_type},
-  {(bigint) 4 /* 81: ACastExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 4 /* 79: ACastExternCall < ACastExternCall: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -49182,19 +49834,17 @@ val_t NEW_ACastExternCall_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[88] = {
-  {(bigint) 3667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[86] = {
+  {(bigint) 3703 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACastAsExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACastAsExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACastAsExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ACastAsExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: ACastAsExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3427 /* 8: ACastAsExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3667 /* 9: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACastAsExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ACastAsExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: ACastAsExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3467 /* 8: ACastAsExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 3703 /* 9: ACastAsExternCall < ACastAsExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49203,7 +49853,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ACastAsExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ACastAsExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49245,7 +49895,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[88] = {
   {(bigint) parser___parser_prod___ACastAsExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACastAsExternCall___visit_all},
-  {(bigint) 1 /* 62: ACastAsExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -49255,19 +49905,19 @@ const classtable_elt_t VFT_parser___parser_nodes___ACastAsExternCall[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ACastAsExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ACastAsExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: ACastAsExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: ACastAsExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___ACastAsExternCall___from_type},
   {(bigint) syntax___typing___ACastAsExternCall___to_type},
-  {(bigint) 4 /* 81: ACastAsExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 4 /* 79: ACastAsExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ACastAsExternCall___empty_init},
   {(bigint) parser___parser_prod___ACastAsExternCall___init_acastasexterncall},
-  {(bigint) 5 /* 84: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
+  {(bigint) 5 /* 82: ACastAsExternCall < ACastAsExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_from_type},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_kwas},
   {(bigint) parser___parser_nodes___ACastAsExternCall___n_to_type},
@@ -49432,19 +50082,17 @@ 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[88] = {
-  {(bigint) 3687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[86] = {
+  {(bigint) 3723 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNullableExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsNullableExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAsNullableExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAsNullableExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AAsNullableExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3427 /* 8: AAsNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3687 /* 9: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAsNullableExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAsNullableExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: AAsNullableExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3467 /* 8: AAsNullableExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 3723 /* 9: AAsNullableExternCall < AAsNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49453,7 +50101,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAsNullableExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAsNullableExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49495,7 +50143,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[88] = {
   {(bigint) parser___parser_prod___AAsNullableExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAsNullableExternCall___visit_all},
-  {(bigint) 1 /* 62: AAsNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -49505,19 +50153,19 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNullableExternCall[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAsNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAsNullableExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AAsNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: AAsNullableExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___AAsNullableExternCall___from_type},
   {(bigint) syntax___typing___AAsNullableExternCall___to_type},
-  {(bigint) 4 /* 81: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 4 /* 79: AAsNullableExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AAsNullableExternCall___empty_init},
   {(bigint) parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall},
-  {(bigint) 5 /* 84: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
+  {(bigint) 5 /* 82: AAsNullableExternCall < AAsNullableExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_type},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwas},
   {(bigint) parser___parser_nodes___AAsNullableExternCall___n_kwnullable},
@@ -49682,19 +50330,17 @@ 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[89] = {
-  {(bigint) 3691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[87] = {
+  {(bigint) 3727 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNotNullableExternCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsNotNullableExternCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAsNotNullableExternCall < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAsNotNullableExternCall < Prod: superclass typecheck marker */},
-  {(bigint) 3063 /* 7: AAsNotNullableExternCall < AExternCall: superclass typecheck marker */},
-  {(bigint) 3427 /* 8: AAsNotNullableExternCall < ACastExternCall: superclass typecheck marker */},
-  {(bigint) 3691 /* 9: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAsNotNullableExternCall < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAsNotNullableExternCall < Prod: superclass typecheck marker */},
+  {(bigint) 3107 /* 7: AAsNotNullableExternCall < AExternCall: superclass typecheck marker */},
+  {(bigint) 3467 /* 8: AAsNotNullableExternCall < ACastExternCall: superclass typecheck marker */},
+  {(bigint) 3727 /* 9: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49703,7 +50349,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[89]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAsNotNullableExternCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAsNotNullableExternCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -49745,7 +50391,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[89]
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___visit_all},
-  {(bigint) 1 /* 62: AAsNotNullableExternCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -49755,19 +50401,19 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotNullableExternCall[89]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAsNotNullableExternCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAsNotNullableExternCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 78: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
+  {(bigint) 3 /* 76: AAsNotNullableExternCall < AExternCall: superclass init_table position */},
   {(bigint) syntax___typing___AAsNotNullableExternCall___from_type},
   {(bigint) syntax___typing___AAsNotNullableExternCall___to_type},
-  {(bigint) 4 /* 81: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
+  {(bigint) 4 /* 79: AAsNotNullableExternCall < ACastExternCall: superclass init_table position */},
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___empty_init},
   {(bigint) parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall},
-  {(bigint) 5 /* 84: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
+  {(bigint) 5 /* 82: AAsNotNullableExternCall < AAsNotNullableExternCall: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_type},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwas},
   {(bigint) parser___parser_nodes___AAsNotNullableExternCall___n_kwnot},
@@ -49941,18 +50587,16 @@ 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[93] = {
-  {(bigint) 3215 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[91] = {
+  {(bigint) 3255 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATypePropdef" /* 2: Class Name */},
   {(bigint) 3 /* 3: ATypePropdef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ATypePropdef < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ATypePropdef < Prod: superclass typecheck marker */},
-  {(bigint) 3019 /* 7: ATypePropdef < APropdef: superclass typecheck marker */},
-  {(bigint) 3215 /* 8: ATypePropdef < ATypePropdef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ATypePropdef < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ATypePropdef < Prod: superclass typecheck marker */},
+  {(bigint) 3063 /* 7: ATypePropdef < APropdef: superclass typecheck marker */},
+  {(bigint) 3255 /* 8: ATypePropdef < ATypePropdef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -49962,7 +50606,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ATypePropdef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ATypePropdef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50004,7 +50648,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[93] = {
   {(bigint) parser___parser_prod___ATypePropdef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ATypePropdef___visit_all},
-  {(bigint) 1 /* 62: ATypePropdef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -50014,14 +50658,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ATypePropdef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ATypePropdef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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) 3 /* 79: ATypePropdef < APropdef: superclass init_table position */},
+  {(bigint) 3 /* 77: ATypePropdef < APropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___APropdef___n_doc},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___ANode___accept_property_verifier},
@@ -50029,7 +50673,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATypePropdef[93] = {
   {(bigint) syntax___mmbuilder___ATypePropdef___prop},
   {(bigint) parser___parser_prod___ATypePropdef___empty_init},
   {(bigint) parser___parser_prod___ATypePropdef___init_atypepropdef},
-  {(bigint) 4 /* 87: ATypePropdef < ATypePropdef: superclass init_table position */},
+  {(bigint) 4 /* 85: ATypePropdef < ATypePropdef: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATypePropdef___n_kwredef},
   {(bigint) parser___parser_nodes___ATypePropdef___n_visibility},
   {(bigint) parser___parser_nodes___ATypePropdef___n_kwtype},
@@ -50183,17 +50827,15 @@ val_t NEW_ATypePropdef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAble[77] = {
-  {(bigint) 3095 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAble[75] = {
+  {(bigint) 3139 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAble" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAble < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAble < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAble < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: AAble < AAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAble < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAble < Prod: superclass typecheck marker */},
+  {(bigint) 3139 /* 7: AAble < AAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50204,7 +50846,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAble < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAble < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50246,7 +50888,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[77] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAble < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAble < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -50256,9 +50898,9 @@ const classtable_elt_t VFT_parser___parser_nodes___AAble[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAble < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAble < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 74: AAble < AAble: superclass init_table position */},
+  {(bigint) 3 /* 72: AAble < AAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAble___n_visibility},
   {(bigint) parser___parser_nodes___AAble___n_kwredef},
 };
@@ -50330,18 +50972,16 @@ val_t NEW_AAble_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReadAble[81] = {
-  {(bigint) 3275 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AReadAble[79] = {
+  {(bigint) 3315 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AReadAble" /* 2: Class Name */},
   {(bigint) 3 /* 3: AReadAble < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AReadAble < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AReadAble < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: AReadAble < AAble: superclass typecheck marker */},
-  {(bigint) 3275 /* 8: AReadAble < AReadAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AReadAble < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AReadAble < Prod: superclass typecheck marker */},
+  {(bigint) 3139 /* 7: AReadAble < AAble: superclass typecheck marker */},
+  {(bigint) 3315 /* 8: AReadAble < AReadAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50351,7 +50991,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AReadAble < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AReadAble < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50393,7 +51033,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[81] = {
   {(bigint) parser___parser_prod___AReadAble___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AReadAble___visit_all},
-  {(bigint) 1 /* 62: AReadAble < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -50403,14 +51043,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AReadAble[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AReadAble < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AReadAble < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 74: AReadAble < AAble: superclass init_table position */},
+  {(bigint) 3 /* 72: AReadAble < AAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAble___n_visibility},
   {(bigint) parser___parser_nodes___AAble___n_kwredef},
   {(bigint) parser___parser_prod___AReadAble___empty_init},
   {(bigint) parser___parser_prod___AReadAble___init_areadable},
-  {(bigint) 4 /* 79: AReadAble < AReadAble: superclass init_table position */},
+  {(bigint) 4 /* 77: AReadAble < AReadAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReadAble___n_kwreadable},
 };
 /* 0: Pointer to the classtable */
@@ -50532,18 +51172,16 @@ val_t NEW_AReadAble_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[81] = {
-  {(bigint) 3203 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[79] = {
+  {(bigint) 3243 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AWriteAble" /* 2: Class Name */},
   {(bigint) 3 /* 3: AWriteAble < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AWriteAble < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AWriteAble < Prod: superclass typecheck marker */},
-  {(bigint) 3095 /* 7: AWriteAble < AAble: superclass typecheck marker */},
-  {(bigint) 3203 /* 8: AWriteAble < AWriteAble: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AWriteAble < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AWriteAble < Prod: superclass typecheck marker */},
+  {(bigint) 3139 /* 7: AWriteAble < AAble: superclass typecheck marker */},
+  {(bigint) 3243 /* 8: AWriteAble < AWriteAble: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50553,7 +51191,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AWriteAble < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AWriteAble < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50595,7 +51233,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[81] = {
   {(bigint) parser___parser_prod___AWriteAble___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AWriteAble___visit_all},
-  {(bigint) 1 /* 62: AWriteAble < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -50605,14 +51243,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AWriteAble[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AWriteAble < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AWriteAble < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) 3 /* 74: AWriteAble < AAble: superclass init_table position */},
+  {(bigint) 3 /* 72: AWriteAble < AAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAble___n_visibility},
   {(bigint) parser___parser_nodes___AAble___n_kwredef},
   {(bigint) parser___parser_prod___AWriteAble___empty_init},
   {(bigint) parser___parser_prod___AWriteAble___init_awriteable},
-  {(bigint) 4 /* 79: AWriteAble < AWriteAble: superclass init_table position */},
+  {(bigint) 4 /* 77: AWriteAble < AWriteAble: superclass init_table position */},
   {(bigint) parser___parser_nodes___AWriteAble___n_kwwritable},
 };
 /* 0: Pointer to the classtable */
@@ -50736,17 +51374,15 @@ val_t NEW_AWriteAble_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMethid[77] = {
-  {(bigint) 3039 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMethid[75] = {
+  {(bigint) 3083 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AMethid < AMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AMethid < AMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50757,7 +51393,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50799,7 +51435,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[77] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AMethid < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -50809,11 +51445,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AMethid[77] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AMethid < AMethid: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -50873,18 +51509,16 @@ val_t NEW_AMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[81] = {
-  {(bigint) 3375 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[79] = {
+  {(bigint) 3415 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIdMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIdMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIdMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AIdMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AIdMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3375 /* 8: AIdMethid < AIdMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIdMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AIdMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AIdMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3415 /* 8: AIdMethid < AIdMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -50894,7 +51528,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIdMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIdMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -50936,7 +51570,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[81] = {
   {(bigint) parser___parser_prod___AIdMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIdMethid___visit_all},
-  {(bigint) 1 /* 62: AIdMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -50946,14 +51580,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AIdMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIdMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIdMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AIdMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AIdMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AIdMethid___empty_init},
   {(bigint) parser___parser_prod___AIdMethid___init_aidmethid},
-  {(bigint) 4 /* 79: AIdMethid < AIdMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AIdMethid < AIdMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIdMethid___n_id},
 };
 /* 0: Pointer to the classtable */
@@ -51063,18 +51697,16 @@ val_t NEW_AIdMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[81] = {
-  {(bigint) 3303 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[79] = {
+  {(bigint) 3343 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: APlusMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APlusMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APlusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: APlusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3303 /* 8: APlusMethid < APlusMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APlusMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APlusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: APlusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3343 /* 8: APlusMethid < APlusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51084,7 +51716,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APlusMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APlusMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51126,7 +51758,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[81] = {
   {(bigint) parser___parser_prod___APlusMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APlusMethid___visit_all},
-  {(bigint) 1 /* 62: APlusMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -51136,14 +51768,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APlusMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APlusMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: APlusMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: APlusMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___APlusMethid___empty_init},
   {(bigint) parser___parser_prod___APlusMethid___init_aplusmethid},
-  {(bigint) 4 /* 79: APlusMethid < APlusMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: APlusMethid < APlusMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___APlusMethid___n_plus},
 };
 /* 0: Pointer to the classtable */
@@ -51253,18 +51885,16 @@ val_t NEW_APlusMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[81] = {
-  {(bigint) 3327 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[79] = {
+  {(bigint) 3367 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMinusMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMinusMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMinusMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AMinusMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3327 /* 8: AMinusMethid < AMinusMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMinusMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMinusMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AMinusMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3367 /* 8: AMinusMethid < AMinusMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51274,7 +51904,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMinusMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMinusMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51316,7 +51946,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[81] = {
   {(bigint) parser___parser_prod___AMinusMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMinusMethid___visit_all},
-  {(bigint) 1 /* 62: AMinusMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -51326,14 +51956,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMinusMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMinusMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AMinusMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AMinusMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AMinusMethid___empty_init},
   {(bigint) parser___parser_prod___AMinusMethid___init_aminusmethid},
-  {(bigint) 4 /* 79: AMinusMethid < AMinusMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AMinusMethid < AMinusMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMinusMethid___n_minus},
 };
 /* 0: Pointer to the classtable */
@@ -51443,18 +52073,16 @@ val_t NEW_AMinusMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[81] = {
-  {(bigint) 3251 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[79] = {
+  {(bigint) 3291 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStarMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStarMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AStarMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3251 /* 8: AStarMethid < AStarMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStarMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStarMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AStarMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3291 /* 8: AStarMethid < AStarMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51464,7 +52092,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStarMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStarMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51506,7 +52134,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[81] = {
   {(bigint) parser___parser_prod___AStarMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStarMethid___visit_all},
-  {(bigint) 1 /* 62: AStarMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -51516,14 +52144,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStarMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStarMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AStarMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AStarMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AStarMethid___empty_init},
   {(bigint) parser___parser_prod___AStarMethid___init_astarmethid},
-  {(bigint) 4 /* 79: AStarMethid < AStarMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AStarMethid < AStarMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStarMethid___n_star},
 };
 /* 0: Pointer to the classtable */
@@ -51633,18 +52261,16 @@ val_t NEW_AStarMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[81] = {
-  {(bigint) 3255 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[79] = {
+  {(bigint) 3295 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASlashMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASlashMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASlashMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASlashMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ASlashMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3255 /* 8: ASlashMethid < ASlashMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASlashMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASlashMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ASlashMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3295 /* 8: ASlashMethid < ASlashMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51654,7 +52280,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASlashMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASlashMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51696,7 +52322,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[81] = {
   {(bigint) parser___parser_prod___ASlashMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASlashMethid___visit_all},
-  {(bigint) 1 /* 62: ASlashMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -51706,14 +52332,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASlashMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASlashMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ASlashMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ASlashMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ASlashMethid___empty_init},
   {(bigint) parser___parser_prod___ASlashMethid___init_aslashmethid},
-  {(bigint) 4 /* 79: ASlashMethid < ASlashMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ASlashMethid < ASlashMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASlashMethid___n_slash},
 };
 /* 0: Pointer to the classtable */
@@ -51823,18 +52449,16 @@ val_t NEW_ASlashMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[81] = {
-  {(bigint) 3311 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[79] = {
+  {(bigint) 3351 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APercentMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: APercentMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APercentMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APercentMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: APercentMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3311 /* 8: APercentMethid < APercentMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APercentMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APercentMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: APercentMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3351 /* 8: APercentMethid < APercentMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -51844,7 +52468,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APercentMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APercentMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -51886,7 +52510,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[81] = {
   {(bigint) parser___parser_prod___APercentMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APercentMethid___visit_all},
-  {(bigint) 1 /* 62: APercentMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -51896,14 +52520,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APercentMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APercentMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: APercentMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: APercentMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___APercentMethid___empty_init},
   {(bigint) parser___parser_prod___APercentMethid___init_apercentmethid},
-  {(bigint) 4 /* 79: APercentMethid < APercentMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: APercentMethid < APercentMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___APercentMethid___n_percent},
 };
 /* 0: Pointer to the classtable */
@@ -52013,18 +52637,16 @@ val_t NEW_APercentMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[81] = {
-  {(bigint) 3407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[79] = {
+  {(bigint) 3447 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEqMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEqMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEqMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AEqMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AEqMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3407 /* 8: AEqMethid < AEqMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEqMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AEqMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AEqMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3447 /* 8: AEqMethid < AEqMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52034,7 +52656,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AEqMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AEqMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52076,7 +52698,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[81] = {
   {(bigint) parser___parser_prod___AEqMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AEqMethid___visit_all},
-  {(bigint) 1 /* 62: AEqMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -52086,14 +52708,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AEqMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AEqMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AEqMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AEqMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AEqMethid___empty_init},
   {(bigint) parser___parser_prod___AEqMethid___init_aeqmethid},
-  {(bigint) 4 /* 79: AEqMethid < AEqMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AEqMethid < AEqMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEqMethid___n_eq},
 };
 /* 0: Pointer to the classtable */
@@ -52203,18 +52825,16 @@ val_t NEW_AEqMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[81] = {
-  {(bigint) 3323 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[79] = {
+  {(bigint) 3363 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANeMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANeMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANeMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ANeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ANeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3323 /* 8: ANeMethid < ANeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANeMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ANeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ANeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3363 /* 8: ANeMethid < ANeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52224,7 +52844,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ANeMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ANeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52266,7 +52886,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[81] = {
   {(bigint) parser___parser_prod___ANeMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANeMethid___visit_all},
-  {(bigint) 1 /* 62: ANeMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -52276,14 +52896,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ANeMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ANeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ANeMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ANeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ANeMethid___empty_init},
   {(bigint) parser___parser_prod___ANeMethid___init_anemethid},
-  {(bigint) 4 /* 79: ANeMethid < ANeMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ANeMethid < ANeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANeMethid___n_ne},
 };
 /* 0: Pointer to the classtable */
@@ -52393,18 +53013,16 @@ val_t NEW_ANeMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[81] = {
-  {(bigint) 3351 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[79] = {
+  {(bigint) 3391 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALeMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALeMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALeMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ALeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ALeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3351 /* 8: ALeMethid < ALeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALeMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ALeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ALeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3391 /* 8: ALeMethid < ALeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52414,7 +53032,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALeMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52456,7 +53074,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[81] = {
   {(bigint) parser___parser_prod___ALeMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALeMethid___visit_all},
-  {(bigint) 1 /* 62: ALeMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -52466,14 +53084,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALeMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ALeMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ALeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALeMethid___empty_init},
   {(bigint) parser___parser_prod___ALeMethid___init_alemethid},
-  {(bigint) 4 /* 79: ALeMethid < ALeMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ALeMethid < ALeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALeMethid___n_le},
 };
 /* 0: Pointer to the classtable */
@@ -52583,18 +53201,16 @@ val_t NEW_ALeMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[81] = {
-  {(bigint) 3387 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[79] = {
+  {(bigint) 3427 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGeMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGeMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGeMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AGeMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AGeMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3387 /* 8: AGeMethid < AGeMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGeMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AGeMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AGeMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3427 /* 8: AGeMethid < AGeMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52604,7 +53220,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AGeMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AGeMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52646,7 +53262,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[81] = {
   {(bigint) parser___parser_prod___AGeMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGeMethid___visit_all},
-  {(bigint) 1 /* 62: AGeMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -52656,14 +53272,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AGeMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AGeMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AGeMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AGeMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGeMethid___empty_init},
   {(bigint) parser___parser_prod___AGeMethid___init_agemethid},
-  {(bigint) 4 /* 79: AGeMethid < AGeMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AGeMethid < AGeMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGeMethid___n_ge},
 };
 /* 0: Pointer to the classtable */
@@ -52773,18 +53389,16 @@ val_t NEW_AGeMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[81] = {
-  {(bigint) 3343 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[79] = {
+  {(bigint) 3383 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALtMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALtMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALtMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ALtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ALtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3343 /* 8: ALtMethid < ALtMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALtMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ALtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ALtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3383 /* 8: ALtMethid < ALtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52794,7 +53408,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALtMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALtMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -52836,7 +53450,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[81] = {
   {(bigint) parser___parser_prod___ALtMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALtMethid___visit_all},
-  {(bigint) 1 /* 62: ALtMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -52846,14 +53460,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALtMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALtMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ALtMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ALtMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALtMethid___empty_init},
   {(bigint) parser___parser_prod___ALtMethid___init_altmethid},
-  {(bigint) 4 /* 79: ALtMethid < ALtMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ALtMethid < ALtMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALtMethid___n_lt},
 };
 /* 0: Pointer to the classtable */
@@ -52963,18 +53577,16 @@ val_t NEW_ALtMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[81] = {
-  {(bigint) 3379 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[79] = {
+  {(bigint) 3419 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGtMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGtMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGtMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AGtMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AGtMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3379 /* 8: AGtMethid < AGtMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGtMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AGtMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AGtMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3419 /* 8: AGtMethid < AGtMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -52984,7 +53596,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AGtMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AGtMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53026,7 +53638,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[81] = {
   {(bigint) parser___parser_prod___AGtMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGtMethid___visit_all},
-  {(bigint) 1 /* 62: AGtMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53036,14 +53648,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AGtMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AGtMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AGtMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AGtMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGtMethid___empty_init},
   {(bigint) parser___parser_prod___AGtMethid___init_agtmethid},
-  {(bigint) 4 /* 79: AGtMethid < AGtMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AGtMethid < AGtMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGtMethid___n_gt},
 };
 /* 0: Pointer to the classtable */
@@ -53153,18 +53765,16 @@ val_t NEW_AGtMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[82] = {
-  {(bigint) 3347 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[80] = {
+  {(bigint) 3387 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALlMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALlMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALlMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ALlMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ALlMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3347 /* 8: ALlMethid < ALlMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALlMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ALlMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ALlMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3387 /* 8: ALlMethid < ALlMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53174,7 +53784,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALlMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALlMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53216,7 +53826,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[82] = {
   {(bigint) parser___parser_prod___ALlMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALlMethid___visit_all},
-  {(bigint) 1 /* 62: ALlMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53226,14 +53836,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALlMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALlMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ALlMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ALlMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ALlMethid___empty_init},
   {(bigint) parser___parser_prod___ALlMethid___init_allmethid},
-  {(bigint) 4 /* 79: ALlMethid < ALlMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ALlMethid < ALlMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALlMethid___n_ll},
   {(bigint) parser___parser_nodes___ALlMethid___n_ll__eq},
 };
@@ -53344,18 +53954,16 @@ val_t NEW_ALlMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[82] = {
-  {(bigint) 3383 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[80] = {
+  {(bigint) 3423 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGgMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGgMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGgMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AGgMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AGgMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3383 /* 8: AGgMethid < AGgMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGgMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AGgMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AGgMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3423 /* 8: AGgMethid < AGgMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53365,7 +53973,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AGgMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AGgMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53407,7 +54015,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[82] = {
   {(bigint) parser___parser_prod___AGgMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGgMethid___visit_all},
-  {(bigint) 1 /* 62: AGgMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53417,14 +54025,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AGgMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AGgMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AGgMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AGgMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AGgMethid___empty_init},
   {(bigint) parser___parser_prod___AGgMethid___init_aggmethid},
-  {(bigint) 4 /* 79: AGgMethid < AGgMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AGgMethid < AGgMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AGgMethid___n_gg},
   {(bigint) parser___parser_nodes___AGgMethid___n_gg__eq},
 };
@@ -53535,18 +54143,16 @@ val_t NEW_AGgMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[82] = {
-  {(bigint) 3439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[80] = {
+  {(bigint) 3479 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ABraMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ABraMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3439 /* 8: ABraMethid < ABraMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABraMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ABraMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ABraMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3479 /* 8: ABraMethid < ABraMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53556,7 +54162,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ABraMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ABraMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53598,7 +54204,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[82] = {
   {(bigint) parser___parser_prod___ABraMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABraMethid___visit_all},
-  {(bigint) 1 /* 62: ABraMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53608,14 +54214,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ABraMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ABraMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ABraMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ABraMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ABraMethid___empty_init},
   {(bigint) parser___parser_prod___ABraMethid___init_abramethid},
-  {(bigint) 4 /* 79: ABraMethid < ABraMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ABraMethid < ABraMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraMethid___n_obra},
   {(bigint) parser___parser_nodes___ABraMethid___n_cbra},
 };
@@ -53734,18 +54340,16 @@ val_t NEW_ABraMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[81] = {
-  {(bigint) 3247 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[79] = {
+  {(bigint) 3287 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarshipMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarshipMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStarshipMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStarshipMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AStarshipMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3247 /* 8: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStarshipMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStarshipMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AStarshipMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3287 /* 8: AStarshipMethid < AStarshipMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53755,7 +54359,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStarshipMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStarshipMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53797,7 +54401,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[81] = {
   {(bigint) parser___parser_prod___AStarshipMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStarshipMethid___visit_all},
-  {(bigint) 1 /* 62: AStarshipMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53807,14 +54411,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipMethid[81] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStarshipMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStarshipMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AStarshipMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AStarshipMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AStarshipMethid___empty_init},
   {(bigint) parser___parser_prod___AStarshipMethid___init_astarshipmethid},
-  {(bigint) 4 /* 79: AStarshipMethid < AStarshipMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AStarshipMethid < AStarshipMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStarshipMethid___n_starship},
 };
 /* 0: Pointer to the classtable */
@@ -53924,18 +54528,16 @@ val_t NEW_AStarshipMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[82] = {
-  {(bigint) 3459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[80] = {
+  {(bigint) 3499 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssignMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAssignMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAssignMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAssignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: AAssignMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3459 /* 8: AAssignMethid < AAssignMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAssignMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAssignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: AAssignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3499 /* 8: AAssignMethid < AAssignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -53945,7 +54547,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[82] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAssignMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAssignMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -53987,7 +54589,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[82] = {
   {(bigint) parser___parser_prod___AAssignMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAssignMethid___visit_all},
-  {(bigint) 1 /* 62: AAssignMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -53997,14 +54599,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignMethid[82] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAssignMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAssignMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: AAssignMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: AAssignMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___AAssignMethid___empty_init},
   {(bigint) parser___parser_prod___AAssignMethid___init_aassignmethid},
-  {(bigint) 4 /* 79: AAssignMethid < AAssignMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: AAssignMethid < AAssignMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignMethid___n_id},
   {(bigint) parser___parser_nodes___AAssignMethid___n_assign},
 };
@@ -54123,18 +54725,16 @@ val_t NEW_AAssignMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[83] = {
-  {(bigint) 3435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[81] = {
+  {(bigint) 3475 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraassignMethid" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraassignMethid < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraassignMethid < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ABraassignMethid < Prod: superclass typecheck marker */},
-  {(bigint) 3039 /* 7: ABraassignMethid < AMethid: superclass typecheck marker */},
-  {(bigint) 3435 /* 8: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABraassignMethid < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ABraassignMethid < Prod: superclass typecheck marker */},
+  {(bigint) 3083 /* 7: ABraassignMethid < AMethid: superclass typecheck marker */},
+  {(bigint) 3475 /* 8: ABraassignMethid < ABraassignMethid: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54144,7 +54744,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ABraassignMethid < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ABraassignMethid < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54186,7 +54786,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[83] = {
   {(bigint) parser___parser_prod___ABraassignMethid___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABraassignMethid___visit_all},
-  {(bigint) 1 /* 62: ABraassignMethid < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -54196,14 +54796,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraassignMethid[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ABraassignMethid < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ABraassignMethid < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___ANode___accept_property_builder},
   {(bigint) syntax___mmbuilder___AMethid___name},
-  {(bigint) 3 /* 76: ABraassignMethid < AMethid: superclass init_table position */},
+  {(bigint) 3 /* 74: ABraassignMethid < AMethid: superclass init_table position */},
   {(bigint) parser___parser_prod___ABraassignMethid___empty_init},
   {(bigint) parser___parser_prod___ABraassignMethid___init_abraassignmethid},
-  {(bigint) 4 /* 79: ABraassignMethid < ABraassignMethid: superclass init_table position */},
+  {(bigint) 4 /* 77: ABraassignMethid < ABraassignMethid: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_obra},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_cbra},
   {(bigint) parser___parser_nodes___ABraassignMethid___n_assign},
@@ -54331,17 +54931,15 @@ val_t NEW_ABraassignMethid_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASignature[83] = {
-  {(bigint) 3011 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASignature[81] = {
+  {(bigint) 3055 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASignature" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASignature < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASignature < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASignature < Prod: superclass typecheck marker */},
-  {(bigint) 3011 /* 7: ASignature < ASignature: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASignature < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASignature < Prod: superclass typecheck marker */},
+  {(bigint) 3055 /* 7: ASignature < ASignature: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54352,7 +54950,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASignature < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASignature < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54394,7 +54992,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[83] = {
   {(bigint) parser___parser_prod___ASignature___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASignature___visit_all},
-  {(bigint) 1 /* 62: ASignature < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -54404,13 +55002,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ASignature[83] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASignature < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASignature < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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 /* 78: ASignature < ASignature: superclass init_table position */},
+  {(bigint) 3 /* 76: ASignature < ASignature: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASignature___n_params},
   {(bigint) parser___parser_nodes___ASignature___n_type},
   {(bigint) parser___parser_nodes___ASignature___n_closure_decls},
@@ -54545,17 +55143,15 @@ val_t NEW_ASignature_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParam[86] = {
-  {(bigint) 3023 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AParam[84] = {
+  {(bigint) 3067 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AParam" /* 2: Class Name */},
   {(bigint) 3 /* 3: AParam < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AParam < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AParam < Prod: superclass typecheck marker */},
-  {(bigint) 3023 /* 7: AParam < AParam: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AParam < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AParam < Prod: superclass typecheck marker */},
+  {(bigint) 3067 /* 7: AParam < AParam: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54566,7 +55162,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AParam < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AParam < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54608,7 +55204,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[86] = {
   {(bigint) parser___parser_prod___AParam___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AParam___visit_all},
-  {(bigint) 1 /* 62: AParam < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -54618,7 +55214,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AParam < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AParam < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AParam___stype},
   {(bigint) syntax___mmbuilder___AParam___stype__eq},
@@ -54628,7 +55224,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParam[86] = {
   {(bigint) syntax___mmbuilder___AParam___variable},
   {(bigint) parser___parser_prod___AParam___empty_init},
   {(bigint) parser___parser_prod___AParam___init_aparam},
-  {(bigint) 3 /* 82: AParam < AParam: superclass init_table position */},
+  {(bigint) 3 /* 80: AParam < AParam: superclass init_table position */},
   {(bigint) parser___parser_nodes___AParam___n_id},
   {(bigint) parser___parser_nodes___AParam___n_type},
   {(bigint) parser___parser_nodes___AParam___n_dotdotdot},
@@ -54658,7 +55254,7 @@ 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;
-  /* ./syntax//mmbuilder.nit:1358 */
+  /* ./syntax//mmbuilder.nit:1318 */
   REGB0 = TAG_Int(0);
   ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0]) = REGB0;
   /* ./parser//parser_nodes.nit:647 */
@@ -54766,17 +55362,15 @@ val_t NEW_AParam_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[87] = {
-  {(bigint) 3079 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[85] = {
+  {(bigint) 3123 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureDecl" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClosureDecl < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AClosureDecl < Prod: superclass typecheck marker */},
-  {(bigint) 3079 /* 7: AClosureDecl < AClosureDecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClosureDecl < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AClosureDecl < Prod: superclass typecheck marker */},
+  {(bigint) 3123 /* 7: AClosureDecl < AClosureDecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -54787,7 +55381,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AClosureDecl < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AClosureDecl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -54829,7 +55423,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[87] = {
   {(bigint) parser___parser_prod___AClosureDecl___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AClosureDecl___visit_all},
-  {(bigint) 1 /* 62: AClosureDecl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -54839,14 +55433,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDecl[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClosureDecl < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AClosureDecl < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(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 /* 79: AClosureDecl < AClosureDecl: superclass init_table position */},
+  {(bigint) 3 /* 77: AClosureDecl < AClosureDecl: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureDecl___n_kwbreak},
   {(bigint) parser___parser_nodes___AClosureDecl___n_bang},
   {(bigint) parser___parser_nodes___AClosureDecl___n_id},
@@ -54882,7 +55476,7 @@ 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;
-  /* ./syntax//mmbuilder.nit:1399 */
+  /* ./syntax//mmbuilder.nit:1359 */
   REGB0 = TAG_Int(0);
   ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0]) = REGB0;
   /* ./parser//parser_nodes.nit:652 */
@@ -55004,17 +55598,15 @@ val_t NEW_AClosureDecl_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AType[87] = {
-  {(bigint) 3003 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AType[85] = {
+  {(bigint) 3047 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AType" /* 2: Class Name */},
   {(bigint) 3 /* 3: AType < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AType < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AType < Prod: superclass typecheck marker */},
-  {(bigint) 3003 /* 7: AType < AType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AType < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AType < Prod: superclass typecheck marker */},
+  {(bigint) 3047 /* 7: AType < AType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55025,7 +55617,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AType < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AType < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55067,7 +55659,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[87] = {
   {(bigint) parser___parser_prod___AType___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AType___visit_all},
-  {(bigint) 1 /* 62: AType < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -55077,7 +55669,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AType < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AType < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___mmbuilder___AType___check_visibility},
   {(bigint) syntax___typing___AType___is_typed},
@@ -55088,7 +55680,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AType[87] = {
   {(bigint) syntax___syntax_base___AType___check_conform},
   {(bigint) parser___parser_prod___AType___empty_init},
   {(bigint) parser___parser_prod___AType___init_atype},
-  {(bigint) 3 /* 83: AType < AType: superclass init_table position */},
+  {(bigint) 3 /* 81: AType < AType: superclass init_table position */},
   {(bigint) parser___parser_nodes___AType___n_kwnullable},
   {(bigint) parser___parser_nodes___AType___n_id},
   {(bigint) parser___parser_nodes___AType___n_types},
@@ -55234,17 +55826,15 @@ val_t NEW_AType_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALabel[79] = {
-  {(bigint) 3047 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALabel[77] = {
+  {(bigint) 3091 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALabel" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALabel < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALabel < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ALabel < Prod: superclass typecheck marker */},
-  {(bigint) 3047 /* 7: ALabel < ALabel: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALabel < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ALabel < Prod: superclass typecheck marker */},
+  {(bigint) 3091 /* 7: ALabel < ALabel: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55255,7 +55845,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALabel < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALabel < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55297,7 +55887,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[79] = {
   {(bigint) parser___parser_prod___ALabel___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALabel___visit_all},
-  {(bigint) 1 /* 62: ALabel < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -55307,11 +55897,11 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabel[79] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALabel < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALabel < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___ALabel___empty_init},
   {(bigint) parser___parser_prod___ALabel___init_alabel},
-  {(bigint) 3 /* 76: ALabel < ALabel: superclass init_table position */},
+  {(bigint) 3 /* 74: ALabel < ALabel: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabel___n_kwlabel},
   {(bigint) parser___parser_nodes___ALabel___n_id},
 };
@@ -55429,17 +56019,15 @@ val_t NEW_ALabel_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AExpr[84] = {
-  {(bigint) 3067 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AExpr[82] = {
+  {(bigint) 3111 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55450,7 +56038,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[84] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55492,7 +56080,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[84] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -55502,12 +56090,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AExpr[84] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -55591,18 +56179,16 @@ val_t NEW_AExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[88] = {
-  {(bigint) 3447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[86] = {
+  {(bigint) 3487 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABlockExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABlockExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABlockExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ABlockExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABlockExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3447 /* 8: ABlockExpr < ABlockExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABlockExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ABlockExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABlockExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3487 /* 8: ABlockExpr < ABlockExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55612,7 +56198,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ABlockExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ABlockExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55654,7 +56240,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[88] = {
   {(bigint) parser___parser_prod___ABlockExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABlockExpr___visit_all},
-  {(bigint) 1 /* 62: ABlockExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -55664,12 +56250,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ABlockExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ABlockExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ABlockExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -55678,7 +56264,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABlockExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ABlockExpr___empty_init},
   {(bigint) parser___parser_prod___ABlockExpr___init_ablockexpr},
-  {(bigint) 4 /* 86: ABlockExpr < ABlockExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: ABlockExpr < ABlockExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABlockExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
@@ -55807,18 +56393,16 @@ val_t NEW_ABlockExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[93] = {
-  {(bigint) 3207 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[91] = {
+  {(bigint) 3247 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVardeclExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVardeclExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVardeclExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AVardeclExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AVardeclExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3207 /* 8: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVardeclExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AVardeclExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AVardeclExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3247 /* 8: AVardeclExpr < AVardeclExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -55828,7 +56412,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVardeclExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVardeclExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -55870,7 +56454,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[93] = {
   {(bigint) parser___parser_prod___AVardeclExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AVardeclExpr___visit_all},
-  {(bigint) 1 /* 62: AVardeclExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -55880,12 +56464,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVardeclExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVardeclExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AVardeclExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -55895,7 +56479,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVardeclExpr[93] = {
   {(bigint) syntax___typing___AVardeclExpr___variable},
   {(bigint) parser___parser_prod___AVardeclExpr___empty_init},
   {(bigint) parser___parser_prod___AVardeclExpr___init_avardeclexpr},
-  {(bigint) 4 /* 87: AVardeclExpr < AVardeclExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: AVardeclExpr < AVardeclExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_kwvar},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_id},
   {(bigint) parser___parser_nodes___AVardeclExpr___n_type},
@@ -56052,18 +56636,16 @@ val_t NEW_AVardeclExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[89] = {
-  {(bigint) 3267 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[87] = {
+  {(bigint) 3307 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AReturnExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AReturnExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AReturnExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AReturnExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AReturnExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3267 /* 8: AReturnExpr < AReturnExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AReturnExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AReturnExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AReturnExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3307 /* 8: AReturnExpr < AReturnExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56073,7 +56655,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AReturnExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AReturnExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56115,7 +56697,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[89] = {
   {(bigint) parser___parser_prod___AReturnExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AReturnExpr___visit_all},
-  {(bigint) 1 /* 62: AReturnExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -56125,12 +56707,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AReturnExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AReturnExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AReturnExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -56139,7 +56721,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReturnExpr[89] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AReturnExpr___empty_init},
   {(bigint) parser___parser_prod___AReturnExpr___init_areturnexpr},
-  {(bigint) 4 /* 86: AReturnExpr < AReturnExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AReturnExpr < AReturnExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReturnExpr___n_kwreturn},
   {(bigint) parser___parser_nodes___AReturnExpr___n_expr},
 };
@@ -56270,16 +56852,14 @@ val_t NEW_AReturnExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALabelable[74] = {
-  {(bigint) 3043 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALabelable[72] = {
+  {(bigint) 3087 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALabelable" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALabelable < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALabelable < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: ALabelable < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ALabelable < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALabelable < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: ALabelable < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ALabelable < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56291,7 +56871,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabelable[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ALabelable < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ALabelable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56333,17 +56913,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ALabelable[74] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: ALabelable < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: ALabelable < 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) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 69: ALabelable < ALabelable: superclass init_table position */},
+  {(bigint) 3 /* 67: ALabelable < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ALabelable < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ALabelable < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
 };
 /* 0: Pointer to the classtable */
@@ -56410,19 +56990,17 @@ val_t NEW_ALabelable_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[93] = {
-  {(bigint) 3671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[91] = {
+  {(bigint) 3707 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABreakExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABreakExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABreakExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: ABreakExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABreakExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABreakExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3399 /* 8: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3671 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABreakExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: ABreakExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABreakExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABreakExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3439 /* 8: ABreakExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3707 /* 9: ABreakExpr < ABreakExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56431,7 +57009,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ABreakExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ABreakExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56473,35 +57051,35 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakExpr[93] = {
   {(bigint) parser___parser_prod___ABreakExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABreakExpr___visit_all},
-  {(bigint) 2 /* 62: ABreakExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ABreakExpr___after_typing},
-  {(bigint) 4 /* 69: ABreakExpr < ALabelable: superclass init_table position */},
+  {(bigint) 4 /* 67: ABreakExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ABreakExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: ABreakExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 77: ABreakExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: ABreakExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: 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 /* 90: ABreakExpr < ABreakExpr: superclass init_table position */},
+  {(bigint) 6 /* 88: ABreakExpr < ABreakExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABreakExpr___n_kwbreak},
   {(bigint) parser___parser_nodes___ABreakExpr___n_expr},
 };
@@ -56640,18 +57218,16 @@ val_t NEW_ABreakExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[88] = {
-  {(bigint) 3491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[86] = {
+  {(bigint) 3531 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbortExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAbortExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAbortExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAbortExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAbortExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3491 /* 8: AAbortExpr < AAbortExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAbortExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAbortExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAbortExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3531 /* 8: AAbortExpr < AAbortExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56661,7 +57237,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAbortExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAbortExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56703,7 +57279,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[88] = {
   {(bigint) parser___parser_prod___AAbortExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAbortExpr___visit_all},
-  {(bigint) 1 /* 62: AAbortExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -56713,12 +57289,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAbortExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAbortExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAbortExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -56727,7 +57303,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAbortExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAbortExpr___empty_init},
   {(bigint) parser___parser_prod___AAbortExpr___init_aabortexpr},
-  {(bigint) 4 /* 86: AAbortExpr < AAbortExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AAbortExpr < AAbortExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAbortExpr___n_kwabort},
 };
 /* 0: Pointer to the classtable */
@@ -56852,19 +57428,17 @@ val_t NEW_AAbortExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[93] = {
-  {(bigint) 3655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[91] = {
+  {(bigint) 3691 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AContinueExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AContinueExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AContinueExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: AContinueExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AContinueExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AContinueExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3399 /* 8: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
-  {(bigint) 3655 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AContinueExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: AContinueExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AContinueExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AContinueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3439 /* 8: AContinueExpr < AEscapeExpr: superclass typecheck marker */},
+  {(bigint) 3691 /* 9: AContinueExpr < AContinueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -56873,7 +57447,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AContinueExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AContinueExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -56915,35 +57489,35 @@ const classtable_elt_t VFT_parser___parser_nodes___AContinueExpr[93] = {
   {(bigint) parser___parser_prod___AContinueExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AContinueExpr___visit_all},
-  {(bigint) 2 /* 62: AContinueExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AContinueExpr___after_typing},
-  {(bigint) 4 /* 69: AContinueExpr < ALabelable: superclass init_table position */},
+  {(bigint) 4 /* 67: AContinueExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AContinueExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AContinueExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 77: AContinueExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: AContinueExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: 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 /* 90: AContinueExpr < AContinueExpr: superclass init_table position */},
+  {(bigint) 6 /* 88: AContinueExpr < AContinueExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AContinueExpr___n_kwcontinue},
   {(bigint) parser___parser_nodes___AContinueExpr___n_expr},
 };
@@ -57080,19 +57654,17 @@ val_t NEW_AContinueExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[93] = {
-  {(bigint) 3643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[91] = {
+  {(bigint) 3679 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADoExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ADoExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ADoExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: ADoExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ADoExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ADoExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: ADoExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3643 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ADoExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: ADoExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ADoExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ADoExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 8: ADoExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3679 /* 9: ADoExpr < ADoExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57101,7 +57673,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ADoExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ADoExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57143,35 +57715,35 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoExpr[93] = {
   {(bigint) parser___parser_prod___ADoExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ADoExpr___visit_all},
-  {(bigint) 2 /* 62: ADoExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ADoExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 69: ADoExpr < ALabelable: superclass init_table position */},
+  {(bigint) 5 /* 67: ADoExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ADoExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: ADoExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: ADoExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: ADoExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 82: 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 /* 90: ADoExpr < ADoExpr: superclass init_table position */},
+  {(bigint) 6 /* 88: ADoExpr < ADoExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADoExpr___n_kwdo},
   {(bigint) parser___parser_nodes___ADoExpr___n_block},
 };
@@ -57310,18 +57882,16 @@ val_t NEW_ADoExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[91] = {
-  {(bigint) 3371 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[89] = {
+  {(bigint) 3411 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIfExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIfExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIfExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AIfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AIfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3371 /* 8: AIfExpr < AIfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIfExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AIfExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AIfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3411 /* 8: AIfExpr < AIfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57331,7 +57901,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIfExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57373,7 +57943,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[91] = {
   {(bigint) parser___parser_prod___AIfExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIfExpr___visit_all},
-  {(bigint) 1 /* 62: AIfExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -57383,12 +57953,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIfExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AIfExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -57397,7 +57967,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AIfExpr___empty_init},
   {(bigint) parser___parser_prod___AIfExpr___init_aifexpr},
-  {(bigint) 4 /* 86: AIfExpr < AIfExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AIfExpr < AIfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIfExpr___n_kwif},
   {(bigint) parser___parser_nodes___AIfExpr___n_expr},
   {(bigint) parser___parser_nodes___AIfExpr___n_then},
@@ -57546,18 +58116,16 @@ val_t NEW_AIfExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[93] = {
-  {(bigint) 3367 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[91] = {
+  {(bigint) 3407 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIfexprExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIfexprExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIfexprExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AIfexprExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AIfexprExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3367 /* 8: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIfexprExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AIfexprExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AIfexprExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3407 /* 8: AIfexprExpr < AIfexprExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57567,7 +58135,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIfexprExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIfexprExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57609,7 +58177,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[93] = {
   {(bigint) parser___parser_prod___AIfexprExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIfexprExpr___visit_all},
-  {(bigint) 1 /* 62: AIfexprExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -57619,12 +58187,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIfexprExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIfexprExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AIfexprExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -57633,7 +58201,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIfexprExpr[93] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AIfexprExpr___empty_init},
   {(bigint) parser___parser_prod___AIfexprExpr___init_aifexprexpr},
-  {(bigint) 4 /* 86: AIfexprExpr < AIfexprExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AIfexprExpr < AIfexprExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_kwif},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_expr},
   {(bigint) parser___parser_nodes___AIfexprExpr___n_kwthen},
@@ -57803,19 +58371,17 @@ val_t NEW_AIfexprExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[95] = {
-  {(bigint) 3535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[93] = {
+  {(bigint) 3571 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AWhileExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AWhileExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AWhileExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: AWhileExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AWhileExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AWhileExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AWhileExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3535 /* 9: AWhileExpr < AWhileExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AWhileExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: AWhileExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AWhileExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AWhileExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 8: AWhileExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3571 /* 9: AWhileExpr < AWhileExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -57824,7 +58390,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[95] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AWhileExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AWhileExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -57866,35 +58432,35 @@ const classtable_elt_t VFT_parser___parser_nodes___AWhileExpr[95] = {
   {(bigint) parser___parser_prod___AWhileExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AWhileExpr___visit_all},
-  {(bigint) 2 /* 62: AWhileExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AWhileExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 69: AWhileExpr < ALabelable: superclass init_table position */},
+  {(bigint) 5 /* 67: AWhileExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AWhileExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AWhileExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AWhileExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: AWhileExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 82: 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 /* 90: AWhileExpr < AWhileExpr: superclass init_table position */},
+  {(bigint) 6 /* 88: AWhileExpr < AWhileExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AWhileExpr___n_kwwhile},
   {(bigint) parser___parser_nodes___AWhileExpr___n_expr},
   {(bigint) parser___parser_nodes___AWhileExpr___n_kwdo},
@@ -58051,19 +58617,17 @@ val_t NEW_AWhileExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[93] = {
-  {(bigint) 3591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[91] = {
+  {(bigint) 3627 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALoopExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALoopExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALoopExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: ALoopExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ALoopExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ALoopExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: ALoopExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3591 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALoopExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: ALoopExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ALoopExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ALoopExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 8: ALoopExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3627 /* 9: ALoopExpr < ALoopExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58072,7 +58636,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ALoopExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ALoopExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58114,35 +58678,35 @@ const classtable_elt_t VFT_parser___parser_nodes___ALoopExpr[93] = {
   {(bigint) parser___parser_prod___ALoopExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALoopExpr___visit_all},
-  {(bigint) 2 /* 62: ALoopExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ALoopExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 69: ALoopExpr < ALabelable: superclass init_table position */},
+  {(bigint) 5 /* 67: ALoopExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: ALoopExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: ALoopExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: ALoopExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: ALoopExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 82: 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 /* 90: ALoopExpr < ALoopExpr: superclass init_table position */},
+  {(bigint) 6 /* 88: ALoopExpr < ALoopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALoopExpr___n_kwloop},
   {(bigint) parser___parser_nodes___ALoopExpr___n_block},
 };
@@ -58281,19 +58845,17 @@ val_t NEW_ALoopExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AForExpr[98] = {
-  {(bigint) 3623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AForExpr[96] = {
+  {(bigint) 3659 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AForExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AForExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AForExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: AForExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AForExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AForExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AForExpr < AAbsControl: superclass typecheck marker */},
-  {(bigint) 3623 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AForExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: AForExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AForExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AForExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 8: AForExpr < AAbsControl: superclass typecheck marker */},
+  {(bigint) 3659 /* 9: AForExpr < AForExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58302,7 +58864,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AForExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AForExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58344,29 +58906,29 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[98] = {
   {(bigint) parser___parser_prod___AForExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AForExpr___visit_all},
-  {(bigint) 2 /* 62: AForExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___AForExpr___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 5 /* 69: AForExpr < ALabelable: superclass init_table position */},
+  {(bigint) 5 /* 67: AForExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AForExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AForExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AForExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: AForExpr < AAbsControl: superclass init_table position */},
+  {(bigint) 0 /* 82: AForExpr < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___AForExpr___process_control_inside},
@@ -58374,7 +58936,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AForExpr[98] = {
   {(bigint) syntax___typing___AForExpr___variables},
   {(bigint) parser___parser_prod___AForExpr___empty_init},
   {(bigint) parser___parser_prod___AForExpr___init_aforexpr},
-  {(bigint) 6 /* 92: AForExpr < AForExpr: superclass init_table position */},
+  {(bigint) 6 /* 90: AForExpr < AForExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AForExpr___n_kwfor},
   {(bigint) parser___parser_nodes___AForExpr___n_ids},
   {(bigint) parser___parser_nodes___AForExpr___n_expr},
@@ -58544,18 +59106,16 @@ val_t NEW_AForExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[91] = {
-  {(bigint) 3467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[89] = {
+  {(bigint) 3507 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssertExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAssertExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAssertExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAssertExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAssertExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3467 /* 8: AAssertExpr < AAssertExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAssertExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAssertExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAssertExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3507 /* 8: AAssertExpr < AAssertExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58565,7 +59125,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAssertExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAssertExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58607,7 +59167,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[91] = {
   {(bigint) parser___parser_prod___AAssertExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAssertExpr___visit_all},
-  {(bigint) 1 /* 62: AAssertExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -58617,12 +59177,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAssertExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAssertExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAssertExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -58631,7 +59191,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssertExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAssertExpr___empty_init},
   {(bigint) parser___parser_prod___AAssertExpr___init_aassertexpr},
-  {(bigint) 4 /* 86: AAssertExpr < AAssertExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AAssertExpr < AAssertExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssertExpr___n_kwassert},
   {(bigint) parser___parser_nodes___AAssertExpr___n_id},
   {(bigint) parser___parser_nodes___AAssertExpr___n_expr},
@@ -58780,18 +59340,16 @@ val_t NEW_AAssertExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[90] = {
-  {(bigint) 3463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[88] = {
+  {(bigint) 3503 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssignFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAssignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAssignFormExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAssignFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAssignFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: AAssignFormExpr < AAssignFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAssignFormExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAssignFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAssignFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 8: AAssignFormExpr < AAssignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58801,7 +59359,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAssignFormExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAssignFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -58843,7 +59401,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[90] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAssignFormExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAssignFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -58853,12 +59411,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAssignFormExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAssignFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAssignFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AAssignFormExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -58868,7 +59426,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignFormExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 87: AAssignFormExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: AAssignFormExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
 };
@@ -58962,18 +59520,16 @@ val_t NEW_AAssignFormExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[92] = {
-  {(bigint) 3271 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[90] = {
+  {(bigint) 3311 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AReassignFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AReassignFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AReassignFormExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AReassignFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AReassignFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AReassignFormExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AReassignFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AReassignFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: AReassignFormExpr < AReassignFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -58983,7 +59539,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[92] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AReassignFormExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AReassignFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59025,7 +59581,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[92] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AReassignFormExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AReassignFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -59035,12 +59591,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AReassignFormExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AReassignFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AReassignFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AReassignFormExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -59052,7 +59608,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AReassignFormExpr[92] = {
   {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 4 /* 89: AReassignFormExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 87: AReassignFormExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
 };
@@ -59147,19 +59703,17 @@ val_t NEW_AReassignFormExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[91] = {
-  {(bigint) 3579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[89] = {
+  {(bigint) 3615 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOnceExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AOnceExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AOnceExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AOnceExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AOnceExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3287 /* 8: AOnceExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 3579 /* 9: AOnceExpr < AOnceExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AOnceExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AOnceExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AOnceExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3327 /* 8: AOnceExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3615 /* 9: AOnceExpr < AOnceExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59168,7 +59722,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AOnceExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AOnceExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59210,7 +59764,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[91] = {
   {(bigint) parser___parser_prod___AOnceExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AOnceExpr___visit_all},
-  {(bigint) 2 /* 62: AOnceExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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},
@@ -59220,24 +59774,24 @@ const classtable_elt_t VFT_parser___parser_nodes___AOnceExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AOnceExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AOnceExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AOnceExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: AOnceExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AOnceExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: AOnceExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: AOnceExpr < AProxyExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) parser___parser_prod___AOnceExpr___empty_init},
   {(bigint) parser___parser_prod___AOnceExpr___init_aonceexpr},
-  {(bigint) 5 /* 89: AOnceExpr < AOnceExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AOnceExpr < AOnceExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOnceExpr___n_kwonce},
 };
 /* 0: Pointer to the classtable */
@@ -59370,28 +59924,26 @@ val_t NEW_AOnceExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[113] = {
-  {(bigint) 3747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[111] = {
+  {(bigint) 3779 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASendExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASendExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ASendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ASendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASendExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ASendExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ASendExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ASendExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ASendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ASendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ASendExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ASendExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ASendExpr < ASendExpr: 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) 5 /* 20: ASendExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ASendExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59433,7 +59985,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[113] = {
   {(bigint) parser___parser_prod___ASendExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 62: ASendExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: ASendExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -59441,14 +59993,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[113] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ASendExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ASendExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ASendExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ASendExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ASendExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: ASendExpr < 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},
@@ -59467,13 +60019,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[113] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ASendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: ASendExpr < 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 /* 102: ASendExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ASendExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASendExpr___name},
@@ -59481,7 +60033,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASendExpr[113] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ASendExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ASendExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
 };
@@ -59627,28 +60179,26 @@ val_t NEW_ASendExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[117] = {
-  {(bigint) 3771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[115] = {
+  {(bigint) 3803 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABinopExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABinopExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABinopExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ABinopExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABinopExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABinopExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ABinopExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ABinopExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ABinopExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ABinopExpr < ABinopExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABinopExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ABinopExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABinopExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABinopExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ABinopExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ABinopExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ABinopExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ABinopExpr < ABinopExpr: 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) 5 /* 20: ABinopExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ABinopExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59690,7 +60240,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[117] = {
   {(bigint) parser___parser_prod___ABinopExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABinopExpr___visit_all},
-  {(bigint) 4 /* 62: ABinopExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: ABinopExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -59698,14 +60248,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[117] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ABinopExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ABinopExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ABinopExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ABinopExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ABinopExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: ABinopExpr < 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},
@@ -59724,13 +60274,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[117] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ABinopExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: ABinopExpr < 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 /* 102: ABinopExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ABinopExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASendExpr___name},
@@ -59738,12 +60288,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ABinopExpr[117] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ABinopExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ABinopExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ABinopExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ABinopExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
 };
 /* 0: Pointer to the classtable */
@@ -59936,18 +60486,16 @@ val_t NEW_ABinopExpr_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___ABoolExpr[85] = {
-  {(bigint) 3443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[83] = {
+  {(bigint) 3483 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABoolExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABoolExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABoolExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ABoolExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABoolExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: ABoolExpr < ABoolExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABoolExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ABoolExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABoolExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: ABoolExpr < ABoolExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -59957,7 +60505,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ABoolExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ABoolExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -59999,7 +60547,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[85] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: ABoolExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: ABoolExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -60009,19 +60557,19 @@ const classtable_elt_t VFT_parser___parser_nodes___ABoolExpr[85] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ABoolExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ABoolExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ABoolExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: ABoolExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: ABoolExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: ABoolExpr < ABoolExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -60099,19 +60647,17 @@ val_t NEW_ABoolExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[90] = {
-  {(bigint) 3571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[88] = {
+  {(bigint) 3607 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AOrExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AOrExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AOrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AOrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AOrExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3571 /* 9: AOrExpr < AOrExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AOrExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AOrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AOrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AOrExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3607 /* 9: AOrExpr < AOrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60120,7 +60666,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AOrExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AOrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60162,7 +60708,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[90] = {
   {(bigint) parser___parser_prod___AOrExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AOrExpr___visit_all},
-  {(bigint) 1 /* 62: AOrExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -60172,22 +60718,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AOrExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AOrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AOrExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AOrExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AOrExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AOrExpr___empty_init},
   {(bigint) parser___parser_prod___AOrExpr___init_aorexpr},
-  {(bigint) 5 /* 87: AOrExpr < AOrExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AOrExpr < AOrExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOrExpr___n_expr},
   {(bigint) parser___parser_nodes___AOrExpr___n_expr2},
 };
@@ -60321,19 +60867,17 @@ val_t NEW_AOrExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[90] = {
-  {(bigint) 3699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[88] = {
+  {(bigint) 3735 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAndExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAndExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAndExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAndExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAndExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AAndExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3699 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAndExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAndExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAndExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AAndExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3735 /* 9: AAndExpr < AAndExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60342,7 +60886,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAndExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAndExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60384,7 +60928,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[90] = {
   {(bigint) parser___parser_prod___AAndExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAndExpr___visit_all},
-  {(bigint) 1 /* 62: AAndExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -60394,22 +60938,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AAndExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAndExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAndExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAndExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AAndExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AAndExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AAndExpr___empty_init},
   {(bigint) parser___parser_prod___AAndExpr___init_aandexpr},
-  {(bigint) 5 /* 87: AAndExpr < AAndExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AAndExpr < AAndExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAndExpr___n_expr},
   {(bigint) parser___parser_nodes___AAndExpr___n_expr2},
 };
@@ -60543,19 +61087,17 @@ val_t NEW_AAndExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[90] = {
-  {(bigint) 3575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[88] = {
+  {(bigint) 3611 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrElseExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AOrElseExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AOrElseExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AOrElseExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AOrElseExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AOrElseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3575 /* 9: AOrElseExpr < AOrElseExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AOrElseExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AOrElseExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AOrElseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AOrElseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3611 /* 9: AOrElseExpr < AOrElseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60564,7 +61106,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AOrElseExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AOrElseExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60606,7 +61148,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[90] = {
   {(bigint) parser___parser_prod___AOrElseExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AOrElseExpr___visit_all},
-  {(bigint) 1 /* 62: AOrElseExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -60616,22 +61158,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrElseExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AOrElseExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AOrElseExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AOrElseExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AOrElseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AOrElseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AOrElseExpr___empty_init},
   {(bigint) parser___parser_prod___AOrElseExpr___init_aorelseexpr},
-  {(bigint) 5 /* 87: AOrElseExpr < AOrElseExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AOrElseExpr < AOrElseExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AOrElseExpr___n_expr},
   {(bigint) parser___parser_nodes___AOrElseExpr___n_expr2},
 };
@@ -60765,19 +61307,17 @@ val_t NEW_AOrElseExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[90] = {
-  {(bigint) 3583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[88] = {
+  {(bigint) 3619 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANotExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANotExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANotExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ANotExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ANotExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: ANotExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3583 /* 9: ANotExpr < ANotExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANotExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ANotExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ANotExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: ANotExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3619 /* 9: ANotExpr < ANotExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -60786,7 +61326,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ANotExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ANotExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -60828,7 +61368,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[90] = {
   {(bigint) parser___parser_prod___ANotExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANotExpr___visit_all},
-  {(bigint) 1 /* 62: ANotExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -60838,22 +61378,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ANotExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ANotExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ANotExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ANotExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: ANotExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: ANotExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___ANotExpr___empty_init},
   {(bigint) parser___parser_prod___ANotExpr___init_anotexpr},
-  {(bigint) 5 /* 87: ANotExpr < ANotExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: ANotExpr < ANotExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANotExpr___n_kwnot},
   {(bigint) parser___parser_nodes___ANotExpr___n_expr},
 };
@@ -60987,28 +61527,26 @@ val_t NEW_ANotExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[122] = {
-  {(bigint) 3827 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[120] = {
+  {(bigint) 3859 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEqExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEqExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEqExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AEqExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AEqExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3827 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEqExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AEqExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AEqExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AEqExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AEqExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AEqExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AEqExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AEqExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3859 /* 13: AEqExpr < AEqExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AEqExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AEqExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61050,7 +61588,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[122] = {
   {(bigint) parser___parser_prod___AEqExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AEqExpr___visit_all},
-  {(bigint) 4 /* 62: AEqExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -61058,14 +61596,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[122] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AEqExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AEqExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AEqExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AEqExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AEqExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AEqExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -61084,13 +61622,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[122] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AEqExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AEqExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AEqExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AEqExpr___name},
@@ -61098,18 +61636,18 @@ const classtable_elt_t VFT_parser___parser_nodes___AEqExpr[122] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AEqExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AEqExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AEqExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AEqExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(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 /* 121: AEqExpr < AEqExpr: superclass init_table position */},
+  {(bigint) 9 /* 119: AEqExpr < AEqExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -61343,19 +61881,17 @@ 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[90] = {
-  {(bigint) 3639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[88] = {
+  {(bigint) 3675 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEeExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AEeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AEeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AEeExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3639 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEeExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AEeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AEeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AEeExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3675 /* 9: AEeExpr < AEeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -61364,7 +61900,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AEeExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AEeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61406,7 +61942,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[90] = {
   {(bigint) parser___parser_prod___AEeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AEeExpr___visit_all},
-  {(bigint) 1 /* 62: AEeExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -61416,22 +61952,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AEeExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AEeExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AEeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AEeExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AEeExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AEeExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AEeExpr___empty_init},
   {(bigint) parser___parser_prod___AEeExpr___init_aeeexpr},
-  {(bigint) 5 /* 87: AEeExpr < AEeExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AEeExpr < AEeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEeExpr___n_expr},
   {(bigint) parser___parser_nodes___AEeExpr___n_expr2},
 };
@@ -61565,28 +62101,26 @@ val_t NEW_AEeExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[122] = {
-  {(bigint) 3795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[120] = {
+  {(bigint) 3827 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ANeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ANeExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3795 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ANeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ANeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ANeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ANeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ANeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ANeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ANeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3827 /* 13: ANeExpr < ANeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ANeExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ANeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61628,7 +62162,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[122] = {
   {(bigint) parser___parser_prod___ANeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANeExpr___visit_all},
-  {(bigint) 4 /* 62: ANeExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -61636,14 +62170,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[122] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANeExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ANeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ANeExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ANeExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ANeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ANeExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -61662,13 +62196,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[122] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ANeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ANeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ANeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ANeExpr___name},
@@ -61676,18 +62210,18 @@ const classtable_elt_t VFT_parser___parser_nodes___ANeExpr[122] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ANeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ANeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ANeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ANeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(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 /* 121: ANeExpr < ANeExpr: superclass init_table position */},
+  {(bigint) 9 /* 119: ANeExpr < ANeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -61921,28 +62455,26 @@ 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[120] = {
-  {(bigint) 3803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[118] = {
+  {(bigint) 3835 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALtExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALtExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALtExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ALtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ALtExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3803 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ALtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ALtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ALtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ALtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ALtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ALtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ALtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3835 /* 13: ALtExpr < ALtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ALtExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ALtExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -61984,7 +62516,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[120] = {
   {(bigint) parser___parser_prod___ALtExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALtExpr___visit_all},
-  {(bigint) 4 /* 62: ALtExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -61992,14 +62524,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ALtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ALtExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ALtExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ALtExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ALtExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -62018,13 +62550,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ALtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ALtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ALtExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALtExpr___name},
@@ -62032,16 +62564,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ALtExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ALtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ALtExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ALtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ALtExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___ALtExpr___empty_init},
   {(bigint) parser___parser_prod___ALtExpr___init_altexpr},
-  {(bigint) 9 /* 119: ALtExpr < ALtExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: ALtExpr < ALtExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -62275,28 +62807,26 @@ 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[120] = {
-  {(bigint) 3811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[118] = {
+  {(bigint) 3843 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ALeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ALeExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3811 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ALeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ALeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ALeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ALeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ALeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ALeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ALeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3843 /* 13: ALeExpr < ALeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ALeExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ALeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -62338,7 +62868,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[120] = {
   {(bigint) parser___parser_prod___ALeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALeExpr___visit_all},
-  {(bigint) 4 /* 62: ALeExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -62346,14 +62876,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ALeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ALeExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ALeExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ALeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ALeExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -62372,13 +62902,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ALeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ALeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ALeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALeExpr___name},
@@ -62386,16 +62916,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ALeExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ALeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ALeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ALeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ALeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___ALeExpr___empty_init},
   {(bigint) parser___parser_prod___ALeExpr___init_aleexpr},
-  {(bigint) 9 /* 119: ALeExpr < ALeExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: ALeExpr < ALeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -62629,28 +63159,26 @@ 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[120] = {
-  {(bigint) 3807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[118] = {
+  {(bigint) 3839 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ALlExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ALlExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ALlExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ALlExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ALlExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3807 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ALlExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ALlExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ALlExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ALlExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ALlExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ALlExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ALlExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ALlExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3839 /* 13: ALlExpr < ALlExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ALlExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ALlExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -62692,7 +63220,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[120] = {
   {(bigint) parser___parser_prod___ALlExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ALlExpr___visit_all},
-  {(bigint) 4 /* 62: ALlExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -62700,14 +63228,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ALlExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ALlExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ALlExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ALlExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ALlExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -62726,13 +63254,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ALlExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ALlExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ALlExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ALlExpr___name},
@@ -62740,16 +63268,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ALlExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ALlExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ALlExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ALlExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ALlExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___ALlExpr___empty_init},
   {(bigint) parser___parser_prod___ALlExpr___init_allexpr},
-  {(bigint) 9 /* 119: ALlExpr < ALlExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: ALlExpr < ALlExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -62983,28 +63511,26 @@ 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[120] = {
-  {(bigint) 3815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[118] = {
+  {(bigint) 3847 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGtExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGtExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGtExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AGtExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AGtExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3815 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGtExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AGtExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AGtExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AGtExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AGtExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AGtExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AGtExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AGtExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3847 /* 13: AGtExpr < AGtExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AGtExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AGtExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63046,7 +63572,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[120] = {
   {(bigint) parser___parser_prod___AGtExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGtExpr___visit_all},
-  {(bigint) 4 /* 62: AGtExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -63054,14 +63580,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AGtExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AGtExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AGtExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AGtExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AGtExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -63080,13 +63606,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AGtExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AGtExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AGtExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGtExpr___name},
@@ -63094,16 +63620,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AGtExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AGtExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AGtExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AGtExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AGtExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AGtExpr___empty_init},
   {(bigint) parser___parser_prod___AGtExpr___init_agtexpr},
-  {(bigint) 9 /* 119: AGtExpr < AGtExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AGtExpr < AGtExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -63337,28 +63863,26 @@ 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[120] = {
-  {(bigint) 3823 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[118] = {
+  {(bigint) 3855 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AGeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AGeExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3823 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AGeExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AGeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AGeExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AGeExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AGeExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AGeExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AGeExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3855 /* 13: AGeExpr < AGeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AGeExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AGeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63400,7 +63924,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[120] = {
   {(bigint) parser___parser_prod___AGeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGeExpr___visit_all},
-  {(bigint) 4 /* 62: AGeExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -63408,14 +63932,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AGeExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AGeExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AGeExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AGeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AGeExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -63434,13 +63958,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AGeExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AGeExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AGeExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGeExpr___name},
@@ -63448,16 +63972,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AGeExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AGeExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AGeExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AGeExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AGeExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AGeExpr___empty_init},
   {(bigint) parser___parser_prod___AGeExpr___init_ageexpr},
-  {(bigint) 9 /* 119: AGeExpr < AGeExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AGeExpr < AGeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -63691,28 +64215,26 @@ 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[120] = {
-  {(bigint) 3819 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[118] = {
+  {(bigint) 3851 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AGgExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AGgExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AGgExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AGgExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AGgExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3819 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AGgExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AGgExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AGgExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AGgExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AGgExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AGgExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AGgExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AGgExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3851 /* 13: AGgExpr < AGgExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AGgExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AGgExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -63754,7 +64276,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[120] = {
   {(bigint) parser___parser_prod___AGgExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AGgExpr___visit_all},
-  {(bigint) 4 /* 62: AGgExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -63762,14 +64284,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AGgExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AGgExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AGgExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AGgExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AGgExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -63788,13 +64310,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AGgExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AGgExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AGgExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AGgExpr___name},
@@ -63802,16 +64324,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AGgExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AGgExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AGgExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AGgExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AGgExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AGgExpr___empty_init},
   {(bigint) parser___parser_prod___AGgExpr___init_aggexpr},
-  {(bigint) 9 /* 119: AGgExpr < AGgExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AGgExpr < AGgExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -64045,19 +64567,17 @@ 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[90] = {
-  {(bigint) 3603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[88] = {
+  {(bigint) 3639 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIsaExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIsaExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIsaExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3219 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AIsaExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AIsaExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AIsaExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3603 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIsaExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3259 /* 5: AIsaExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AIsaExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AIsaExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AIsaExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3639 /* 9: AIsaExpr < AIsaExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -64066,7 +64586,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AIsaExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AIsaExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64108,32 +64628,32 @@ const classtable_elt_t VFT_parser___parser_nodes___AIsaExpr[90] = {
   {(bigint) parser___parser_prod___AIsaExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIsaExpr___visit_all},
-  {(bigint) 2 /* 62: AIsaExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AIsaExpr___after_typing},
-  {(bigint) 0 /* 69: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) 0 /* 67: AIsaExpr < ATypeCheckExpr: superclass init_table position */},
   {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AIsaExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AIsaExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AIsaExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 5 /* 84: AIsaExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 5 /* 82: AIsaExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AIsaExpr___empty_init},
   {(bigint) parser___parser_prod___AIsaExpr___init_aisaexpr},
-  {(bigint) 6 /* 87: AIsaExpr < AIsaExpr: superclass init_table position */},
+  {(bigint) 6 /* 85: AIsaExpr < AIsaExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIsaExpr___n_expr},
   {(bigint) parser___parser_nodes___AIsaExpr___n_type},
 };
@@ -64267,28 +64787,26 @@ val_t NEW_AIsaExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[120] = {
-  {(bigint) 3787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[118] = {
+  {(bigint) 3819 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: APlusExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APlusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: APlusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: APlusExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3787 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APlusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: APlusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: APlusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: APlusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: APlusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: APlusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: APlusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: APlusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3819 /* 13: APlusExpr < APlusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: APlusExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: APlusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64330,7 +64848,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[120] = {
   {(bigint) parser___parser_prod___APlusExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APlusExpr___visit_all},
-  {(bigint) 4 /* 62: APlusExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -64338,14 +64856,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: APlusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: APlusExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: APlusExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: APlusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: APlusExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -64364,13 +64882,13 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: APlusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: APlusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: APlusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___APlusExpr___name},
@@ -64378,16 +64896,16 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: APlusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: APlusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: APlusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: APlusExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___APlusExpr___empty_init},
   {(bigint) parser___parser_prod___APlusExpr___init_aplusexpr},
-  {(bigint) 9 /* 119: APlusExpr < APlusExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: APlusExpr < APlusExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -64621,28 +65139,26 @@ 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[120] = {
-  {(bigint) 3799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[118] = {
+  {(bigint) 3831 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMinusExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMinusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AMinusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AMinusExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3799 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMinusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AMinusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AMinusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AMinusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AMinusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AMinusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AMinusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AMinusExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3831 /* 13: AMinusExpr < AMinusExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AMinusExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AMinusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -64684,7 +65200,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[120] = {
   {(bigint) parser___parser_prod___AMinusExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMinusExpr___visit_all},
-  {(bigint) 4 /* 62: AMinusExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -64692,14 +65208,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AMinusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AMinusExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AMinusExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AMinusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AMinusExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -64718,13 +65234,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AMinusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AMinusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AMinusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AMinusExpr___name},
@@ -64732,16 +65248,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AMinusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AMinusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AMinusExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AMinusExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AMinusExpr___empty_init},
   {(bigint) parser___parser_prod___AMinusExpr___init_aminusexpr},
-  {(bigint) 9 /* 119: AMinusExpr < AMinusExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AMinusExpr < AMinusExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -64975,28 +65491,26 @@ 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[120] = {
-  {(bigint) 3775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[118] = {
+  {(bigint) 3807 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarshipExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarshipExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStarshipExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AStarshipExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AStarshipExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3775 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStarshipExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AStarshipExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AStarshipExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AStarshipExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AStarshipExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AStarshipExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AStarshipExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AStarshipExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3807 /* 13: AStarshipExpr < AStarshipExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AStarshipExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AStarshipExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65038,7 +65552,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[120] = {
   {(bigint) parser___parser_prod___AStarshipExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStarshipExpr___visit_all},
-  {(bigint) 4 /* 62: AStarshipExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -65046,14 +65560,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AStarshipExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AStarshipExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AStarshipExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AStarshipExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AStarshipExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -65072,13 +65586,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AStarshipExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AStarshipExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AStarshipExpr___name},
@@ -65086,16 +65600,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarshipExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AStarshipExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AStarshipExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AStarshipExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AStarshipExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AStarshipExpr___empty_init},
   {(bigint) parser___parser_prod___AStarshipExpr___init_astarshipexpr},
-  {(bigint) 9 /* 119: AStarshipExpr < AStarshipExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AStarshipExpr < AStarshipExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -65329,28 +65843,26 @@ 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[120] = {
-  {(bigint) 3779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[118] = {
+  {(bigint) 3811 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStarExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStarExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStarExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AStarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AStarExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3779 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AStarExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AStarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AStarExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AStarExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AStarExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AStarExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: AStarExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3811 /* 13: AStarExpr < AStarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: AStarExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AStarExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65392,7 +65904,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[120] = {
   {(bigint) parser___parser_prod___AStarExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStarExpr___visit_all},
-  {(bigint) 4 /* 62: AStarExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -65400,14 +65912,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AStarExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AStarExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AStarExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AStarExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AStarExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -65426,13 +65938,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AStarExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AStarExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AStarExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AStarExpr___name},
@@ -65440,16 +65952,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AStarExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AStarExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AStarExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: AStarExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AStarExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___AStarExpr___empty_init},
   {(bigint) parser___parser_prod___AStarExpr___init_astarexpr},
-  {(bigint) 9 /* 119: AStarExpr < AStarExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: AStarExpr < AStarExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -65683,28 +66195,26 @@ 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[120] = {
-  {(bigint) 3783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[118] = {
+  {(bigint) 3815 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASlashExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASlashExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASlashExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ASlashExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASlashExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3783 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASlashExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ASlashExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ASlashExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASlashExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ASlashExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ASlashExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ASlashExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: ASlashExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3815 /* 13: ASlashExpr < ASlashExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ASlashExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ASlashExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -65746,7 +66256,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[120] = {
   {(bigint) parser___parser_prod___ASlashExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASlashExpr___visit_all},
-  {(bigint) 4 /* 62: ASlashExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -65754,14 +66264,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ASlashExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ASlashExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ASlashExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ASlashExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ASlashExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -65780,13 +66290,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ASlashExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ASlashExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ASlashExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASlashExpr___name},
@@ -65794,16 +66304,16 @@ const classtable_elt_t VFT_parser___parser_nodes___ASlashExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ASlashExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ASlashExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: ASlashExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ASlashExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___ASlashExpr___empty_init},
   {(bigint) parser___parser_prod___ASlashExpr___init_aslashexpr},
-  {(bigint) 9 /* 119: ASlashExpr < ASlashExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: ASlashExpr < ASlashExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -66037,28 +66547,26 @@ 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[120] = {
-  {(bigint) 3791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[118] = {
+  {(bigint) 3823 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APercentExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: APercentExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APercentExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: APercentExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: APercentExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3771 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
-  {(bigint) 3791 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APercentExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: APercentExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: APercentExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: APercentExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: APercentExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: APercentExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: APercentExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3803 /* 12: APercentExpr < ABinopExpr: superclass typecheck marker */},
+  {(bigint) 3823 /* 13: APercentExpr < APercentExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: APercentExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: APercentExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66100,7 +66608,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[120] = {
   {(bigint) parser___parser_prod___APercentExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APercentExpr___visit_all},
-  {(bigint) 4 /* 62: APercentExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -66108,14 +66616,14 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[120] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: APercentExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: APercentExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: APercentExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: APercentExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: APercentExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -66134,13 +66642,13 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[120] = {
   {(bigint) syntax___typing___ABinopExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: APercentExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: APercentExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: APercentExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___APercentExpr___name},
@@ -66148,16 +66656,16 @@ const classtable_elt_t VFT_parser___parser_nodes___APercentExpr[120] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: APercentExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: APercentExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___ABinopExpr___empty_init},
   {(bigint) parser___parser_prod___ABinopExpr___init_abinopexpr},
-  {(bigint) 8 /* 115: APercentExpr < ABinopExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: APercentExpr < ABinopExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABinopExpr___n_expr2},
   {(bigint) parser___parser_prod___APercentExpr___empty_init},
   {(bigint) parser___parser_prod___APercentExpr___init_apercentexpr},
-  {(bigint) 9 /* 119: APercentExpr < APercentExpr: superclass init_table position */},
+  {(bigint) 9 /* 117: APercentExpr < APercentExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -66391,28 +66899,26 @@ 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[117] = {
-  {(bigint) 3751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[115] = {
+  {(bigint) 3783 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AUminusExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AUminusExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AUminusExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AUminusExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AUminusExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3751 /* 12: AUminusExpr < AUminusExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AUminusExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AUminusExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AUminusExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AUminusExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AUminusExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AUminusExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AUminusExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3783 /* 12: AUminusExpr < AUminusExpr: 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) 5 /* 20: AUminusExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AUminusExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66454,7 +66960,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[117] = {
   {(bigint) parser___parser_prod___AUminusExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AUminusExpr___visit_all},
-  {(bigint) 4 /* 62: AUminusExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -66462,14 +66968,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[117] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AUminusExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AUminusExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AUminusExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AUminusExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AUminusExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -66488,13 +66994,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[117] = {
   {(bigint) syntax___typing___AUminusExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AUminusExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AUminusExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AUminusExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AUminusExpr___name},
@@ -66502,12 +67008,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AUminusExpr[117] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AUminusExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AUminusExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___AUminusExpr___empty_init},
   {(bigint) parser___parser_prod___AUminusExpr___init_auminusexpr},
-  {(bigint) 8 /* 115: AUminusExpr < AUminusExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AUminusExpr < AUminusExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AUminusExpr___n_minus},
 };
 /* 0: Pointer to the classtable */
@@ -66700,20 +67206,18 @@ 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[112] = {
-  {(bigint) 3723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[110] = {
+  {(bigint) 3755 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANewExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANewExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANewExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ANewExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ANewExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3723 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANewExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ANewExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ANewExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ANewExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ANewExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3755 /* 10: ANewExpr < ANewExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66721,7 +67225,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[112] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 4 /* 20: ANewExpr < Object: superclass init_table position */},
+  {(bigint) 4 /* 18: ANewExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -66763,7 +67267,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[112] = {
   {(bigint) parser___parser_prod___ANewExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANewExpr___visit_all},
-  {(bigint) 3 /* 62: ANewExpr < ANode: superclass init_table position */},
+  {(bigint) 3 /* 60: 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},
@@ -66773,12 +67277,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[112] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 2 /* 72: ANewExpr < Prod: superclass init_table position */},
+  {(bigint) 2 /* 70: ANewExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 5 /* 77: ANewExpr < AExpr: superclass init_table position */},
+  {(bigint) 5 /* 75: 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},
@@ -66797,18 +67301,18 @@ const classtable_elt_t VFT_parser___parser_nodes___ANewExpr[112] = {
   {(bigint) syntax___typing___ANewExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 1 /* 96: ANewExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 94: 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 /* 102: ANewExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 0 /* 100: 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 /* 107: ANewExpr < ANewExpr: superclass init_table position */},
+  {(bigint) 6 /* 105: ANewExpr < ANewExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANewExpr___n_kwnew},
   {(bigint) parser___parser_nodes___ANewExpr___n_type},
   {(bigint) parser___parser_nodes___ANewExpr___n_id},
@@ -66972,17 +67476,15 @@ val_t NEW_ANewExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[98] = {
-  {(bigint) 3455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[96] = {
+  {(bigint) 3495 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAttrFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3455 /* 5: AAttrFormExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAttrFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAttrFormExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAttrFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3495 /* 5: AAttrFormExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAttrFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAttrFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -66993,7 +67495,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAttrFormExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAttrFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67035,7 +67537,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[98] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAttrFormExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAttrFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -67045,12 +67547,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAttrFormExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAttrFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAttrFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AAttrFormExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -67068,7 +67570,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrFormExpr[98] = {
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 95: AAttrFormExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAttrFormExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
 };
@@ -67167,18 +67669,16 @@ val_t NEW_AAttrFormExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[101] = {
-  {(bigint) 3679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[99] = {
+  {(bigint) 3715 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAttrExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3455 /* 5: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3679 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3495 /* 5: AAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3715 /* 8: AAttrExpr < AAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67188,7 +67688,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[101] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAttrExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAttrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67230,7 +67730,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[101] = {
   {(bigint) parser___parser_prod___AAttrExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAttrExpr___visit_all},
-  {(bigint) 1 /* 62: AAttrExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -67240,12 +67740,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[101] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAttrExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAttrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -67263,12 +67763,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrExpr[101] = {
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 95: AAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAttrExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
   {(bigint) parser___parser_prod___AAttrExpr___empty_init},
   {(bigint) parser___parser_prod___AAttrExpr___init_aattrexpr},
-  {(bigint) 5 /* 100: AAttrExpr < AAttrExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AAttrExpr < AAttrExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -67407,19 +67907,17 @@ val_t NEW_AAttrExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
-  {(bigint) 3683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[96] = {
+  {(bigint) 3719 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAttrAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3455 /* 5: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAttrAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAttrAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3683 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAttrAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3495 /* 5: AAttrAssignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAttrAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAttrAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 8: AAttrAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3719 /* 9: AAttrAssignExpr < AAttrAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67428,7 +67926,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAttrAssignExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAttrAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67470,7 +67968,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
   {(bigint) parser___parser_prod___AAttrAssignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAttrAssignExpr___visit_all},
-  {(bigint) 1 /* 62: AAttrAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -67480,12 +67978,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAttrAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAttrAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAttrAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -67494,8 +67992,8 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAttrAssignExpr___empty_init},
   {(bigint) parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr},
-  {(bigint) 6 /* 86: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
-  {(bigint) 5 /* 87: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 6 /* 84: AAttrAssignExpr < AAttrAssignExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AAttrAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
   {0} /* Class Hole :( */,
@@ -67503,7 +68001,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrAssignExpr[98] = {
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 95: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAttrAssignExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
 };
@@ -67658,28 +68156,26 @@ val_t NEW_AAttrAssignExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[118] = {
-  {(bigint) 3763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[116] = {
+  {(bigint) 3795 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACallFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ACallFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ACallFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACallFormExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ACallFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ACallFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ACallFormExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3763 /* 13: ACallFormExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 307 /* 4: ACallFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ACallFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ACallFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACallFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ACallFormExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ACallFormExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ACallFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3795 /* 13: ACallFormExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ACallFormExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ACallFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67721,7 +68217,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[118] = {
   {(bigint) parser___parser_prod___ASendExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 62: ACallFormExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: ACallFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -67729,14 +68225,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[118] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ACallFormExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ACallFormExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ACallFormExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ACallFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ACallFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: ACallFormExpr < 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},
@@ -67755,13 +68251,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[118] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ACallFormExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: ACallFormExpr < 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 /* 102: ACallFormExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ACallFormExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASendExpr___name},
@@ -67769,12 +68265,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallFormExpr[118] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ACallFormExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ACallFormExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallFormExpr___variable_create},
-  {(bigint) 8 /* 115: ACallFormExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ACallFormExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
 };
@@ -67935,19 +68431,17 @@ val_t NEW_ACallFormExpr_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___AAttrReassignExpr[98] = {
-  {(bigint) 3675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[96] = {
+  {(bigint) 3711 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAttrReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAttrReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAttrReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3455 /* 5: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAttrReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAttrReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3675 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAttrReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3495 /* 5: AAttrReassignExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAttrReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAttrReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: AAttrReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3711 /* 9: AAttrReassignExpr < AAttrReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -67956,7 +68450,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[98] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAttrReassignExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAttrReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -67998,7 +68492,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[98] = {
   {(bigint) parser___parser_prod___AAttrReassignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAttrReassignExpr___visit_all},
-  {(bigint) 1 /* 62: AAttrReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -68008,12 +68502,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[98] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAttrReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAttrReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAttrReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -68022,16 +68516,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AAttrReassignExpr[98] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAttrReassignExpr___empty_init},
   {(bigint) parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr},
-  {(bigint) 6 /* 86: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
+  {(bigint) 6 /* 84: AAttrReassignExpr < AAttrReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 89: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AAttrReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 95: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AAttrReassignExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
 };
@@ -68186,28 +68680,26 @@ val_t NEW_AAttrReassignExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[121] = {
-  {(bigint) 3835 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[119] = {
+  {(bigint) 3867 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACallExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ACallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACallExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3763 /* 13: ACallExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 3835 /* 14: ACallExpr < ACallExpr: superclass typecheck marker */},
+  {(bigint) 307 /* 4: ACallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ACallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ACallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACallExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ACallExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ACallExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ACallExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3795 /* 13: ACallExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 3867 /* 14: ACallExpr < ACallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ACallExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ACallExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68249,7 +68741,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[121] = {
   {(bigint) parser___parser_prod___ACallExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACallExpr___visit_all},
-  {(bigint) 4 /* 62: ACallExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -68257,14 +68749,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[121] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ACallExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ACallExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ACallExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ACallExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ACallExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -68283,13 +68775,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[121] = {
   {(bigint) syntax___typing___ACallExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ACallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ACallExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ACallExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallExpr___name},
@@ -68297,17 +68789,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallExpr[121] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ACallExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ACallExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallExpr___variable_create},
-  {(bigint) 8 /* 115: ACallExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ACallExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
   {(bigint) parser___parser_prod___ACallExpr___empty_init},
   {(bigint) parser___parser_prod___ACallExpr___init_acallexpr},
-  {(bigint) 9 /* 120: ACallExpr < ACallExpr: superclass init_table position */},
+  {(bigint) 9 /* 118: ACallExpr < ACallExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -68512,28 +69004,26 @@ 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[118] = {
-  {(bigint) 3839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[116] = {
+  {(bigint) 3871 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACallAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ACallAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACallAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3839 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
-  {(bigint) 3763 /* 13: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACallAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ACallAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ACallAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACallAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 8: ACallAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3739 /* 9: ACallAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ACallAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ACallAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3871 /* 12: ACallAssignExpr < ACallAssignExpr: superclass typecheck marker */},
+  {(bigint) 3795 /* 13: ACallAssignExpr < ACallFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ACallAssignExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ACallAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68575,7 +69065,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[118] = {
   {(bigint) parser___parser_prod___ACallAssignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACallAssignExpr___visit_all},
-  {(bigint) 4 /* 62: ACallAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -68583,14 +69073,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[118] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ACallAssignExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ACallAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ACallAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ACallAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -68599,8 +69089,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[118] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ACallAssignExpr___empty_init},
   {(bigint) parser___parser_prod___ACallAssignExpr___init_acallassignexpr},
-  {(bigint) 10 /* 86: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 87: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 84: ACallAssignExpr < ACallAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 85: ACallAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
   {0} /* Class Hole :( */,
@@ -68609,13 +69099,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[118] = {
   {(bigint) syntax___typing___ACallAssignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ACallAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ACallAssignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallAssignExpr___name},
@@ -68623,12 +69113,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallAssignExpr[118] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ACallAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ACallAssignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallAssignExpr___variable_create},
-  {(bigint) 8 /* 115: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: ACallAssignExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
 };
@@ -68847,28 +69337,26 @@ 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[121] = {
-  {(bigint) 3831 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[119] = {
+  {(bigint) 3863 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACallReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACallReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACallReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ACallReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACallReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3755 /* 12: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 3763 /* 13: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
-  {(bigint) 3831 /* 14: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACallReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ACallReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ACallReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACallReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: ACallReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3739 /* 9: ACallReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ACallReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ACallReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3787 /* 12: ACallReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 3795 /* 13: ACallReassignExpr < ACallFormExpr: superclass typecheck marker */},
+  {(bigint) 3863 /* 14: ACallReassignExpr < ACallReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 7 /* 20: ACallReassignExpr < Object: superclass init_table position */},
+  {(bigint) 7 /* 18: ACallReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -68910,7 +69398,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[121] = {
   {(bigint) parser___parser_prod___ACallReassignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACallReassignExpr___visit_all},
-  {(bigint) 6 /* 62: ACallReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 6 /* 60: 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},
@@ -68918,39 +69406,39 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[121] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ACallFormExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 70: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 1 /* 68: ACallReassignExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 72: ACallReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 5 /* 70: ACallReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 8 /* 77: ACallReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 8 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: ACallReassignExpr < ASendReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___ASendReassignExpr___read_prop},
   {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 89: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 9 /* 87: ACallReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
   {(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) 3 /* 96: ACallReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 94: 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) 2 /* 102: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 100: ACallReassignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ACallReassignExpr___name},
@@ -68958,17 +69446,17 @@ const classtable_elt_t VFT_parser___parser_nodes___ACallReassignExpr[121] = {
   {(bigint) syntax___typing___ACallFormExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 110: ACallReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 4 /* 108: ACallReassignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ACallReassignExpr___variable_create},
-  {(bigint) 10 /* 115: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 113: ACallReassignExpr < ACallFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_id},
   {(bigint) parser___parser_nodes___ACallFormExpr___n_args},
   {(bigint) parser___parser_prod___ACallReassignExpr___empty_init},
   {(bigint) parser___parser_prod___ACallReassignExpr___init_acallreassignexpr},
-  {(bigint) 11 /* 120: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
+  {(bigint) 11 /* 118: ACallReassignExpr < ACallReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -69185,28 +69673,26 @@ 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[112] = {
-  {(bigint) 3743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[110] = {
+  {(bigint) 3775 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASuperExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ASuperExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASuperExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3743 /* 11: ASuperExpr < ASuperExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASuperExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ASuperExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ASuperExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASuperExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ASuperExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ASuperExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3775 /* 11: ASuperExpr < ASuperExpr: 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) 5 /* 20: ASuperExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ASuperExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69248,7 +69734,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[112] = {
   {(bigint) parser___parser_prod___ASuperExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASuperExpr___visit_all},
-  {(bigint) 4 /* 62: ASuperExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -69256,14 +69742,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[112] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASuperExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ASuperExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ASuperExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ASuperExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ASuperExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ASuperExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -69282,19 +69768,19 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperExpr[112] = {
   {(bigint) syntax___typing___ASuperExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ASuperExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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 /* 102: ASuperExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: 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 /* 108: ASuperExpr < ASuperExpr: superclass init_table position */},
+  {(bigint) 7 /* 106: ASuperExpr < ASuperExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperExpr___n_qualified},
   {(bigint) parser___parser_nodes___ASuperExpr___n_kwsuper},
   {(bigint) parser___parser_nodes___ASuperExpr___n_args},
@@ -69450,28 +69936,26 @@ val_t NEW_ASuperExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[118] = {
-  {(bigint) 3759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[116] = {
+  {(bigint) 3791 /* 0: Identity */},
   {(bigint) 22 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AInitExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AInitExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AInitExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AInitExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AInitExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3759 /* 12: AInitExpr < AInitExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AInitExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AInitExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AInitExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AInitExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AInitExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: AInitExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: AInitExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3791 /* 12: AInitExpr < AInitExpr: 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) 5 /* 20: AInitExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: AInitExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69513,7 +69997,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[118] = {
   {(bigint) parser___parser_prod___AInitExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AInitExpr___visit_all},
-  {(bigint) 4 /* 62: AInitExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -69521,14 +70005,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[118] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: AInitExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: AInitExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: AInitExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: AInitExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: AInitExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -69547,13 +70031,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[118] = {
   {(bigint) syntax___typing___AInitExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: AInitExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: AInitExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: AInitExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___AInitExpr___name},
@@ -69561,12 +70045,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AInitExpr[118] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: AInitExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: AInitExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
   {(bigint) parser___parser_prod___AInitExpr___empty_init},
   {(bigint) parser___parser_prod___AInitExpr___init_ainitexpr},
-  {(bigint) 8 /* 115: AInitExpr < AInitExpr: superclass init_table position */},
+  {(bigint) 8 /* 113: AInitExpr < AInitExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AInitExpr___n_kwinit},
   {(bigint) parser___parser_nodes___AInitExpr___n_args},
 };
@@ -69771,28 +70255,26 @@ 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___ABraFormExpr[115] = {
-  {(bigint) 3767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[113] = {
+  {(bigint) 3799 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ABraFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABraFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABraFormExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ABraFormExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ABraFormExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ABraFormExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3767 /* 13: ABraFormExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 307 /* 4: ABraFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ABraFormExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABraFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABraFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ABraFormExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ABraFormExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ABraFormExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3799 /* 13: ABraFormExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ABraFormExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ABraFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -69834,7 +70316,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[115] = {
   {(bigint) parser___parser_prod___ASendExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 62: ABraFormExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: ABraFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -69842,14 +70324,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[115] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ABraFormExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ABraFormExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ABraFormExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ABraFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ABraFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: ABraFormExpr < 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},
@@ -69868,13 +70350,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[115] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ABraFormExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: ABraFormExpr < 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 /* 102: ABraFormExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ABraFormExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASendExpr___name},
@@ -69882,10 +70364,10 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraFormExpr[115] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ABraFormExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ABraFormExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 113: ABraFormExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 111: ABraFormExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
 };
 /* 0: Pointer to the classtable */
@@ -70039,28 +70521,26 @@ val_t NEW_ABraFormExpr_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___ABraExpr[118] = {
-  {(bigint) 3847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[116] = {
+  {(bigint) 3879 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABraExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABraExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3767 /* 13: ABraExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 3847 /* 14: ABraExpr < ABraExpr: superclass typecheck marker */},
+  {(bigint) 307 /* 4: ABraExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ABraExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABraExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABraExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ABraExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ABraExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ABraExpr < ASendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3799 /* 13: ABraExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 3879 /* 14: ABraExpr < ABraExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ABraExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ABraExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70102,7 +70582,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[118] = {
   {(bigint) parser___parser_prod___ABraExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABraExpr___visit_all},
-  {(bigint) 4 /* 62: ABraExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -70110,14 +70590,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[118] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ABraExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ABraExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ABraExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ABraExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ABraExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -70136,13 +70616,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[118] = {
   {(bigint) syntax___typing___ABraExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ABraExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ABraExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ABraExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraExpr___name},
@@ -70150,14 +70630,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraExpr[118] = {
   {(bigint) syntax___typing___ABraExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ABraExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ABraExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 113: ABraExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 111: ABraExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
   {(bigint) parser___parser_prod___ABraExpr___empty_init},
   {(bigint) parser___parser_prod___ABraExpr___init_abraexpr},
-  {(bigint) 9 /* 117: ABraExpr < ABraExpr: superclass init_table position */},
+  {(bigint) 9 /* 115: ABraExpr < ABraExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -70354,28 +70834,26 @@ 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[115] = {
-  {(bigint) 3851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[113] = {
+  {(bigint) 3883 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABraAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABraAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3851 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
-  {(bigint) 3767 /* 13: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABraAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ABraAssignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABraAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABraAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 8: ABraAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3739 /* 9: ABraAssignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ABraAssignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ABraAssignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3883 /* 12: ABraAssignExpr < ABraAssignExpr: superclass typecheck marker */},
+  {(bigint) 3799 /* 13: ABraAssignExpr < ABraFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 5 /* 20: ABraAssignExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ABraAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70417,7 +70895,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[115] = {
   {(bigint) parser___parser_prod___ABraAssignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABraAssignExpr___visit_all},
-  {(bigint) 4 /* 62: ABraAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: 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},
@@ -70425,14 +70903,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[115] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ABraAssignExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ABraAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ABraAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ABraAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: 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},
@@ -70441,8 +70919,8 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[115] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ABraAssignExpr___empty_init},
   {(bigint) parser___parser_prod___ABraAssignExpr___init_abraassignexpr},
-  {(bigint) 10 /* 86: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
-  {(bigint) 9 /* 87: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 84: ABraAssignExpr < ABraAssignExpr: superclass init_table position */},
+  {(bigint) 9 /* 85: ABraAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
   {0} /* Class Hole :( */,
@@ -70451,13 +70929,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[115] = {
   {(bigint) syntax___typing___ABraAssignExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ABraAssignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: 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) 1 /* 102: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ABraAssignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraAssignExpr___name},
@@ -70465,10 +70943,10 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraAssignExpr[115] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ABraAssignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ABraAssignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 8 /* 113: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 111: ABraAssignExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
 };
 /* 0: Pointer to the classtable */
@@ -70678,17 +71156,15 @@ 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___AVarFormExpr[87] = {
-  {(bigint) 3211 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[85] = {
+  {(bigint) 3251 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVarFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVarFormExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3211 /* 5: AVarFormExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AVarFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AVarFormExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVarFormExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AVarFormExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AVarFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AVarFormExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -70699,7 +71175,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVarFormExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVarFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70741,7 +71217,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[87] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AVarFormExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AVarFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -70751,12 +71227,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVarFormExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVarFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AVarFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AVarFormExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -70764,7 +71240,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarFormExpr[87] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 85: AVarFormExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AVarFormExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
 };
 /* 0: Pointer to the classtable */
@@ -70850,28 +71326,26 @@ val_t NEW_AVarFormExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[118] = {
-  {(bigint) 3843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[116] = {
+  {(bigint) 3875 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABraReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABraReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABraReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ABraReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ABraReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3755 /* 12: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {(bigint) 3767 /* 13: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
-  {(bigint) 3843 /* 14: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABraReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ABraReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ABraReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ABraReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: ABraReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3739 /* 9: ABraReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ABraReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ABraReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3787 /* 12: ABraReassignExpr < ASendReassignExpr: superclass typecheck marker */},
+  {(bigint) 3799 /* 13: ABraReassignExpr < ABraFormExpr: superclass typecheck marker */},
+  {(bigint) 3875 /* 14: ABraReassignExpr < ABraReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 7 /* 20: ABraReassignExpr < Object: superclass init_table position */},
+  {(bigint) 7 /* 18: ABraReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -70913,7 +71387,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[118] = {
   {(bigint) parser___parser_prod___ABraReassignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABraReassignExpr___visit_all},
-  {(bigint) 6 /* 62: ABraReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 6 /* 60: 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},
@@ -70921,39 +71395,39 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[118] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 1 /* 70: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 1 /* 68: ABraReassignExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 5 /* 72: ABraReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 5 /* 70: ABraReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 8 /* 77: ABraReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 8 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: ABraReassignExpr < ASendReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___ASendReassignExpr___read_prop},
   {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 9 /* 89: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 9 /* 87: ABraReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
   {(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) 3 /* 96: ABraReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 3 /* 94: 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) 2 /* 102: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 100: ABraReassignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ABraReassignExpr___name},
@@ -70961,14 +71435,14 @@ const classtable_elt_t VFT_parser___parser_nodes___ABraReassignExpr[118] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 4 /* 110: ABraReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 4 /* 108: ABraReassignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
-  {(bigint) 10 /* 113: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
+  {(bigint) 10 /* 111: ABraReassignExpr < ABraFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABraFormExpr___n_args},
   {(bigint) parser___parser_prod___ABraReassignExpr___empty_init},
   {(bigint) parser___parser_prod___ABraReassignExpr___init_abrareassignexpr},
-  {(bigint) 11 /* 117: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
+  {(bigint) 11 /* 115: ABraReassignExpr < ABraReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -71177,18 +71651,16 @@ 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[106] = {
-  {(bigint) 3663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[104] = {
+  {(bigint) 3699 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureCallExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClosureCallExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClosureCallExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AClosureCallExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AClosureCallExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3663 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClosureCallExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AClosureCallExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AClosureCallExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AClosureCallExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3699 /* 8: AClosureCallExpr < AClosureCallExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71198,7 +71670,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[106] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AClosureCallExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AClosureCallExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71240,7 +71712,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[106] = {
   {(bigint) parser___parser_prod___AClosureCallExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AClosureCallExpr___visit_all},
-  {(bigint) 2 /* 62: AClosureCallExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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},
@@ -71250,12 +71722,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[106] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AClosureCallExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AClosureCallExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AClosureCallExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
@@ -71274,13 +71746,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureCallExpr[106] = {
   {(bigint) syntax___typing___AClosureCallExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 0 /* 96: AClosureCallExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 0 /* 94: 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 /* 102: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
+  {(bigint) 5 /* 100: AClosureCallExpr < AClosureCallExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_id},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_args},
   {(bigint) parser___parser_nodes___AClosureCallExpr___n_closure_defs},
@@ -71436,18 +71908,16 @@ val_t NEW_AClosureCallExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[90] = {
-  {(bigint) 3543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[88] = {
+  {(bigint) 3579 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVarExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVarExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3211 /* 5: AVarExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AVarExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AVarExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3543 /* 8: AVarExpr < AVarExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVarExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AVarExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AVarExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AVarExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3579 /* 8: AVarExpr < AVarExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71457,7 +71927,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVarExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVarExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71499,7 +71969,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[90] = {
   {(bigint) parser___parser_prod___AVarExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AVarExpr___visit_all},
-  {(bigint) 1 /* 62: AVarExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -71509,12 +71979,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[90] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVarExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVarExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AVarExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -71522,11 +71992,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarExpr[90] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 85: AVarExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AVarExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
   {(bigint) parser___parser_prod___AVarExpr___empty_init},
   {(bigint) parser___parser_prod___AVarExpr___init_avarexpr},
-  {(bigint) 5 /* 89: AVarExpr < AVarExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AVarExpr < AVarExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -71651,19 +72121,17 @@ val_t NEW_AVarExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[93] = {
-  {(bigint) 3547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[91] = {
+  {(bigint) 3583 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarAssignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVarAssignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVarAssignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3211 /* 5: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AVarAssignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AVarAssignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3463 /* 8: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
-  {(bigint) 3547 /* 9: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVarAssignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AVarAssignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AVarAssignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AVarAssignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3503 /* 8: AVarAssignExpr < AAssignFormExpr: superclass typecheck marker */},
+  {(bigint) 3583 /* 9: AVarAssignExpr < AVarAssignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71672,7 +72140,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[93] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVarAssignExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVarAssignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71714,7 +72182,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[93] = {
   {(bigint) parser___parser_prod___AVarAssignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AVarAssignExpr___visit_all},
-  {(bigint) 1 /* 62: AVarAssignExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -71724,12 +72192,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[93] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVarAssignExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVarAssignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AVarAssignExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -71737,14 +72205,14 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarAssignExpr[93] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 85: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AVarAssignExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
-  {(bigint) 5 /* 87: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AVarAssignExpr < AAssignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_assign},
   {(bigint) parser___parser_nodes___AAssignFormExpr___n_value},
   {(bigint) parser___parser_prod___AVarAssignExpr___empty_init},
   {(bigint) parser___parser_prod___AVarAssignExpr___init_avarassignexpr},
-  {(bigint) 6 /* 92: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
+  {(bigint) 6 /* 90: AVarAssignExpr < AVarAssignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -71885,19 +72353,17 @@ val_t NEW_AVarAssignExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[95] = {
-  {(bigint) 3539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[93] = {
+  {(bigint) 3575 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AVarReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AVarReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AVarReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3211 /* 5: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AVarReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AVarReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3539 /* 9: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AVarReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3251 /* 5: AVarReassignExpr < AVarFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AVarReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AVarReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: AVarReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3575 /* 9: AVarReassignExpr < AVarReassignExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -71906,7 +72372,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[95] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AVarReassignExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AVarReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -71948,7 +72414,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[95] = {
   {(bigint) parser___parser_prod___AVarReassignExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AVarReassignExpr___visit_all},
-  {(bigint) 1 /* 62: AVarReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -71958,12 +72424,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[95] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AVarReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AVarReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AVarReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -71971,16 +72437,16 @@ const classtable_elt_t VFT_parser___parser_nodes___AVarReassignExpr[95] = {
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___typing___AVarFormExpr___variable},
-  {(bigint) 4 /* 85: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 83: AVarReassignExpr < AVarFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AVarFormExpr___n_id},
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 5 /* 89: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AVarReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
   {(bigint) parser___parser_prod___AVarReassignExpr___empty_init},
   {(bigint) parser___parser_prod___AVarReassignExpr___init_avarreassignexpr},
-  {(bigint) 6 /* 94: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
+  {(bigint) 6 /* 92: AVarReassignExpr < AVarReassignExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -72122,18 +72588,16 @@ val_t NEW_AVarReassignExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[89] = {
-  {(bigint) 3279 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[87] = {
+  {(bigint) 3319 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ARangeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ARangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ARangeExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ARangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ARangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3279 /* 8: ARangeExpr < ARangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ARangeExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ARangeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ARangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3319 /* 8: ARangeExpr < ARangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72143,7 +72607,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ARangeExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ARangeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72185,7 +72649,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[89] = {
   {(bigint) parser___parser_prod___ARangeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ARangeExpr___visit_all},
-  {(bigint) 1 /* 62: ARangeExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: ARangeExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -72195,12 +72659,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ARangeExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ARangeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ARangeExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: ARangeExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -72209,7 +72673,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ARangeExpr[89] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ARangeExpr___empty_init},
   {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 86: ARangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: ARangeExpr < ARangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
 };
@@ -72343,19 +72807,17 @@ val_t NEW_ARangeExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[92] = {
-  {(bigint) 3651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[90] = {
+  {(bigint) 3687 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACrangeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACrangeExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ACrangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3279 /* 8: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 3651 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACrangeExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ACrangeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3319 /* 8: ACrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3687 /* 9: ACrangeExpr < ACrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72364,7 +72826,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[92] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ACrangeExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ACrangeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72406,7 +72868,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[92] = {
   {(bigint) parser___parser_prod___ACrangeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACrangeExpr___visit_all},
-  {(bigint) 1 /* 62: ACrangeExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -72416,12 +72878,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ACrangeExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ACrangeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ACrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -72430,12 +72892,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ACrangeExpr[92] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ARangeExpr___empty_init},
   {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 86: ACrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: ACrangeExpr < ARangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
   {(bigint) parser___parser_prod___ACrangeExpr___empty_init},
   {(bigint) parser___parser_prod___ACrangeExpr___init_acrangeexpr},
-  {(bigint) 5 /* 91: ACrangeExpr < ACrangeExpr: superclass init_table position */},
+  {(bigint) 5 /* 89: ACrangeExpr < ACrangeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -72609,19 +73071,17 @@ val_t NEW_ACrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[92] = {
-  {(bigint) 3567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[90] = {
+  {(bigint) 3603 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AOrangeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AOrangeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AOrangeExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AOrangeExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AOrangeExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3279 /* 8: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
-  {(bigint) 3567 /* 9: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AOrangeExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AOrangeExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AOrangeExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3319 /* 8: AOrangeExpr < ARangeExpr: superclass typecheck marker */},
+  {(bigint) 3603 /* 9: AOrangeExpr < AOrangeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72630,7 +73090,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[92] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AOrangeExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AOrangeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72672,7 +73132,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[92] = {
   {(bigint) parser___parser_prod___AOrangeExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AOrangeExpr___visit_all},
-  {(bigint) 1 /* 62: AOrangeExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -72682,12 +73142,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AOrangeExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AOrangeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AOrangeExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -72696,12 +73156,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AOrangeExpr[92] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ARangeExpr___empty_init},
   {(bigint) parser___parser_prod___ARangeExpr___init_arangeexpr},
-  {(bigint) 4 /* 86: AOrangeExpr < ARangeExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AOrangeExpr < ARangeExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr},
   {(bigint) parser___parser_nodes___ARangeExpr___n_expr2},
   {(bigint) parser___parser_prod___AOrangeExpr___empty_init},
   {(bigint) parser___parser_prod___AOrangeExpr___init_aorangeexpr},
-  {(bigint) 5 /* 91: AOrangeExpr < AOrangeExpr: superclass init_table position */},
+  {(bigint) 5 /* 89: AOrangeExpr < AOrangeExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -72875,18 +73335,16 @@ val_t NEW_AOrangeExpr_parser___parser_prod___ARangeExpr___init_arangeexpr(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[89] = {
-  {(bigint) 3475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[87] = {
+  {(bigint) 3515 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AArrayExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AArrayExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AArrayExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AArrayExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AArrayExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3475 /* 8: AArrayExpr < AArrayExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AArrayExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AArrayExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AArrayExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3515 /* 8: AArrayExpr < AArrayExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -72896,7 +73354,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AArrayExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AArrayExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -72938,7 +73396,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[89] = {
   {(bigint) parser___parser_prod___AArrayExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AArrayExpr___visit_all},
-  {(bigint) 1 /* 62: AArrayExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -72948,12 +73406,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AArrayExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AArrayExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AArrayExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -72963,7 +73421,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AArrayExpr[89] = {
   {(bigint) syntax___typing___AArrayExpr___do_typing},
   {(bigint) parser___parser_prod___AArrayExpr___empty_init},
   {(bigint) parser___parser_prod___AArrayExpr___init_aarrayexpr},
-  {(bigint) 4 /* 87: AArrayExpr < AArrayExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: AArrayExpr < AArrayExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AArrayExpr___n_exprs},
 };
 /* 0: Pointer to the classtable */
@@ -73092,18 +73550,16 @@ val_t NEW_AArrayExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[89] = {
-  {(bigint) 3263 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[87] = {
+  {(bigint) 3303 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASelfExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASelfExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASelfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3263 /* 8: ASelfExpr < ASelfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASelfExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASelfExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3303 /* 8: ASelfExpr < ASelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73113,7 +73569,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASelfExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASelfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73155,7 +73611,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[89] = {
   {(bigint) parser___parser_prod___ASelfExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASelfExpr___visit_all},
-  {(bigint) 1 /* 62: ASelfExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -73165,12 +73621,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASelfExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASelfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ASelfExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -73180,7 +73636,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASelfExpr[89] = {
   {(bigint) syntax___typing___ASelfExpr___variable},
   {(bigint) parser___parser_prod___ASelfExpr___empty_init},
   {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 87: ASelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: ASelfExpr < ASelfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
 };
 /* 0: Pointer to the classtable */
@@ -73301,19 +73757,17 @@ val_t NEW_ASelfExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[92] = {
-  {(bigint) 3615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[90] = {
+  {(bigint) 3651 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AImplicitSelfExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AImplicitSelfExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AImplicitSelfExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AImplicitSelfExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3263 /* 8: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
-  {(bigint) 3615 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AImplicitSelfExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AImplicitSelfExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AImplicitSelfExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3303 /* 8: AImplicitSelfExpr < ASelfExpr: superclass typecheck marker */},
+  {(bigint) 3651 /* 9: AImplicitSelfExpr < AImplicitSelfExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73322,7 +73776,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[92] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AImplicitSelfExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AImplicitSelfExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73364,7 +73818,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[92] = {
   {(bigint) parser___parser_prod___AImplicitSelfExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AImplicitSelfExpr___visit_all},
-  {(bigint) 1 /* 62: AImplicitSelfExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -73374,12 +73828,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[92] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AImplicitSelfExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AImplicitSelfExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AImplicitSelfExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -73389,11 +73843,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AImplicitSelfExpr[92] = {
   {(bigint) syntax___typing___ASelfExpr___variable},
   {(bigint) parser___parser_prod___ASelfExpr___empty_init},
   {(bigint) parser___parser_prod___ASelfExpr___init_aselfexpr},
-  {(bigint) 4 /* 87: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: AImplicitSelfExpr < ASelfExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASelfExpr___n_kwself},
   {(bigint) parser___parser_prod___AImplicitSelfExpr___empty_init},
   {(bigint) parser___parser_prod___AImplicitSelfExpr___init_aimplicitselfexpr},
-  {(bigint) 5 /* 91: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
+  {(bigint) 5 /* 89: AImplicitSelfExpr < AImplicitSelfExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -73551,19 +74005,17 @@ val_t NEW_AImplicitSelfExpr_parser___parser_prod___ASelfExpr___init_aselfexpr(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[89] = {
-  {(bigint) 3551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[87] = {
+  {(bigint) 3587 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATrueExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ATrueExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ATrueExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ATrueExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ATrueExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: ATrueExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3551 /* 9: ATrueExpr < ATrueExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ATrueExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ATrueExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ATrueExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: ATrueExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3587 /* 9: ATrueExpr < ATrueExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73572,7 +74024,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ATrueExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ATrueExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73614,7 +74066,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[89] = {
   {(bigint) parser___parser_prod___ATrueExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ATrueExpr___visit_all},
-  {(bigint) 1 /* 62: ATrueExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -73624,22 +74076,22 @@ const classtable_elt_t VFT_parser___parser_nodes___ATrueExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ATrueExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ATrueExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ATrueExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: ATrueExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: ATrueExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___ATrueExpr___empty_init},
   {(bigint) parser___parser_prod___ATrueExpr___init_atrueexpr},
-  {(bigint) 5 /* 87: ATrueExpr < ATrueExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: ATrueExpr < ATrueExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ATrueExpr___n_kwtrue},
 };
 /* 0: Pointer to the classtable */
@@ -73764,19 +74216,17 @@ val_t NEW_ATrueExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[89] = {
-  {(bigint) 3627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[87] = {
+  {(bigint) 3663 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFalseExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFalseExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AFalseExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AFalseExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AFalseExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3443 /* 8: AFalseExpr < ABoolExpr: superclass typecheck marker */},
-  {(bigint) 3627 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AFalseExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AFalseExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AFalseExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3483 /* 8: AFalseExpr < ABoolExpr: superclass typecheck marker */},
+  {(bigint) 3663 /* 9: AFalseExpr < AFalseExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73785,7 +74235,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AFalseExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AFalseExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -73827,7 +74277,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[89] = {
   {(bigint) parser___parser_prod___AFalseExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AFalseExpr___visit_all},
-  {(bigint) 1 /* 62: AFalseExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -73837,22 +74287,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AFalseExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AFalseExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AFalseExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AFalseExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AFalseExpr < ABoolExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AFalseExpr < ABoolExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AFalseExpr___empty_init},
   {(bigint) parser___parser_prod___AFalseExpr___init_afalseexpr},
-  {(bigint) 5 /* 87: AFalseExpr < AFalseExpr: superclass init_table position */},
+  {(bigint) 5 /* 85: AFalseExpr < AFalseExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFalseExpr___n_kwfalse},
 };
 /* 0: Pointer to the classtable */
@@ -73977,18 +74427,16 @@ val_t NEW_AFalseExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[88] = {
-  {(bigint) 3315 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[86] = {
+  {(bigint) 3355 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ANullExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ANullExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ANullExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ANullExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ANullExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3315 /* 8: ANullExpr < ANullExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ANullExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ANullExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ANullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3355 /* 8: ANullExpr < ANullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -73998,7 +74446,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ANullExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ANullExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74040,7 +74488,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[88] = {
   {(bigint) parser___parser_prod___ANullExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANullExpr___visit_all},
-  {(bigint) 1 /* 62: ANullExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -74050,12 +74498,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ANullExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ANullExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ANullExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -74064,7 +74512,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ANullExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ANullExpr___empty_init},
   {(bigint) parser___parser_prod___ANullExpr___init_anullexpr},
-  {(bigint) 4 /* 86: ANullExpr < ANullExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: ANullExpr < ANullExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANullExpr___n_kwnull},
 };
 /* 0: Pointer to the classtable */
@@ -74189,18 +74637,16 @@ val_t NEW_ANullExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[88] = {
-  {(bigint) 3363 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[86] = {
+  {(bigint) 3403 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIntExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIntExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIntExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AIntExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AIntExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3363 /* 8: AIntExpr < AIntExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIntExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AIntExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AIntExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3403 /* 8: AIntExpr < AIntExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74210,7 +74656,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIntExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIntExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74252,7 +74698,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[88] = {
   {(bigint) parser___parser_prod___AIntExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIntExpr___visit_all},
-  {(bigint) 1 /* 62: AIntExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -74262,12 +74708,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIntExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIntExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AIntExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -74276,7 +74722,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIntExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AIntExpr___empty_init},
   {(bigint) parser___parser_prod___AIntExpr___init_aintexpr},
-  {(bigint) 4 /* 86: AIntExpr < AIntExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AIntExpr < AIntExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIntExpr___n_number},
 };
 /* 0: Pointer to the classtable */
@@ -74401,18 +74847,16 @@ val_t NEW_AIntExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[88] = {
-  {(bigint) 3391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[86] = {
+  {(bigint) 3431 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AFloatExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AFloatExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AFloatExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AFloatExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AFloatExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3391 /* 8: AFloatExpr < AFloatExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AFloatExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AFloatExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AFloatExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3431 /* 8: AFloatExpr < AFloatExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74422,7 +74866,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AFloatExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AFloatExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74464,7 +74908,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[88] = {
   {(bigint) parser___parser_prod___AFloatExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AFloatExpr___visit_all},
-  {(bigint) 1 /* 62: AFloatExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -74474,12 +74918,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AFloatExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AFloatExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AFloatExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -74488,7 +74932,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AFloatExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AFloatExpr___empty_init},
   {(bigint) parser___parser_prod___AFloatExpr___init_afloatexpr},
-  {(bigint) 4 /* 86: AFloatExpr < AFloatExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AFloatExpr < AFloatExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AFloatExpr___n_float},
 };
 /* 0: Pointer to the classtable */
@@ -74613,18 +75057,16 @@ val_t NEW_AFloatExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[88] = {
-  {(bigint) 3423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[86] = {
+  {(bigint) 3463 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ACharExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ACharExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ACharExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ACharExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ACharExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3423 /* 8: ACharExpr < ACharExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ACharExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ACharExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ACharExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3463 /* 8: ACharExpr < ACharExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74634,7 +75076,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ACharExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ACharExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74676,7 +75118,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[88] = {
   {(bigint) parser___parser_prod___ACharExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ACharExpr___visit_all},
-  {(bigint) 1 /* 62: ACharExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -74686,12 +75128,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ACharExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ACharExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ACharExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -74700,7 +75142,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ACharExpr[88] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___ACharExpr___empty_init},
   {(bigint) parser___parser_prod___ACharExpr___init_acharexpr},
-  {(bigint) 4 /* 86: ACharExpr < ACharExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: ACharExpr < ACharExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ACharExpr___n_char},
 };
 /* 0: Pointer to the classtable */
@@ -74825,18 +75267,16 @@ val_t NEW_ACharExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[87] = {
-  {(bigint) 3235 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[85] = {
+  {(bigint) 3275 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStringFormExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStringFormExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStringFormExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStringFormExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AStringFormExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStringFormExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStringFormExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AStringFormExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3275 /* 8: AStringFormExpr < AStringFormExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -74846,7 +75286,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStringFormExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStringFormExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -74888,7 +75328,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[87] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AStringFormExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AStringFormExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -74898,12 +75338,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[87] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStringFormExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStringFormExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AStringFormExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AStringFormExpr < 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},
@@ -74912,7 +75352,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringFormExpr[87] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___icode_generation___AStringFormExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 86: AStringFormExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AStringFormExpr < AStringFormExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -74992,19 +75432,17 @@ val_t NEW_AStringFormExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[91] = {
-  {(bigint) 3555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[89] = {
+  {(bigint) 3591 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStringExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: AStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3555 /* 9: AStringExpr < AStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStringExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStringExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3275 /* 8: AStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3591 /* 9: AStringExpr < AStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75013,7 +75451,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStringExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75055,7 +75493,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[91] = {
   {(bigint) parser___parser_prod___AStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStringExpr___visit_all},
-  {(bigint) 1 /* 62: AStringExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -75065,12 +75503,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStringExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -75079,10 +75517,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AStringExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___icode_generation___AStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 86: AStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AStringExpr___empty_init},
   {(bigint) parser___parser_prod___AStringExpr___init_astringexpr},
-  {(bigint) 5 /* 89: AStringExpr < AStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AStringExpr < AStringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
@@ -75209,19 +75647,17 @@ val_t NEW_AStringExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[91] = {
-  {(bigint) 3559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[89] = {
+  {(bigint) 3595 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AStartStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AStartStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AStartStringExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AStartStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AStartStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3559 /* 9: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AStartStringExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AStartStringExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AStartStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3275 /* 8: AStartStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3595 /* 9: AStartStringExpr < AStartStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75230,7 +75666,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AStartStringExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AStartStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75272,7 +75708,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[91] = {
   {(bigint) parser___parser_prod___AStartStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AStartStringExpr___visit_all},
-  {(bigint) 1 /* 62: AStartStringExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -75282,12 +75718,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AStartStringExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AStartStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AStartStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -75296,10 +75732,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AStartStringExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___icode_generation___AStartStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 86: AStartStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AStartStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AStartStringExpr___empty_init},
   {(bigint) parser___parser_prod___AStartStringExpr___init_astartstringexpr},
-  {(bigint) 5 /* 89: AStartStringExpr < AStartStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AStartStringExpr < AStartStringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AStartStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
@@ -75426,19 +75862,17 @@ val_t NEW_AStartStringExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[91] = {
-  {(bigint) 3587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[89] = {
+  {(bigint) 3623 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMidStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMidStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMidStringExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMidStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AMidStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3587 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMidStringExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMidStringExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AMidStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3275 /* 8: AMidStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3623 /* 9: AMidStringExpr < AMidStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75447,7 +75881,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMidStringExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMidStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75489,7 +75923,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[91] = {
   {(bigint) parser___parser_prod___AMidStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMidStringExpr___visit_all},
-  {(bigint) 1 /* 62: AMidStringExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -75499,12 +75933,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMidStringExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMidStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AMidStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -75513,10 +75947,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AMidStringExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___icode_generation___AMidStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 86: AMidStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AMidStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AMidStringExpr___empty_init},
   {(bigint) parser___parser_prod___AMidStringExpr___init_amidstringexpr},
-  {(bigint) 5 /* 89: AMidStringExpr < AMidStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AMidStringExpr < AMidStringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMidStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
@@ -75643,19 +76077,17 @@ val_t NEW_AMidStringExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[91] = {
-  {(bigint) 3635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[89] = {
+  {(bigint) 3671 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEndStringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEndStringExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEndStringExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AEndStringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AEndStringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3235 /* 8: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
-  {(bigint) 3635 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEndStringExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AEndStringExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AEndStringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3275 /* 8: AEndStringExpr < AStringFormExpr: superclass typecheck marker */},
+  {(bigint) 3671 /* 9: AEndStringExpr < AEndStringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75664,7 +76096,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AEndStringExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AEndStringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75706,7 +76138,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[91] = {
   {(bigint) parser___parser_prod___AEndStringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AEndStringExpr___visit_all},
-  {(bigint) 1 /* 62: AEndStringExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -75716,12 +76148,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AEndStringExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AEndStringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AEndStringExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -75730,10 +76162,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AEndStringExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) syntax___icode_generation___AEndStringExpr___string_text},
   {(bigint) syntax___icode_generation___AStringFormExpr___compute_string_infos},
-  {(bigint) 4 /* 86: AEndStringExpr < AStringFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AEndStringExpr < AStringFormExpr: superclass init_table position */},
   {(bigint) parser___parser_prod___AEndStringExpr___empty_init},
   {(bigint) parser___parser_prod___AEndStringExpr___init_aendstringexpr},
-  {(bigint) 5 /* 89: AEndStringExpr < AEndStringExpr: superclass init_table position */},
+  {(bigint) 5 /* 87: AEndStringExpr < AEndStringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AEndStringExpr___n_string},
 };
 /* 0: Pointer to the classtable */
@@ -75860,18 +76292,16 @@ val_t NEW_AEndStringExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[89] = {
-  {(bigint) 3227 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[87] = {
+  {(bigint) 3267 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperstringExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperstringExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASuperstringExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASuperstringExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASuperstringExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3227 /* 8: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASuperstringExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASuperstringExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASuperstringExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3267 /* 8: ASuperstringExpr < ASuperstringExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -75881,7 +76311,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASuperstringExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASuperstringExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -75923,7 +76353,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[89] = {
   {(bigint) parser___parser_prod___ASuperstringExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASuperstringExpr___visit_all},
-  {(bigint) 1 /* 62: ASuperstringExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -75933,12 +76363,12 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASuperstringExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASuperstringExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ASuperstringExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -75948,7 +76378,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASuperstringExpr[89] = {
   {(bigint) syntax___typing___ASuperstringExpr___atype},
   {(bigint) parser___parser_prod___ASuperstringExpr___empty_init},
   {(bigint) parser___parser_prod___ASuperstringExpr___init_asuperstringexpr},
-  {(bigint) 4 /* 87: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
+  {(bigint) 4 /* 85: ASuperstringExpr < ASuperstringExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASuperstringExpr___n_exprs},
 };
 /* 0: Pointer to the classtable */
@@ -76078,19 +76508,17 @@ val_t NEW_ASuperstringExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AParExpr[89] = {
-  {(bigint) 3563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AParExpr[87] = {
+  {(bigint) 3599 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AParExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AParExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AParExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AParExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AParExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3287 /* 8: AParExpr < AProxyExpr: superclass typecheck marker */},
-  {(bigint) 3563 /* 9: AParExpr < AParExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AParExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AParExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AParExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3327 /* 8: AParExpr < AProxyExpr: superclass typecheck marker */},
+  {(bigint) 3599 /* 9: AParExpr < AParExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76099,7 +76527,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AParExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AParExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76141,7 +76569,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[89] = {
   {(bigint) parser___parser_prod___AParExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AParExpr___visit_all},
-  {(bigint) 2 /* 62: AParExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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},
@@ -76151,23 +76579,23 @@ const classtable_elt_t VFT_parser___parser_nodes___AParExpr[89] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AParExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AParExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AParExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: AParExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 0 /* 84: AParExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) 0 /* 82: AParExpr < AProxyExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
   {(bigint) parser___parser_prod___AParExpr___empty_init},
   {(bigint) parser___parser_prod___AParExpr___init_aparexpr},
-  {(bigint) 5 /* 88: AParExpr < AParExpr: superclass init_table position */},
+  {(bigint) 5 /* 86: AParExpr < AParExpr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -76291,18 +76719,16 @@ val_t NEW_AParExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[86] = {
-  {(bigint) 3287 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[84] = {
+  {(bigint) 3327 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AProxyExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AProxyExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AProxyExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AProxyExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AProxyExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3287 /* 8: AProxyExpr < AProxyExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AProxyExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AProxyExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AProxyExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3327 /* 8: AProxyExpr < AProxyExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76312,7 +76738,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AProxyExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AProxyExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76354,7 +76780,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[86] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AProxyExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AProxyExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -76364,19 +76790,19 @@ const classtable_elt_t VFT_parser___parser_nodes___AProxyExpr[86] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AProxyExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AProxyExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AProxyExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AProxyExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AProxyExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AProxyExpr < AProxyExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AProxyExpr < AProxyExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AProxyExpr___n_expr},
 };
 /* 0: Pointer to the classtable */
@@ -76461,18 +76887,16 @@ val_t NEW_AProxyExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[90] = {
-  {(bigint) 3695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[88] = {
+  {(bigint) 3731 /* 0: Identity */},
   {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsCastExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsCastExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAsCastExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3219 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAsCastExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAsCastExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3695 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAsCastExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3259 /* 5: AAsCastExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAsCastExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAsCastExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3731 /* 8: AAsCastExpr < AAsCastExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76482,7 +76906,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[90] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: AAsCastExpr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: AAsCastExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76524,22 +76948,22 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[90] = {
   {(bigint) parser___parser_prod___AAsCastExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAsCastExpr___visit_all},
-  {(bigint) 2 /* 62: AAsCastExpr < ANode: superclass init_table position */},
+  {(bigint) 2 /* 60: 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) syntax___icode_generation___AExpr___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AAsCastExpr___after_typing},
-  {(bigint) 0 /* 69: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) 0 /* 67: AAsCastExpr < ATypeCheckExpr: superclass init_table position */},
   {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 1 /* 72: AAsCastExpr < Prod: superclass init_table position */},
+  {(bigint) 1 /* 70: AAsCastExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 4 /* 77: AAsCastExpr < AExpr: superclass init_table position */},
+  {(bigint) 4 /* 75: 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},
@@ -76548,7 +76972,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsCastExpr[90] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAsCastExpr___empty_init},
   {(bigint) parser___parser_prod___AAsCastExpr___init_aascastexpr},
-  {(bigint) 5 /* 86: AAsCastExpr < AAsCastExpr: superclass init_table position */},
+  {(bigint) 5 /* 84: AAsCastExpr < AAsCastExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_expr},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_kwas},
   {(bigint) parser___parser_nodes___AAsCastExpr___n_type},
@@ -76691,18 +77115,16 @@ val_t NEW_AAsCastExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[91] = {
-  {(bigint) 3471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[89] = {
+  {(bigint) 3511 /* 0: Identity */},
   {(bigint) 15 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAsNotnullExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAsNotnullExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAsNotnullExpr < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAsNotnullExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAsNotnullExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3471 /* 8: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAsNotnullExpr < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAsNotnullExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAsNotnullExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3511 /* 8: AAsNotnullExpr < AAsNotnullExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76712,7 +77134,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[91] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAsNotnullExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAsNotnullExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76754,7 +77176,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[91] = {
   {(bigint) parser___parser_prod___AAsNotnullExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AAsNotnullExpr___visit_all},
-  {(bigint) 1 /* 62: AAsNotnullExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -76764,12 +77186,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[91] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAsNotnullExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAsNotnullExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAsNotnullExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -76778,7 +77200,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAsNotnullExpr[91] = {
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
   {(bigint) parser___parser_prod___AAsNotnullExpr___empty_init},
   {(bigint) parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr},
-  {(bigint) 4 /* 86: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
+  {(bigint) 4 /* 84: AAsNotnullExpr < AAsNotnullExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_expr},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwas},
   {(bigint) parser___parser_nodes___AAsNotnullExpr___n_kwnot},
@@ -76930,18 +77352,16 @@ val_t NEW_AAsNotnullExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[102] = {
-  {(bigint) 3599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[100] = {
+  {(bigint) 3635 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AIssetAttrExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AIssetAttrExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AIssetAttrExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3455 /* 5: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AIssetAttrExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AIssetAttrExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3599 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AIssetAttrExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3495 /* 5: AIssetAttrExpr < AAttrFormExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AIssetAttrExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AIssetAttrExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3635 /* 8: AIssetAttrExpr < AIssetAttrExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -76951,7 +77371,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[102] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AIssetAttrExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AIssetAttrExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -76993,7 +77413,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[102] = {
   {(bigint) parser___parser_prod___AIssetAttrExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AIssetAttrExpr___visit_all},
-  {(bigint) 1 /* 62: AIssetAttrExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -77003,12 +77423,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[102] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AIssetAttrExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AIssetAttrExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AIssetAttrExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: 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},
@@ -77026,12 +77446,12 @@ const classtable_elt_t VFT_parser___parser_nodes___AIssetAttrExpr[102] = {
   {(bigint) syntax___typing___AAttrFormExpr___do_typing},
   {(bigint) syntax___typing___AAttrFormExpr___prop},
   {(bigint) syntax___typing___AAttrFormExpr___attr_type},
-  {(bigint) 4 /* 95: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
+  {(bigint) 4 /* 93: AIssetAttrExpr < AAttrFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_expr},
   {(bigint) parser___parser_nodes___AAttrFormExpr___n_id},
   {(bigint) parser___parser_prod___AIssetAttrExpr___empty_init},
   {(bigint) parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr},
-  {(bigint) 5 /* 100: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
+  {(bigint) 5 /* 98: AIssetAttrExpr < AIssetAttrExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AIssetAttrExpr___n_kwisset},
 };
 /* 0: Pointer to the classtable */
@@ -77179,17 +77599,15 @@ val_t NEW_AIssetAttrExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[76] = {
-  {(bigint) 3091 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[74] = {
+  {(bigint) 3135 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAssignOp" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAssignOp < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3091 /* 7: AAssignOp < AAssignOp: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAssignOp < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 3135 /* 7: AAssignOp < AAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77200,7 +77618,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAssignOp < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAssignOp < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77242,7 +77660,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[76] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAssignOp < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAssignOp < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -77252,10 +77670,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AAssignOp[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAssignOp < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AAssignOp___method_name},
-  {(bigint) 3 /* 75: AAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 3 /* 73: AAssignOp < AAssignOp: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -77314,18 +77732,16 @@ val_t NEW_AAssignOp_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[80] = {
-  {(bigint) 3307 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[78] = {
+  {(bigint) 3347 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "APlusAssignOp" /* 2: Class Name */},
   {(bigint) 3 /* 3: APlusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: APlusAssignOp < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: APlusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3091 /* 7: APlusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3307 /* 8: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: APlusAssignOp < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: APlusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 3135 /* 7: APlusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 3347 /* 8: APlusAssignOp < APlusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77335,7 +77751,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: APlusAssignOp < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: APlusAssignOp < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77377,7 +77793,7 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[80] = {
   {(bigint) parser___parser_prod___APlusAssignOp___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___APlusAssignOp___visit_all},
-  {(bigint) 1 /* 62: APlusAssignOp < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -77387,13 +77803,13 @@ const classtable_elt_t VFT_parser___parser_nodes___APlusAssignOp[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: APlusAssignOp < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: APlusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___APlusAssignOp___method_name},
-  {(bigint) 3 /* 75: APlusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 3 /* 73: APlusAssignOp < AAssignOp: superclass init_table position */},
   {(bigint) parser___parser_prod___APlusAssignOp___empty_init},
   {(bigint) parser___parser_prod___APlusAssignOp___init_aplusassignop},
-  {(bigint) 4 /* 78: APlusAssignOp < APlusAssignOp: superclass init_table position */},
+  {(bigint) 4 /* 76: APlusAssignOp < APlusAssignOp: superclass init_table position */},
   {(bigint) parser___parser_nodes___APlusAssignOp___n_pluseq},
 };
 /* 0: Pointer to the classtable */
@@ -77502,18 +77918,16 @@ val_t NEW_APlusAssignOp_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[80] = {
-  {(bigint) 3331 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[78] = {
+  {(bigint) 3371 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AMinusAssignOp" /* 2: Class Name */},
   {(bigint) 3 /* 3: AMinusAssignOp < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AMinusAssignOp < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AMinusAssignOp < Prod: superclass typecheck marker */},
-  {(bigint) 3091 /* 7: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
-  {(bigint) 3331 /* 8: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AMinusAssignOp < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AMinusAssignOp < Prod: superclass typecheck marker */},
+  {(bigint) 3135 /* 7: AMinusAssignOp < AAssignOp: superclass typecheck marker */},
+  {(bigint) 3371 /* 8: AMinusAssignOp < AMinusAssignOp: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77523,7 +77937,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AMinusAssignOp < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AMinusAssignOp < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77565,7 +77979,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[80] = {
   {(bigint) parser___parser_prod___AMinusAssignOp___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AMinusAssignOp___visit_all},
-  {(bigint) 1 /* 62: AMinusAssignOp < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -77575,13 +77989,13 @@ const classtable_elt_t VFT_parser___parser_nodes___AMinusAssignOp[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AMinusAssignOp < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AMinusAssignOp < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AMinusAssignOp___method_name},
-  {(bigint) 3 /* 75: AMinusAssignOp < AAssignOp: superclass init_table position */},
+  {(bigint) 3 /* 73: AMinusAssignOp < AAssignOp: superclass init_table position */},
   {(bigint) parser___parser_prod___AMinusAssignOp___empty_init},
   {(bigint) parser___parser_prod___AMinusAssignOp___init_aminusassignop},
-  {(bigint) 4 /* 78: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
+  {(bigint) 4 /* 76: AMinusAssignOp < AMinusAssignOp: superclass init_table position */},
   {(bigint) parser___parser_nodes___AMinusAssignOp___n_minuseq},
 };
 /* 0: Pointer to the classtable */
@@ -77690,17 +78104,15 @@ val_t NEW_AMinusAssignOp_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[89] = {
-  {(bigint) 3419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[87] = {
+  {(bigint) 3459 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureDef" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClosureDef < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: AClosureDef < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AClosureDef < Prod: superclass typecheck marker */},
-  {(bigint) 3419 /* 7: AClosureDef < AClosureDef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClosureDef < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: AClosureDef < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AClosureDef < Prod: superclass typecheck marker */},
+  {(bigint) 3459 /* 7: AClosureDef < AClosureDef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77711,7 +78123,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AClosureDef < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AClosureDef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -77753,17 +78165,17 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[89] = {
   {(bigint) parser___parser_prod___AClosureDef___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AClosureDef___visit_all},
-  {(bigint) 1 /* 62: AClosureDef < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AClosureDef < 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) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___AClosureDef___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 69: AClosureDef < ALabelable: superclass init_table position */},
+  {(bigint) 3 /* 67: AClosureDef < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClosureDef < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AClosureDef < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___icode_generation___AClosureDef___generate_iclosuredef},
   {(bigint) syntax___typing___AClosureDef___escapable},
@@ -77774,7 +78186,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureDef[89] = {
   {(bigint) syntax___syntax_base___AClosureDef___variables__eq},
   {(bigint) parser___parser_prod___AClosureDef___empty_init},
   {(bigint) parser___parser_prod___AClosureDef___init_aclosuredef},
-  {(bigint) 4 /* 83: AClosureDef < AClosureDef: superclass init_table position */},
+  {(bigint) 4 /* 81: AClosureDef < AClosureDef: superclass init_table position */},
   {(bigint) parser___parser_nodes___AClosureDef___n_bang},
   {(bigint) parser___parser_nodes___AClosureDef___n_id},
   {(bigint) parser___parser_nodes___AClosureDef___n_ids},
@@ -77941,17 +78353,15 @@ val_t NEW_AClosureDef_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AClosureId[76] = {
-  {(bigint) 3075 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AClosureId[74] = {
+  {(bigint) 3119 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AClosureId" /* 2: Class Name */},
   {(bigint) 3 /* 3: AClosureId < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AClosureId < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3075 /* 7: AClosureId < AClosureId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AClosureId < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 3119 /* 7: AClosureId < AClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -77962,7 +78372,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AClosureId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AClosureId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78004,7 +78414,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[76] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AClosureId < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AClosureId < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -78014,10 +78424,10 @@ const classtable_elt_t VFT_parser___parser_nodes___AClosureId[76] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AClosureId < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AClosureId___to_symbol},
-  {(bigint) 3 /* 75: AClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 3 /* 73: AClosureId < AClosureId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -78076,18 +78486,16 @@ val_t NEW_AClosureId_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[80] = {
-  {(bigint) 3259 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[78] = {
+  {(bigint) 3299 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASimpleClosureId" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASimpleClosureId < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASimpleClosureId < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ASimpleClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3075 /* 7: ASimpleClosureId < AClosureId: superclass typecheck marker */},
-  {(bigint) 3259 /* 8: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASimpleClosureId < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ASimpleClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 3119 /* 7: ASimpleClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 3299 /* 8: ASimpleClosureId < ASimpleClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78097,7 +78505,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASimpleClosureId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASimpleClosureId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78139,7 +78547,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[80] = {
   {(bigint) parser___parser_prod___ASimpleClosureId___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASimpleClosureId___visit_all},
-  {(bigint) 1 /* 62: ASimpleClosureId < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -78149,13 +78557,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ASimpleClosureId[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASimpleClosureId < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASimpleClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___ASimpleClosureId___to_symbol},
-  {(bigint) 3 /* 75: ASimpleClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 3 /* 73: ASimpleClosureId < AClosureId: superclass init_table position */},
   {(bigint) parser___parser_prod___ASimpleClosureId___empty_init},
   {(bigint) parser___parser_prod___ASimpleClosureId___init_asimpleclosureid},
-  {(bigint) 4 /* 78: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
+  {(bigint) 4 /* 76: ASimpleClosureId < ASimpleClosureId: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASimpleClosureId___n_id},
 };
 /* 0: Pointer to the classtable */
@@ -78264,18 +78672,16 @@ val_t NEW_ASimpleClosureId_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[80] = {
-  {(bigint) 3431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[78] = {
+  {(bigint) 3471 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ABreakClosureId" /* 2: Class Name */},
   {(bigint) 3 /* 3: ABreakClosureId < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ABreakClosureId < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ABreakClosureId < Prod: superclass typecheck marker */},
-  {(bigint) 3075 /* 7: ABreakClosureId < AClosureId: superclass typecheck marker */},
-  {(bigint) 3431 /* 8: ABreakClosureId < ABreakClosureId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ABreakClosureId < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ABreakClosureId < Prod: superclass typecheck marker */},
+  {(bigint) 3119 /* 7: ABreakClosureId < AClosureId: superclass typecheck marker */},
+  {(bigint) 3471 /* 8: ABreakClosureId < ABreakClosureId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78285,7 +78691,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ABreakClosureId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ABreakClosureId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78327,7 +78733,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[80] = {
   {(bigint) parser___parser_prod___ABreakClosureId___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ABreakClosureId___visit_all},
-  {(bigint) 1 /* 62: ABreakClosureId < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -78337,13 +78743,13 @@ const classtable_elt_t VFT_parser___parser_nodes___ABreakClosureId[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ABreakClosureId < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ABreakClosureId < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___ABreakClosureId___to_symbol},
-  {(bigint) 3 /* 75: ABreakClosureId < AClosureId: superclass init_table position */},
+  {(bigint) 3 /* 73: ABreakClosureId < AClosureId: superclass init_table position */},
   {(bigint) parser___parser_prod___ABreakClosureId___empty_init},
   {(bigint) parser___parser_prod___ABreakClosureId___init_abreakclosureid},
-  {(bigint) 4 /* 78: ABreakClosureId < ABreakClosureId: superclass init_table position */},
+  {(bigint) 4 /* 76: ABreakClosureId < ABreakClosureId: superclass init_table position */},
   {(bigint) parser___parser_nodes___ABreakClosureId___n_kwbreak},
 };
 /* 0: Pointer to the classtable */
@@ -78452,17 +78858,15 @@ val_t NEW_ABreakClosureId_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AModuleName[80] = {
-  {(bigint) 3031 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AModuleName[78] = {
+  {(bigint) 3075 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AModuleName" /* 2: Class Name */},
   {(bigint) 3 /* 3: AModuleName < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AModuleName < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AModuleName < Prod: superclass typecheck marker */},
-  {(bigint) 3031 /* 7: AModuleName < AModuleName: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AModuleName < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AModuleName < Prod: superclass typecheck marker */},
+  {(bigint) 3075 /* 7: AModuleName < AModuleName: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78473,7 +78877,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AModuleName < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AModuleName < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78515,7 +78919,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[80] = {
   {(bigint) parser___parser_prod___AModuleName___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AModuleName___visit_all},
-  {(bigint) 1 /* 62: AModuleName < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -78525,11 +78929,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AModuleName[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AModuleName < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AModuleName < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___AModuleName___empty_init},
   {(bigint) parser___parser_prod___AModuleName___init_amodulename},
-  {(bigint) 3 /* 76: AModuleName < AModuleName: superclass init_table position */},
+  {(bigint) 3 /* 74: AModuleName < AModuleName: superclass init_table position */},
   {(bigint) parser___parser_nodes___AModuleName___n_quad},
   {(bigint) parser___parser_nodes___AModuleName___n_path},
   {(bigint) parser___parser_nodes___AModuleName___n_id},
@@ -78660,17 +79064,15 @@ val_t NEW_AModuleName_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___AQualified[80] = {
-  {(bigint) 3015 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___AQualified[78] = {
+  {(bigint) 3059 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AQualified" /* 2: Class Name */},
   {(bigint) 3 /* 3: AQualified < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AQualified < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AQualified < Prod: superclass typecheck marker */},
-  {(bigint) 3015 /* 7: AQualified < AQualified: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AQualified < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AQualified < Prod: superclass typecheck marker */},
+  {(bigint) 3059 /* 7: AQualified < AQualified: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78681,7 +79083,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[80] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AQualified < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AQualified < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78723,7 +79125,7 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[80] = {
   {(bigint) parser___parser_prod___AQualified___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___AQualified___visit_all},
-  {(bigint) 1 /* 62: AQualified < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -78733,11 +79135,11 @@ const classtable_elt_t VFT_parser___parser_nodes___AQualified[80] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AQualified < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AQualified < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___AQualified___empty_init},
   {(bigint) parser___parser_prod___AQualified___init_aqualified},
-  {(bigint) 3 /* 76: AQualified < AQualified: superclass init_table position */},
+  {(bigint) 3 /* 74: AQualified < AQualified: superclass init_table position */},
   {(bigint) parser___parser_nodes___AQualified___n_quad},
   {(bigint) parser___parser_nodes___AQualified___n_id},
   {(bigint) parser___parser_nodes___AQualified___n_classid},
@@ -78864,17 +79266,15 @@ val_t NEW_AQualified_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___ADoc[78] = {
-  {(bigint) 3071 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___ADoc[76] = {
+  {(bigint) 3115 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ADoc" /* 2: Class Name */},
   {(bigint) 3 /* 3: ADoc < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ADoc < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: ADoc < Prod: superclass typecheck marker */},
-  {(bigint) 3071 /* 7: ADoc < ADoc: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ADoc < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: ADoc < Prod: superclass typecheck marker */},
+  {(bigint) 3115 /* 7: ADoc < ADoc: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -78885,7 +79285,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ADoc < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ADoc < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -78927,7 +79327,7 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[78] = {
   {(bigint) parser___parser_prod___ADoc___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ADoc___visit_all},
-  {(bigint) 1 /* 62: ADoc < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -78937,11 +79337,11 @@ const classtable_elt_t VFT_parser___parser_nodes___ADoc[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ADoc < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ADoc < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___ADoc___empty_init},
   {(bigint) parser___parser_prod___ADoc___init_adoc},
-  {(bigint) 3 /* 76: ADoc < ADoc: superclass init_table position */},
+  {(bigint) 3 /* 74: ADoc < ADoc: superclass init_table position */},
   {(bigint) parser___parser_nodes___ADoc___n_comment},
 };
 /* 0: Pointer to the classtable */
@@ -79056,17 +79456,15 @@ val_t NEW_ADoc_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_nodes___Start[78] = {
-  {(bigint) 2747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___parser_nodes___Start[76] = {
+  {(bigint) 2775 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Start" /* 2: Class Name */},
   {(bigint) 3 /* 3: Start < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: Start < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: Start < Prod: superclass typecheck marker */},
-  {(bigint) 2747 /* 7: Start < Start: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: Start < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: Start < Prod: superclass typecheck marker */},
+  {(bigint) 2775 /* 7: Start < Start: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79077,7 +79475,7 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: Start < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: Start < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79119,7 +79517,7 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[78] = {
   {(bigint) parser___parser_prod___Start___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___Start___visit_all},
-  {(bigint) 1 /* 62: Start < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: 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},
@@ -79129,10 +79527,10 @@ const classtable_elt_t VFT_parser___parser_nodes___Start[78] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: Start < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: Start < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) parser___parser_prod___Start___init},
-  {(bigint) 3 /* 75: Start < Start: superclass init_table position */},
+  {(bigint) 3 /* 73: Start < Start: superclass init_table position */},
   {(bigint) parser___parser_nodes___Start___n_base},
   {(bigint) parser___parser_nodes___Start___n_eof},
 };
@@ -79226,15 +79624,13 @@ val_t NEW_Start_parser___parser_prod___Start___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_parser___lexer___Lexer[61] = {
-  {(bigint) 2187 /* 0: Identity */},
+const classtable_elt_t VFT_parser___lexer___Lexer[59] = {
+  {(bigint) 2203 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Lexer" /* 2: Class Name */},
   {(bigint) 3 /* 3: Lexer < Object: superclass typecheck marker */},
   {(bigint) 23 /* 4: Lexer < TablesCapable: superclass typecheck marker */},
-  {(bigint) 2187 /* 5: Lexer < Lexer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2203 /* 5: Lexer < Lexer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79247,7 +79643,7 @@ const classtable_elt_t VFT_parser___lexer___Lexer[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: Lexer < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Lexer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79276,12 +79672,12 @@ const classtable_elt_t VFT_parser___lexer___Lexer[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: Lexer < TablesCapable: superclass init_table position */},
+  {(bigint) 0 /* 47: Lexer < TablesCapable: superclass init_table position */},
   {(bigint) parser___tables___TablesCapable___lexer_goto},
   {(bigint) parser___tables___TablesCapable___lexer_accept},
   {(bigint) parser___tables___TablesCapable___parser_goto},
   {(bigint) parser___tables___TablesCapable___parser_action},
-  {(bigint) 2 /* 54: Lexer < Lexer: superclass init_table position */},
+  {(bigint) 2 /* 52: Lexer < Lexer: superclass init_table position */},
   {(bigint) parser___lexer___Lexer___file},
   {(bigint) parser___lexer___Lexer___state_initial},
   {(bigint) parser___lexer___Lexer___init},
@@ -79401,7 +79797,7 @@ val_t NEW_Lexer_parser___lexer___Lexer___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___parser_prod___Visitor[54] = {
+const classtable_elt_t VFT_parser___parser_prod___Visitor[52] = {
   {(bigint) 15 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Visitor" /* 2: Class Name */},
@@ -79418,11 +79814,9 @@ const classtable_elt_t VFT_parser___parser_prod___Visitor[54] = {
   {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) 0 /* 20: Visitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Visitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79451,7 +79845,7 @@ const classtable_elt_t VFT_parser___parser_prod___Visitor[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Visitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: Visitor < Visitor: superclass init_table position */},
   {(bigint) parser___parser_prod___Visitor___visit},
   {(bigint) parser___parser_prod___Visitor___enter_visit},
   {(bigint) parser___parser_prod___Visitor___current_node},
@@ -79515,7 +79909,7 @@ val_t NEW_Visitor_parser___parser_prod___Visitor___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___State[55] = {
+const classtable_elt_t VFT_parser___State[53] = {
   {(bigint) 39 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "State" /* 2: Class Name */},
@@ -79532,11 +79926,9 @@ const classtable_elt_t VFT_parser___State[55] = {
   {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) 0 /* 20: State < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: State < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79565,7 +79957,7 @@ const classtable_elt_t VFT_parser___State[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: State < State: superclass init_table position */},
+  {(bigint) 1 /* 47: State < State: superclass init_table position */},
   {(bigint) parser___State___state},
   {(bigint) parser___State___state__eq},
   {(bigint) parser___State___nodes},
@@ -79638,15 +80030,13 @@ val_t NEW_State_parser___State___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_parser___Parser[62] = {
-  {(bigint) 2071 /* 0: Identity */},
+const classtable_elt_t VFT_parser___Parser[60] = {
+  {(bigint) 2083 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Parser" /* 2: Class Name */},
   {(bigint) 3 /* 3: Parser < Object: superclass typecheck marker */},
   {(bigint) 23 /* 4: Parser < TablesCapable: superclass typecheck marker */},
-  {(bigint) 2071 /* 5: Parser < Parser: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2083 /* 5: Parser < Parser: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79659,7 +80049,7 @@ const classtable_elt_t VFT_parser___Parser[62] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: Parser < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Parser < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79688,12 +80078,12 @@ const classtable_elt_t VFT_parser___Parser[62] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: Parser < TablesCapable: superclass init_table position */},
+  {(bigint) 0 /* 47: Parser < TablesCapable: superclass init_table position */},
   {(bigint) parser___tables___TablesCapable___lexer_goto},
   {(bigint) parser___tables___TablesCapable___lexer_accept},
   {(bigint) parser___tables___TablesCapable___parser_goto},
   {(bigint) parser___tables___TablesCapable___parser_action},
-  {(bigint) 2 /* 54: Parser < Parser: superclass init_table position */},
+  {(bigint) 2 /* 52: Parser < Parser: superclass init_table position */},
   {(bigint) parser___Parser___init},
   {(bigint) parser___Parser___go_to},
   {(bigint) parser___Parser___push},
@@ -79783,15 +80173,13 @@ 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[56] = {
-  {(bigint) 2299 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[54] = {
+  {(bigint) 2327 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ComputeProdLocationVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ComputeProdLocationVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: ComputeProdLocationVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2299 /* 5: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2327 /* 5: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79804,7 +80192,7 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ComputeProdLocationVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ComputeProdLocationVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79833,12 +80221,12 @@ const classtable_elt_t VFT_parser___ComputeProdLocationVisitor[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ComputeProdLocationVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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 /* 54: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: ComputeProdLocationVisitor < ComputeProdLocationVisitor: superclass init_table position */},
   {(bigint) parser___ComputeProdLocationVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -79934,15 +80322,13 @@ val_t NEW_ComputeProdLocationVisitor_parser___ComputeProdLocationVisitor___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction0[54] = {
-  {(bigint) 2039 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction0[52] = {
+  {(bigint) 2051 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction0" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction0 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction0 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2039 /* 5: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2051 /* 5: ReduceAction0 < ReduceAction0: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -79955,7 +80341,7 @@ const classtable_elt_t VFT_parser___ReduceAction0[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction0 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction0 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -79984,11 +80370,11 @@ const classtable_elt_t VFT_parser___ReduceAction0[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction0 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction0 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction0___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction0 < ReduceAction0: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction0 < ReduceAction0: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80053,15 +80439,13 @@ val_t NEW_ReduceAction0_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction1[54] = {
-  {(bigint) 2035 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction1[52] = {
+  {(bigint) 2047 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction1" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction1 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction1 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2035 /* 5: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2047 /* 5: ReduceAction1 < ReduceAction1: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80074,7 +80458,7 @@ const classtable_elt_t VFT_parser___ReduceAction1[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction1 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction1 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80103,11 +80487,11 @@ const classtable_elt_t VFT_parser___ReduceAction1[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction1 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction1 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction1___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction1 < ReduceAction1: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction1 < ReduceAction1: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80172,15 +80556,13 @@ val_t NEW_ReduceAction1_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction2[54] = {
-  {(bigint) 1591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction2[52] = {
+  {(bigint) 1603 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction2" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction2 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction2 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1591 /* 5: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1603 /* 5: ReduceAction2 < ReduceAction2: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80193,7 +80575,7 @@ const classtable_elt_t VFT_parser___ReduceAction2[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction2 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction2 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80222,11 +80604,11 @@ const classtable_elt_t VFT_parser___ReduceAction2[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction2 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction2 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction2___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction2 < ReduceAction2: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction2 < ReduceAction2: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80291,15 +80673,13 @@ val_t NEW_ReduceAction2_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction3[54] = {
-  {(bigint) 1187 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction3[52] = {
+  {(bigint) 1199 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction3" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction3 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction3 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1187 /* 5: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1199 /* 5: ReduceAction3 < ReduceAction3: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80312,7 +80692,7 @@ const classtable_elt_t VFT_parser___ReduceAction3[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction3 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction3 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80341,11 +80721,11 @@ const classtable_elt_t VFT_parser___ReduceAction3[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction3 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction3 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction3___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction3 < ReduceAction3: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction3 < ReduceAction3: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80410,15 +80790,13 @@ val_t NEW_ReduceAction3_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction4[54] = {
-  {(bigint) 835 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction4[52] = {
+  {(bigint) 847 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction4" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction4 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction4 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 835 /* 5: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 847 /* 5: ReduceAction4 < ReduceAction4: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80431,7 +80809,7 @@ const classtable_elt_t VFT_parser___ReduceAction4[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction4 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction4 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80460,11 +80838,11 @@ const classtable_elt_t VFT_parser___ReduceAction4[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction4 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction4 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction4___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction4 < ReduceAction4: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction4 < ReduceAction4: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80529,15 +80907,13 @@ val_t NEW_ReduceAction4_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction5[54] = {
-  {(bigint) 699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction5[52] = {
+  {(bigint) 711 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction5" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction5 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction5 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 699 /* 5: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 711 /* 5: ReduceAction5 < ReduceAction5: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80550,7 +80926,7 @@ const classtable_elt_t VFT_parser___ReduceAction5[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction5 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction5 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80579,11 +80955,11 @@ const classtable_elt_t VFT_parser___ReduceAction5[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction5 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction5 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction5___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction5 < ReduceAction5: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction5 < ReduceAction5: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80648,15 +81024,13 @@ val_t NEW_ReduceAction5_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction6[54] = {
-  {(bigint) 655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction6[52] = {
+  {(bigint) 667 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction6" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction6 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction6 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 655 /* 5: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 667 /* 5: ReduceAction6 < ReduceAction6: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80669,7 +81043,7 @@ const classtable_elt_t VFT_parser___ReduceAction6[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction6 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction6 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80698,11 +81072,11 @@ const classtable_elt_t VFT_parser___ReduceAction6[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction6 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction6 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction6___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction6 < ReduceAction6: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction6 < ReduceAction6: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80767,15 +81141,13 @@ val_t NEW_ReduceAction6_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction7[54] = {
-  {(bigint) 595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction7[52] = {
+  {(bigint) 607 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction7" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction7 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction7 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 595 /* 5: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 607 /* 5: ReduceAction7 < ReduceAction7: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80788,7 +81160,7 @@ const classtable_elt_t VFT_parser___ReduceAction7[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction7 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction7 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80817,11 +81189,11 @@ const classtable_elt_t VFT_parser___ReduceAction7[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction7 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction7 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction7___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction7 < ReduceAction7: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction7 < ReduceAction7: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -80886,15 +81258,13 @@ val_t NEW_ReduceAction7_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction8[54] = {
-  {(bigint) 443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction8[52] = {
+  {(bigint) 455 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction8" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction8 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction8 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 443 /* 5: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 455 /* 5: ReduceAction8 < ReduceAction8: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -80907,7 +81277,7 @@ const classtable_elt_t VFT_parser___ReduceAction8[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction8 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction8 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -80936,11 +81306,11 @@ const classtable_elt_t VFT_parser___ReduceAction8[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction8 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction8 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction8___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction8 < ReduceAction8: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction8 < ReduceAction8: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81005,15 +81375,13 @@ val_t NEW_ReduceAction8_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction9[54] = {
-  {(bigint) 399 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction9[52] = {
+  {(bigint) 411 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction9" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction9 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction9 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 399 /* 5: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 411 /* 5: ReduceAction9 < ReduceAction9: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81026,7 +81394,7 @@ const classtable_elt_t VFT_parser___ReduceAction9[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction9 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction9 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81055,11 +81423,11 @@ const classtable_elt_t VFT_parser___ReduceAction9[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction9 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction9 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction9___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction9 < ReduceAction9: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction9 < ReduceAction9: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81124,15 +81492,13 @@ val_t NEW_ReduceAction9_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction10[54] = {
-  {(bigint) 2031 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction10[52] = {
+  {(bigint) 2043 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction10" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction10 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction10 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2031 /* 5: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2043 /* 5: ReduceAction10 < ReduceAction10: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81145,7 +81511,7 @@ const classtable_elt_t VFT_parser___ReduceAction10[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction10 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction10 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81174,11 +81540,11 @@ const classtable_elt_t VFT_parser___ReduceAction10[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction10 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction10 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction10___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction10 < ReduceAction10: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction10 < ReduceAction10: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81243,15 +81609,13 @@ val_t NEW_ReduceAction10_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction11[54] = {
-  {(bigint) 1987 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction11[52] = {
+  {(bigint) 1999 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction11" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction11 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction11 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1987 /* 5: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1999 /* 5: ReduceAction11 < ReduceAction11: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81264,7 +81628,7 @@ const classtable_elt_t VFT_parser___ReduceAction11[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction11 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction11 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81293,11 +81657,11 @@ const classtable_elt_t VFT_parser___ReduceAction11[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction11 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction11 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction11___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction11 < ReduceAction11: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction11 < ReduceAction11: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81362,15 +81726,13 @@ val_t NEW_ReduceAction11_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction12[54] = {
-  {(bigint) 1943 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction12[52] = {
+  {(bigint) 1955 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction12" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction12 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction12 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1943 /* 5: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1955 /* 5: ReduceAction12 < ReduceAction12: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81383,7 +81745,7 @@ const classtable_elt_t VFT_parser___ReduceAction12[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction12 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction12 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81412,11 +81774,11 @@ const classtable_elt_t VFT_parser___ReduceAction12[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction12 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction12 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction12___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction12 < ReduceAction12: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction12 < ReduceAction12: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81481,15 +81843,13 @@ val_t NEW_ReduceAction12_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction13[54] = {
-  {(bigint) 1899 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction13[52] = {
+  {(bigint) 1911 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction13" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction13 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction13 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1899 /* 5: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1911 /* 5: ReduceAction13 < ReduceAction13: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81502,7 +81862,7 @@ const classtable_elt_t VFT_parser___ReduceAction13[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction13 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction13 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81531,11 +81891,11 @@ const classtable_elt_t VFT_parser___ReduceAction13[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction13 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction13 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction13___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction13 < ReduceAction13: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction13 < ReduceAction13: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81600,15 +81960,13 @@ val_t NEW_ReduceAction13_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction14[54] = {
-  {(bigint) 1855 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction14[52] = {
+  {(bigint) 1867 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction14" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction14 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction14 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1855 /* 5: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1867 /* 5: ReduceAction14 < ReduceAction14: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81621,7 +81979,7 @@ const classtable_elt_t VFT_parser___ReduceAction14[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction14 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction14 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81650,11 +82008,11 @@ const classtable_elt_t VFT_parser___ReduceAction14[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction14 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction14 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction14___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction14 < ReduceAction14: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction14 < ReduceAction14: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81719,15 +82077,13 @@ val_t NEW_ReduceAction14_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction15[54] = {
-  {(bigint) 1811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction15[52] = {
+  {(bigint) 1823 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction15" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction15 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction15 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1811 /* 5: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1823 /* 5: ReduceAction15 < ReduceAction15: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81740,7 +82096,7 @@ const classtable_elt_t VFT_parser___ReduceAction15[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction15 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction15 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81769,11 +82125,11 @@ const classtable_elt_t VFT_parser___ReduceAction15[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction15 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction15 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction15___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction15 < ReduceAction15: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction15 < ReduceAction15: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81838,15 +82194,13 @@ val_t NEW_ReduceAction15_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction16[54] = {
-  {(bigint) 1767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction16[52] = {
+  {(bigint) 1779 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction16" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction16 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction16 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1767 /* 5: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1779 /* 5: ReduceAction16 < ReduceAction16: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81859,7 +82213,7 @@ const classtable_elt_t VFT_parser___ReduceAction16[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction16 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction16 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -81888,11 +82242,11 @@ const classtable_elt_t VFT_parser___ReduceAction16[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction16 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction16 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction16___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction16 < ReduceAction16: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction16 < ReduceAction16: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -81957,15 +82311,13 @@ val_t NEW_ReduceAction16_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction17[54] = {
-  {(bigint) 1723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction17[52] = {
+  {(bigint) 1735 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction17" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction17 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction17 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1723 /* 5: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1735 /* 5: ReduceAction17 < ReduceAction17: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -81978,7 +82330,7 @@ const classtable_elt_t VFT_parser___ReduceAction17[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction17 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction17 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82007,11 +82359,11 @@ const classtable_elt_t VFT_parser___ReduceAction17[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction17 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction17 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction17___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction17 < ReduceAction17: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction17 < ReduceAction17: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82076,15 +82428,13 @@ val_t NEW_ReduceAction17_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction18[54] = {
-  {(bigint) 1679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction18[52] = {
+  {(bigint) 1691 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction18" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction18 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction18 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1679 /* 5: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1691 /* 5: ReduceAction18 < ReduceAction18: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82097,7 +82447,7 @@ const classtable_elt_t VFT_parser___ReduceAction18[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction18 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction18 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82126,11 +82476,11 @@ const classtable_elt_t VFT_parser___ReduceAction18[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction18 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction18 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction18___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction18 < ReduceAction18: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction18 < ReduceAction18: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82195,15 +82545,13 @@ val_t NEW_ReduceAction18_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction19[54] = {
-  {(bigint) 1635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction19[52] = {
+  {(bigint) 1647 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction19" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction19 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction19 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1635 /* 5: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1647 /* 5: ReduceAction19 < ReduceAction19: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82216,7 +82564,7 @@ const classtable_elt_t VFT_parser___ReduceAction19[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction19 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction19 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82245,11 +82593,11 @@ const classtable_elt_t VFT_parser___ReduceAction19[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction19 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction19 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction19___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction19 < ReduceAction19: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction19 < ReduceAction19: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82314,15 +82662,13 @@ val_t NEW_ReduceAction19_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction20[54] = {
-  {(bigint) 1587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction20[52] = {
+  {(bigint) 1599 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction20" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction20 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction20 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1587 /* 5: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1599 /* 5: ReduceAction20 < ReduceAction20: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82335,7 +82681,7 @@ const classtable_elt_t VFT_parser___ReduceAction20[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction20 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction20 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82364,11 +82710,11 @@ const classtable_elt_t VFT_parser___ReduceAction20[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction20 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction20 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction20___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction20 < ReduceAction20: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction20 < ReduceAction20: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82433,15 +82779,13 @@ val_t NEW_ReduceAction20_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction21[54] = {
-  {(bigint) 1543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction21[52] = {
+  {(bigint) 1555 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction21" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction21 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction21 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1543 /* 5: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1555 /* 5: ReduceAction21 < ReduceAction21: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82454,7 +82798,7 @@ const classtable_elt_t VFT_parser___ReduceAction21[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction21 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction21 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82483,11 +82827,11 @@ const classtable_elt_t VFT_parser___ReduceAction21[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction21 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction21 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction21___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction21 < ReduceAction21: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction21 < ReduceAction21: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82552,15 +82896,13 @@ val_t NEW_ReduceAction21_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction22[54] = {
-  {(bigint) 1503 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction22[52] = {
+  {(bigint) 1515 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction22" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction22 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction22 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1503 /* 5: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1515 /* 5: ReduceAction22 < ReduceAction22: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82573,7 +82915,7 @@ const classtable_elt_t VFT_parser___ReduceAction22[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction22 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction22 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82602,11 +82944,11 @@ const classtable_elt_t VFT_parser___ReduceAction22[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction22 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction22 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction22___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction22 < ReduceAction22: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction22 < ReduceAction22: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82671,15 +83013,13 @@ val_t NEW_ReduceAction22_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction23[54] = {
-  {(bigint) 1459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction23[52] = {
+  {(bigint) 1471 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction23" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction23 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction23 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1459 /* 5: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1471 /* 5: ReduceAction23 < ReduceAction23: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82692,7 +83032,7 @@ const classtable_elt_t VFT_parser___ReduceAction23[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction23 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction23 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82721,11 +83061,11 @@ const classtable_elt_t VFT_parser___ReduceAction23[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction23 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction23 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction23___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction23 < ReduceAction23: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction23 < ReduceAction23: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82790,15 +83130,13 @@ val_t NEW_ReduceAction23_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction24[54] = {
-  {(bigint) 1419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction24[52] = {
+  {(bigint) 1431 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction24" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction24 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction24 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1419 /* 5: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1431 /* 5: ReduceAction24 < ReduceAction24: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82811,7 +83149,7 @@ const classtable_elt_t VFT_parser___ReduceAction24[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction24 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction24 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82840,11 +83178,11 @@ const classtable_elt_t VFT_parser___ReduceAction24[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction24 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction24 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction24___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction24 < ReduceAction24: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction24 < ReduceAction24: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -82909,15 +83247,13 @@ val_t NEW_ReduceAction24_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction25[54] = {
-  {(bigint) 1383 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction25[52] = {
+  {(bigint) 1395 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction25" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction25 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction25 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1383 /* 5: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1395 /* 5: ReduceAction25 < ReduceAction25: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -82930,7 +83266,7 @@ const classtable_elt_t VFT_parser___ReduceAction25[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction25 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction25 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -82959,11 +83295,11 @@ const classtable_elt_t VFT_parser___ReduceAction25[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction25 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction25 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction25___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction25 < ReduceAction25: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction25 < ReduceAction25: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83028,15 +83364,13 @@ val_t NEW_ReduceAction25_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction26[54] = {
-  {(bigint) 1351 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction26[52] = {
+  {(bigint) 1363 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction26" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction26 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction26 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1351 /* 5: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1363 /* 5: ReduceAction26 < ReduceAction26: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83049,7 +83383,7 @@ const classtable_elt_t VFT_parser___ReduceAction26[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction26 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction26 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83078,11 +83412,11 @@ const classtable_elt_t VFT_parser___ReduceAction26[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction26 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction26 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction26___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction26 < ReduceAction26: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction26 < ReduceAction26: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83147,15 +83481,13 @@ val_t NEW_ReduceAction26_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction27[54] = {
-  {(bigint) 1319 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction27[52] = {
+  {(bigint) 1331 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction27" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction27 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction27 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1319 /* 5: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1331 /* 5: ReduceAction27 < ReduceAction27: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83168,7 +83500,7 @@ const classtable_elt_t VFT_parser___ReduceAction27[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction27 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction27 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83197,11 +83529,11 @@ const classtable_elt_t VFT_parser___ReduceAction27[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction27 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction27 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction27___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction27 < ReduceAction27: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction27 < ReduceAction27: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83266,15 +83598,13 @@ val_t NEW_ReduceAction27_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction28[54] = {
-  {(bigint) 1275 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction28[52] = {
+  {(bigint) 1287 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction28" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction28 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction28 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1275 /* 5: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1287 /* 5: ReduceAction28 < ReduceAction28: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83287,7 +83617,7 @@ const classtable_elt_t VFT_parser___ReduceAction28[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction28 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction28 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83316,11 +83646,11 @@ const classtable_elt_t VFT_parser___ReduceAction28[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction28 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction28 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction28___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction28 < ReduceAction28: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction28 < ReduceAction28: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83385,15 +83715,13 @@ val_t NEW_ReduceAction28_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction29[54] = {
-  {(bigint) 1231 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction29[52] = {
+  {(bigint) 1243 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction29" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction29 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction29 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1231 /* 5: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1243 /* 5: ReduceAction29 < ReduceAction29: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83406,7 +83734,7 @@ const classtable_elt_t VFT_parser___ReduceAction29[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction29 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction29 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83435,11 +83763,11 @@ const classtable_elt_t VFT_parser___ReduceAction29[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction29 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction29 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction29___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction29 < ReduceAction29: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction29 < ReduceAction29: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83504,15 +83832,13 @@ val_t NEW_ReduceAction29_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction30[54] = {
-  {(bigint) 1183 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction30[52] = {
+  {(bigint) 1195 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction30" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction30 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction30 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1183 /* 5: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1195 /* 5: ReduceAction30 < ReduceAction30: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83525,7 +83851,7 @@ const classtable_elt_t VFT_parser___ReduceAction30[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction30 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction30 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83554,11 +83880,11 @@ const classtable_elt_t VFT_parser___ReduceAction30[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction30 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction30 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction30___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction30 < ReduceAction30: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction30 < ReduceAction30: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83623,15 +83949,13 @@ val_t NEW_ReduceAction30_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction31[54] = {
-  {(bigint) 1139 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction31[52] = {
+  {(bigint) 1151 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction31" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction31 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction31 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1139 /* 5: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1151 /* 5: ReduceAction31 < ReduceAction31: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83644,7 +83968,7 @@ const classtable_elt_t VFT_parser___ReduceAction31[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction31 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction31 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83673,11 +83997,11 @@ const classtable_elt_t VFT_parser___ReduceAction31[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction31 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction31 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction31___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction31 < ReduceAction31: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction31 < ReduceAction31: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83742,15 +84066,13 @@ val_t NEW_ReduceAction31_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction32[54] = {
-  {(bigint) 1103 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction32[52] = {
+  {(bigint) 1115 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction32" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction32 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction32 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1103 /* 5: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1115 /* 5: ReduceAction32 < ReduceAction32: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83763,7 +84085,7 @@ const classtable_elt_t VFT_parser___ReduceAction32[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction32 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction32 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83792,11 +84114,11 @@ const classtable_elt_t VFT_parser___ReduceAction32[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction32 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction32 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction32___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction32 < ReduceAction32: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction32 < ReduceAction32: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83861,15 +84183,13 @@ val_t NEW_ReduceAction32_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction33[54] = {
-  {(bigint) 1059 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction33[52] = {
+  {(bigint) 1071 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction33" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction33 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction33 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1059 /* 5: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1071 /* 5: ReduceAction33 < ReduceAction33: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -83882,7 +84202,7 @@ const classtable_elt_t VFT_parser___ReduceAction33[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction33 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction33 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -83911,11 +84231,11 @@ const classtable_elt_t VFT_parser___ReduceAction33[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction33 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction33 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction33___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction33 < ReduceAction33: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction33 < ReduceAction33: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -83980,15 +84300,13 @@ val_t NEW_ReduceAction33_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction34[54] = {
-  {(bigint) 1035 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction34[52] = {
+  {(bigint) 1047 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction34" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction34 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction34 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1035 /* 5: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1047 /* 5: ReduceAction34 < ReduceAction34: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84001,7 +84319,7 @@ const classtable_elt_t VFT_parser___ReduceAction34[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction34 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction34 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84030,11 +84348,11 @@ const classtable_elt_t VFT_parser___ReduceAction34[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction34 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction34 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction34___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction34 < ReduceAction34: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction34 < ReduceAction34: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84099,15 +84417,13 @@ val_t NEW_ReduceAction34_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction35[54] = {
-  {(bigint) 999 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction35[52] = {
+  {(bigint) 1011 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction35" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction35 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction35 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 999 /* 5: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1011 /* 5: ReduceAction35 < ReduceAction35: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84120,7 +84436,7 @@ const classtable_elt_t VFT_parser___ReduceAction35[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction35 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction35 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84149,11 +84465,11 @@ const classtable_elt_t VFT_parser___ReduceAction35[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction35 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction35 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction35___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction35 < ReduceAction35: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction35 < ReduceAction35: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84218,15 +84534,13 @@ val_t NEW_ReduceAction35_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction36[54] = {
-  {(bigint) 963 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction36[52] = {
+  {(bigint) 975 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction36" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction36 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction36 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 963 /* 5: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 975 /* 5: ReduceAction36 < ReduceAction36: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84239,7 +84553,7 @@ const classtable_elt_t VFT_parser___ReduceAction36[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction36 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction36 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84268,11 +84582,11 @@ const classtable_elt_t VFT_parser___ReduceAction36[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction36 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction36 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction36___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction36 < ReduceAction36: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction36 < ReduceAction36: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84337,15 +84651,13 @@ val_t NEW_ReduceAction36_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction37[54] = {
-  {(bigint) 927 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction37[52] = {
+  {(bigint) 939 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction37" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction37 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction37 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 927 /* 5: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 939 /* 5: ReduceAction37 < ReduceAction37: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84358,7 +84670,7 @@ const classtable_elt_t VFT_parser___ReduceAction37[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction37 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction37 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84387,11 +84699,11 @@ const classtable_elt_t VFT_parser___ReduceAction37[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction37 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction37 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction37___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction37 < ReduceAction37: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction37 < ReduceAction37: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84456,15 +84768,13 @@ val_t NEW_ReduceAction37_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction39[54] = {
-  {(bigint) 871 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction39[52] = {
+  {(bigint) 883 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction39" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction39 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction39 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 871 /* 5: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 883 /* 5: ReduceAction39 < ReduceAction39: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84477,7 +84787,7 @@ const classtable_elt_t VFT_parser___ReduceAction39[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction39 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction39 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84506,11 +84816,11 @@ const classtable_elt_t VFT_parser___ReduceAction39[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction39 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction39 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction39___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction39 < ReduceAction39: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction39 < ReduceAction39: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84575,15 +84885,13 @@ val_t NEW_ReduceAction39_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction40[54] = {
-  {(bigint) 831 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction40[52] = {
+  {(bigint) 843 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction40" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction40 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction40 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 831 /* 5: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 843 /* 5: ReduceAction40 < ReduceAction40: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84596,7 +84904,7 @@ const classtable_elt_t VFT_parser___ReduceAction40[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction40 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction40 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84625,11 +84933,11 @@ const classtable_elt_t VFT_parser___ReduceAction40[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction40 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction40 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction40___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction40 < ReduceAction40: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction40 < ReduceAction40: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84694,15 +85002,13 @@ val_t NEW_ReduceAction40_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction41[54] = {
-  {(bigint) 811 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction41[52] = {
+  {(bigint) 823 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction41" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction41 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction41 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 811 /* 5: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 823 /* 5: ReduceAction41 < ReduceAction41: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84715,7 +85021,7 @@ const classtable_elt_t VFT_parser___ReduceAction41[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction41 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction41 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84744,11 +85050,11 @@ const classtable_elt_t VFT_parser___ReduceAction41[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction41 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction41 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction41___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction41 < ReduceAction41: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction41 < ReduceAction41: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84813,15 +85119,13 @@ val_t NEW_ReduceAction41_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction42[54] = {
-  {(bigint) 771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction42[52] = {
+  {(bigint) 783 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction42" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction42 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction42 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 771 /* 5: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 783 /* 5: ReduceAction42 < ReduceAction42: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84834,7 +85138,7 @@ const classtable_elt_t VFT_parser___ReduceAction42[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction42 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction42 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84863,11 +85167,11 @@ const classtable_elt_t VFT_parser___ReduceAction42[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction42 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction42 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction42___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction42 < ReduceAction42: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction42 < ReduceAction42: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -84932,15 +85236,13 @@ val_t NEW_ReduceAction42_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction43[54] = {
-  {(bigint) 735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction43[52] = {
+  {(bigint) 747 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction43" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction43 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction43 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 735 /* 5: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 747 /* 5: ReduceAction43 < ReduceAction43: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -84953,7 +85255,7 @@ const classtable_elt_t VFT_parser___ReduceAction43[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction43 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction43 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -84982,11 +85284,11 @@ const classtable_elt_t VFT_parser___ReduceAction43[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction43 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction43 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction43___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction43 < ReduceAction43: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction43 < ReduceAction43: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85051,15 +85353,13 @@ val_t NEW_ReduceAction43_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction44[54] = {
-  {(bigint) 723 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction44[52] = {
+  {(bigint) 735 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction44" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction44 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction44 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 723 /* 5: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 735 /* 5: ReduceAction44 < ReduceAction44: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85072,7 +85372,7 @@ const classtable_elt_t VFT_parser___ReduceAction44[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction44 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction44 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85101,11 +85401,11 @@ const classtable_elt_t VFT_parser___ReduceAction44[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction44 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction44 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction44___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction44 < ReduceAction44: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction44 < ReduceAction44: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85170,15 +85470,13 @@ val_t NEW_ReduceAction44_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction45[54] = {
-  {(bigint) 719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction45[52] = {
+  {(bigint) 731 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction45" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction45 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction45 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 719 /* 5: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 731 /* 5: ReduceAction45 < ReduceAction45: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85191,7 +85489,7 @@ const classtable_elt_t VFT_parser___ReduceAction45[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction45 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction45 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85220,11 +85518,11 @@ const classtable_elt_t VFT_parser___ReduceAction45[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction45 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction45 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction45___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction45 < ReduceAction45: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction45 < ReduceAction45: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85289,15 +85587,13 @@ val_t NEW_ReduceAction45_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction46[54] = {
-  {(bigint) 715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction46[52] = {
+  {(bigint) 727 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction46" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction46 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction46 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 715 /* 5: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 727 /* 5: ReduceAction46 < ReduceAction46: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85310,7 +85606,7 @@ const classtable_elt_t VFT_parser___ReduceAction46[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction46 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction46 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85339,11 +85635,11 @@ const classtable_elt_t VFT_parser___ReduceAction46[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction46 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction46 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction46___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction46 < ReduceAction46: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction46 < ReduceAction46: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85408,15 +85704,13 @@ val_t NEW_ReduceAction46_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction47[54] = {
-  {(bigint) 711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction47[52] = {
+  {(bigint) 723 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction47" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction47 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction47 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 711 /* 5: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 723 /* 5: ReduceAction47 < ReduceAction47: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85429,7 +85723,7 @@ const classtable_elt_t VFT_parser___ReduceAction47[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction47 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction47 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85458,11 +85752,11 @@ const classtable_elt_t VFT_parser___ReduceAction47[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction47 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction47 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction47___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction47 < ReduceAction47: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction47 < ReduceAction47: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85527,15 +85821,13 @@ val_t NEW_ReduceAction47_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction48[54] = {
-  {(bigint) 707 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction48[52] = {
+  {(bigint) 719 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction48" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction48 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction48 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 707 /* 5: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 719 /* 5: ReduceAction48 < ReduceAction48: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85548,7 +85840,7 @@ const classtable_elt_t VFT_parser___ReduceAction48[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction48 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction48 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85577,11 +85869,11 @@ const classtable_elt_t VFT_parser___ReduceAction48[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction48 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction48 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction48___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction48 < ReduceAction48: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction48 < ReduceAction48: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85646,15 +85938,13 @@ val_t NEW_ReduceAction48_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction49[54] = {
-  {(bigint) 703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction49[52] = {
+  {(bigint) 715 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction49" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction49 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction49 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 703 /* 5: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 715 /* 5: ReduceAction49 < ReduceAction49: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85667,7 +85957,7 @@ const classtable_elt_t VFT_parser___ReduceAction49[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction49 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction49 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85696,11 +85986,11 @@ const classtable_elt_t VFT_parser___ReduceAction49[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction49 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction49 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction49___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction49 < ReduceAction49: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction49 < ReduceAction49: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85765,15 +86055,13 @@ val_t NEW_ReduceAction49_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction50[54] = {
-  {(bigint) 695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction50[52] = {
+  {(bigint) 707 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction50" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction50 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction50 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 695 /* 5: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 707 /* 5: ReduceAction50 < ReduceAction50: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85786,7 +86074,7 @@ const classtable_elt_t VFT_parser___ReduceAction50[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction50 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction50 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85815,11 +86103,11 @@ const classtable_elt_t VFT_parser___ReduceAction50[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction50 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction50 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction50___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction50 < ReduceAction50: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction50 < ReduceAction50: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -85884,15 +86172,13 @@ val_t NEW_ReduceAction50_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction51[54] = {
-  {(bigint) 691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction51[52] = {
+  {(bigint) 703 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction51" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction51 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction51 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 691 /* 5: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 703 /* 5: ReduceAction51 < ReduceAction51: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -85905,7 +86191,7 @@ const classtable_elt_t VFT_parser___ReduceAction51[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction51 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction51 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -85934,11 +86220,11 @@ const classtable_elt_t VFT_parser___ReduceAction51[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction51 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction51 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction51___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction51 < ReduceAction51: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction51 < ReduceAction51: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86003,15 +86289,13 @@ val_t NEW_ReduceAction51_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction52[54] = {
-  {(bigint) 687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction52[52] = {
+  {(bigint) 699 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction52" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction52 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction52 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 687 /* 5: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 699 /* 5: ReduceAction52 < ReduceAction52: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86024,7 +86308,7 @@ const classtable_elt_t VFT_parser___ReduceAction52[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction52 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction52 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86053,11 +86337,11 @@ const classtable_elt_t VFT_parser___ReduceAction52[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction52 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction52 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction52___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction52 < ReduceAction52: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction52 < ReduceAction52: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86122,15 +86406,13 @@ val_t NEW_ReduceAction52_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction53[54] = {
-  {(bigint) 683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction53[52] = {
+  {(bigint) 695 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction53" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction53 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction53 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 683 /* 5: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 695 /* 5: ReduceAction53 < ReduceAction53: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86143,7 +86425,7 @@ const classtable_elt_t VFT_parser___ReduceAction53[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction53 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction53 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86172,11 +86454,11 @@ const classtable_elt_t VFT_parser___ReduceAction53[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction53 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction53 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction53___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction53 < ReduceAction53: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction53 < ReduceAction53: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86241,15 +86523,13 @@ val_t NEW_ReduceAction53_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction54[54] = {
-  {(bigint) 679 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction54[52] = {
+  {(bigint) 691 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction54" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction54 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction54 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 679 /* 5: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 691 /* 5: ReduceAction54 < ReduceAction54: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86262,7 +86542,7 @@ const classtable_elt_t VFT_parser___ReduceAction54[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction54 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction54 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86291,11 +86571,11 @@ const classtable_elt_t VFT_parser___ReduceAction54[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction54 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction54 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction54___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction54 < ReduceAction54: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction54 < ReduceAction54: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86360,15 +86640,13 @@ val_t NEW_ReduceAction54_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction55[54] = {
-  {(bigint) 675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction55[52] = {
+  {(bigint) 687 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction55" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction55 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction55 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 675 /* 5: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 687 /* 5: ReduceAction55 < ReduceAction55: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86381,7 +86659,7 @@ const classtable_elt_t VFT_parser___ReduceAction55[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction55 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction55 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86410,11 +86688,11 @@ const classtable_elt_t VFT_parser___ReduceAction55[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction55 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction55 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction55___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction55 < ReduceAction55: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction55 < ReduceAction55: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86479,15 +86757,13 @@ val_t NEW_ReduceAction55_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction56[54] = {
-  {(bigint) 671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction56[52] = {
+  {(bigint) 683 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction56" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction56 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction56 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 671 /* 5: ReduceAction56 < ReduceAction56: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 683 /* 5: ReduceAction56 < ReduceAction56: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86500,7 +86776,7 @@ const classtable_elt_t VFT_parser___ReduceAction56[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction56 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction56 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86529,11 +86805,11 @@ const classtable_elt_t VFT_parser___ReduceAction56[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction56 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction56 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction56___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction56 < ReduceAction56: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction56 < ReduceAction56: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86598,15 +86874,13 @@ val_t NEW_ReduceAction56_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction57[54] = {
-  {(bigint) 667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction57[52] = {
+  {(bigint) 679 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction57" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction57 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction57 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 667 /* 5: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 679 /* 5: ReduceAction57 < ReduceAction57: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86619,7 +86893,7 @@ const classtable_elt_t VFT_parser___ReduceAction57[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction57 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction57 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86648,11 +86922,11 @@ const classtable_elt_t VFT_parser___ReduceAction57[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction57 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction57 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction57___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction57 < ReduceAction57: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction57 < ReduceAction57: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86717,15 +86991,13 @@ val_t NEW_ReduceAction57_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction58[54] = {
-  {(bigint) 663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction58[52] = {
+  {(bigint) 675 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction58" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction58 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction58 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 663 /* 5: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 675 /* 5: ReduceAction58 < ReduceAction58: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86738,7 +87010,7 @@ const classtable_elt_t VFT_parser___ReduceAction58[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction58 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction58 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86767,11 +87039,11 @@ const classtable_elt_t VFT_parser___ReduceAction58[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction58 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction58 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction58___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction58 < ReduceAction58: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction58 < ReduceAction58: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86836,15 +87108,13 @@ val_t NEW_ReduceAction58_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction59[54] = {
-  {(bigint) 659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction59[52] = {
+  {(bigint) 671 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction59" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction59 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction59 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 659 /* 5: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 671 /* 5: ReduceAction59 < ReduceAction59: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86857,7 +87127,7 @@ const classtable_elt_t VFT_parser___ReduceAction59[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction59 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction59 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -86886,11 +87156,11 @@ const classtable_elt_t VFT_parser___ReduceAction59[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction59 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction59 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction59___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction59 < ReduceAction59: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction59 < ReduceAction59: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -86955,15 +87225,13 @@ val_t NEW_ReduceAction59_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction60[54] = {
-  {(bigint) 651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction60[52] = {
+  {(bigint) 663 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction60" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction60 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction60 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 651 /* 5: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 663 /* 5: ReduceAction60 < ReduceAction60: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -86976,7 +87244,7 @@ const classtable_elt_t VFT_parser___ReduceAction60[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction60 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction60 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87005,11 +87273,11 @@ const classtable_elt_t VFT_parser___ReduceAction60[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction60 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction60 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction60___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction60 < ReduceAction60: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction60 < ReduceAction60: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87074,15 +87342,13 @@ val_t NEW_ReduceAction60_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction61[54] = {
-  {(bigint) 647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction61[52] = {
+  {(bigint) 659 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction61" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction61 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction61 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 647 /* 5: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 659 /* 5: ReduceAction61 < ReduceAction61: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87095,7 +87361,7 @@ const classtable_elt_t VFT_parser___ReduceAction61[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction61 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction61 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87124,11 +87390,11 @@ const classtable_elt_t VFT_parser___ReduceAction61[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction61 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction61 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction61___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction61 < ReduceAction61: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction61 < ReduceAction61: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87193,15 +87459,13 @@ val_t NEW_ReduceAction61_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction62[54] = {
-  {(bigint) 643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction62[52] = {
+  {(bigint) 655 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction62" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction62 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction62 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 643 /* 5: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 655 /* 5: ReduceAction62 < ReduceAction62: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87214,7 +87478,7 @@ const classtable_elt_t VFT_parser___ReduceAction62[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction62 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction62 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87243,11 +87507,11 @@ const classtable_elt_t VFT_parser___ReduceAction62[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction62 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction62 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction62___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction62 < ReduceAction62: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction62 < ReduceAction62: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87312,15 +87576,13 @@ val_t NEW_ReduceAction62_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction63[54] = {
-  {(bigint) 639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction63[52] = {
+  {(bigint) 651 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction63" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction63 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction63 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 639 /* 5: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 651 /* 5: ReduceAction63 < ReduceAction63: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87333,7 +87595,7 @@ const classtable_elt_t VFT_parser___ReduceAction63[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction63 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction63 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87362,11 +87624,11 @@ const classtable_elt_t VFT_parser___ReduceAction63[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction63 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction63 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction63___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction63 < ReduceAction63: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction63 < ReduceAction63: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87431,15 +87693,13 @@ val_t NEW_ReduceAction63_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction64[54] = {
-  {(bigint) 635 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction64[52] = {
+  {(bigint) 647 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction64" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction64 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction64 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 635 /* 5: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 647 /* 5: ReduceAction64 < ReduceAction64: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87452,7 +87712,7 @@ const classtable_elt_t VFT_parser___ReduceAction64[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction64 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction64 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87481,11 +87741,11 @@ const classtable_elt_t VFT_parser___ReduceAction64[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction64 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction64 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction64___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction64 < ReduceAction64: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction64 < ReduceAction64: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87550,15 +87810,13 @@ val_t NEW_ReduceAction64_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction65[54] = {
-  {(bigint) 631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction65[52] = {
+  {(bigint) 643 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction65" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction65 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction65 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 631 /* 5: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 643 /* 5: ReduceAction65 < ReduceAction65: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87571,7 +87829,7 @@ const classtable_elt_t VFT_parser___ReduceAction65[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction65 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction65 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87600,11 +87858,11 @@ const classtable_elt_t VFT_parser___ReduceAction65[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction65 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction65 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction65___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction65 < ReduceAction65: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction65 < ReduceAction65: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87669,15 +87927,13 @@ val_t NEW_ReduceAction65_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction66[54] = {
-  {(bigint) 627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction66[52] = {
+  {(bigint) 639 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction66" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction66 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction66 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 627 /* 5: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 639 /* 5: ReduceAction66 < ReduceAction66: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87690,7 +87946,7 @@ const classtable_elt_t VFT_parser___ReduceAction66[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction66 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction66 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87719,11 +87975,11 @@ const classtable_elt_t VFT_parser___ReduceAction66[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction66 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction66 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction66___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction66 < ReduceAction66: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction66 < ReduceAction66: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87788,15 +88044,13 @@ val_t NEW_ReduceAction66_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction67[54] = {
-  {(bigint) 623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction67[52] = {
+  {(bigint) 635 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction67" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction67 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction67 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 623 /* 5: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 635 /* 5: ReduceAction67 < ReduceAction67: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87809,7 +88063,7 @@ const classtable_elt_t VFT_parser___ReduceAction67[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction67 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction67 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87838,11 +88092,11 @@ const classtable_elt_t VFT_parser___ReduceAction67[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction67 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction67 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction67___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction67 < ReduceAction67: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction67 < ReduceAction67: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -87907,15 +88161,13 @@ val_t NEW_ReduceAction67_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction68[54] = {
-  {(bigint) 619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction68[52] = {
+  {(bigint) 631 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction68" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction68 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction68 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 619 /* 5: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 631 /* 5: ReduceAction68 < ReduceAction68: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -87928,7 +88180,7 @@ const classtable_elt_t VFT_parser___ReduceAction68[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction68 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction68 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -87957,11 +88209,11 @@ const classtable_elt_t VFT_parser___ReduceAction68[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction68 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction68 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction68___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction68 < ReduceAction68: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction68 < ReduceAction68: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88026,15 +88278,13 @@ val_t NEW_ReduceAction68_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction69[54] = {
-  {(bigint) 607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction69[52] = {
+  {(bigint) 619 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction69" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction69 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction69 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 607 /* 5: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 619 /* 5: ReduceAction69 < ReduceAction69: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88047,7 +88297,7 @@ const classtable_elt_t VFT_parser___ReduceAction69[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction69 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction69 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88076,11 +88326,11 @@ const classtable_elt_t VFT_parser___ReduceAction69[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction69 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction69 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction69___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction69 < ReduceAction69: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction69 < ReduceAction69: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88145,15 +88395,13 @@ val_t NEW_ReduceAction69_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction70[54] = {
-  {(bigint) 591 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction70[52] = {
+  {(bigint) 603 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction70" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction70 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction70 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 591 /* 5: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 603 /* 5: ReduceAction70 < ReduceAction70: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88166,7 +88414,7 @@ const classtable_elt_t VFT_parser___ReduceAction70[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction70 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction70 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88195,11 +88443,11 @@ const classtable_elt_t VFT_parser___ReduceAction70[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction70 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction70 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction70___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction70 < ReduceAction70: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction70 < ReduceAction70: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88264,15 +88512,13 @@ val_t NEW_ReduceAction70_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction71[54] = {
-  {(bigint) 579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction71[52] = {
+  {(bigint) 591 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction71" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction71 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction71 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 579 /* 5: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 591 /* 5: ReduceAction71 < ReduceAction71: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88285,7 +88531,7 @@ const classtable_elt_t VFT_parser___ReduceAction71[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction71 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction71 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88314,11 +88560,11 @@ const classtable_elt_t VFT_parser___ReduceAction71[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction71 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction71 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction71___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction71 < ReduceAction71: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction71 < ReduceAction71: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88383,15 +88629,13 @@ val_t NEW_ReduceAction71_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction72[54] = {
-  {(bigint) 551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction72[52] = {
+  {(bigint) 563 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction72" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction72 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction72 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 551 /* 5: ReduceAction72 < ReduceAction72: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 563 /* 5: ReduceAction72 < ReduceAction72: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88404,7 +88648,7 @@ const classtable_elt_t VFT_parser___ReduceAction72[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction72 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction72 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88433,11 +88677,11 @@ const classtable_elt_t VFT_parser___ReduceAction72[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction72 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction72 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction72___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction72 < ReduceAction72: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction72 < ReduceAction72: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88502,15 +88746,13 @@ val_t NEW_ReduceAction72_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction73[54] = {
-  {(bigint) 515 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction73[52] = {
+  {(bigint) 527 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction73" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction73 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction73 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 515 /* 5: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 527 /* 5: ReduceAction73 < ReduceAction73: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88523,7 +88765,7 @@ const classtable_elt_t VFT_parser___ReduceAction73[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction73 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction73 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88552,11 +88794,11 @@ const classtable_elt_t VFT_parser___ReduceAction73[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction73 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction73 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction73___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction73 < ReduceAction73: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction73 < ReduceAction73: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88621,15 +88863,13 @@ val_t NEW_ReduceAction73_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction74[54] = {
-  {(bigint) 487 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction74[52] = {
+  {(bigint) 499 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction74" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction74 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction74 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 487 /* 5: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 499 /* 5: ReduceAction74 < ReduceAction74: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88642,7 +88882,7 @@ const classtable_elt_t VFT_parser___ReduceAction74[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction74 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction74 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88671,11 +88911,11 @@ const classtable_elt_t VFT_parser___ReduceAction74[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction74 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction74 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction74___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction74 < ReduceAction74: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction74 < ReduceAction74: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88740,15 +88980,13 @@ val_t NEW_ReduceAction74_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction75[54] = {
-  {(bigint) 463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction75[52] = {
+  {(bigint) 475 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction75" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction75 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction75 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 463 /* 5: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 475 /* 5: ReduceAction75 < ReduceAction75: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88761,7 +88999,7 @@ const classtable_elt_t VFT_parser___ReduceAction75[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction75 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction75 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88790,11 +89028,11 @@ const classtable_elt_t VFT_parser___ReduceAction75[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction75 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction75 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction75___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction75 < ReduceAction75: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction75 < ReduceAction75: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88859,15 +89097,13 @@ val_t NEW_ReduceAction75_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction76[54] = {
-  {(bigint) 459 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction76[52] = {
+  {(bigint) 471 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction76" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction76 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction76 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 459 /* 5: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 471 /* 5: ReduceAction76 < ReduceAction76: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88880,7 +89116,7 @@ const classtable_elt_t VFT_parser___ReduceAction76[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction76 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction76 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -88909,11 +89145,11 @@ const classtable_elt_t VFT_parser___ReduceAction76[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction76 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction76 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction76___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction76 < ReduceAction76: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction76 < ReduceAction76: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -88978,15 +89214,13 @@ val_t NEW_ReduceAction76_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction77[54] = {
-  {(bigint) 455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction77[52] = {
+  {(bigint) 467 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction77" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction77 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction77 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 455 /* 5: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 467 /* 5: ReduceAction77 < ReduceAction77: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -88999,7 +89233,7 @@ const classtable_elt_t VFT_parser___ReduceAction77[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction77 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction77 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89028,11 +89262,11 @@ const classtable_elt_t VFT_parser___ReduceAction77[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction77 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction77 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction77___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction77 < ReduceAction77: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction77 < ReduceAction77: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89097,15 +89331,13 @@ val_t NEW_ReduceAction77_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction78[54] = {
-  {(bigint) 451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction78[52] = {
+  {(bigint) 463 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction78" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction78 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction78 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 451 /* 5: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 463 /* 5: ReduceAction78 < ReduceAction78: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89118,7 +89350,7 @@ const classtable_elt_t VFT_parser___ReduceAction78[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction78 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction78 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89147,11 +89379,11 @@ const classtable_elt_t VFT_parser___ReduceAction78[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction78 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction78 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction78___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction78 < ReduceAction78: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction78 < ReduceAction78: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89216,15 +89448,13 @@ val_t NEW_ReduceAction78_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction79[54] = {
-  {(bigint) 447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction79[52] = {
+  {(bigint) 459 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction79" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction79 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction79 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 447 /* 5: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 459 /* 5: ReduceAction79 < ReduceAction79: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89237,7 +89467,7 @@ const classtable_elt_t VFT_parser___ReduceAction79[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction79 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction79 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89266,11 +89496,11 @@ const classtable_elt_t VFT_parser___ReduceAction79[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction79 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction79 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction79___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction79 < ReduceAction79: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction79 < ReduceAction79: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89335,15 +89565,13 @@ val_t NEW_ReduceAction79_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction80[54] = {
-  {(bigint) 439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction80[52] = {
+  {(bigint) 451 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction80" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction80 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction80 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 439 /* 5: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 451 /* 5: ReduceAction80 < ReduceAction80: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89356,7 +89584,7 @@ const classtable_elt_t VFT_parser___ReduceAction80[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction80 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction80 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89385,11 +89613,11 @@ const classtable_elt_t VFT_parser___ReduceAction80[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction80 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction80 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction80___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction80 < ReduceAction80: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction80 < ReduceAction80: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89454,15 +89682,13 @@ val_t NEW_ReduceAction80_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction81[54] = {
-  {(bigint) 435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction81[52] = {
+  {(bigint) 447 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction81" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction81 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction81 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 435 /* 5: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 447 /* 5: ReduceAction81 < ReduceAction81: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89475,7 +89701,7 @@ const classtable_elt_t VFT_parser___ReduceAction81[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction81 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction81 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89504,11 +89730,11 @@ const classtable_elt_t VFT_parser___ReduceAction81[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction81 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction81 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction81___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction81 < ReduceAction81: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction81 < ReduceAction81: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89573,15 +89799,13 @@ val_t NEW_ReduceAction81_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction82[54] = {
-  {(bigint) 431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction82[52] = {
+  {(bigint) 443 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction82" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction82 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction82 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 431 /* 5: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 443 /* 5: ReduceAction82 < ReduceAction82: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89594,7 +89818,7 @@ const classtable_elt_t VFT_parser___ReduceAction82[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction82 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction82 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89623,11 +89847,11 @@ const classtable_elt_t VFT_parser___ReduceAction82[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction82 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction82 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction82___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction82 < ReduceAction82: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction82 < ReduceAction82: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89692,15 +89916,13 @@ val_t NEW_ReduceAction82_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction83[54] = {
-  {(bigint) 427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction83[52] = {
+  {(bigint) 439 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction83" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction83 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction83 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 427 /* 5: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 439 /* 5: ReduceAction83 < ReduceAction83: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89713,7 +89935,7 @@ const classtable_elt_t VFT_parser___ReduceAction83[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction83 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction83 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89742,11 +89964,11 @@ const classtable_elt_t VFT_parser___ReduceAction83[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction83 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction83 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction83___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction83 < ReduceAction83: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction83 < ReduceAction83: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89811,15 +90033,13 @@ val_t NEW_ReduceAction83_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction84[54] = {
-  {(bigint) 423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction84[52] = {
+  {(bigint) 435 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction84" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction84 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction84 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 423 /* 5: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 435 /* 5: ReduceAction84 < ReduceAction84: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89832,7 +90052,7 @@ const classtable_elt_t VFT_parser___ReduceAction84[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction84 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction84 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89861,11 +90081,11 @@ const classtable_elt_t VFT_parser___ReduceAction84[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction84 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction84 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction84___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction84 < ReduceAction84: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction84 < ReduceAction84: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -89930,15 +90150,13 @@ val_t NEW_ReduceAction84_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction85[54] = {
-  {(bigint) 419 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction85[52] = {
+  {(bigint) 431 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction85" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction85 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction85 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 419 /* 5: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 431 /* 5: ReduceAction85 < ReduceAction85: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -89951,7 +90169,7 @@ const classtable_elt_t VFT_parser___ReduceAction85[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction85 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction85 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -89980,11 +90198,11 @@ const classtable_elt_t VFT_parser___ReduceAction85[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction85 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction85 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction85___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction85 < ReduceAction85: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction85 < ReduceAction85: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90049,15 +90267,13 @@ val_t NEW_ReduceAction85_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction86[54] = {
-  {(bigint) 415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction86[52] = {
+  {(bigint) 427 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction86" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction86 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction86 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 415 /* 5: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 427 /* 5: ReduceAction86 < ReduceAction86: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90070,7 +90286,7 @@ const classtable_elt_t VFT_parser___ReduceAction86[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction86 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction86 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90099,11 +90315,11 @@ const classtable_elt_t VFT_parser___ReduceAction86[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction86 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction86 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction86___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction86 < ReduceAction86: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction86 < ReduceAction86: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90168,15 +90384,13 @@ val_t NEW_ReduceAction86_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction87[54] = {
-  {(bigint) 411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction87[52] = {
+  {(bigint) 423 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction87" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction87 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction87 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 411 /* 5: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 423 /* 5: ReduceAction87 < ReduceAction87: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90189,7 +90403,7 @@ const classtable_elt_t VFT_parser___ReduceAction87[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction87 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction87 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90218,11 +90432,11 @@ const classtable_elt_t VFT_parser___ReduceAction87[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction87 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction87 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction87___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction87 < ReduceAction87: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction87 < ReduceAction87: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90287,15 +90501,13 @@ val_t NEW_ReduceAction87_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction88[54] = {
-  {(bigint) 407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction88[52] = {
+  {(bigint) 419 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction88" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction88 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction88 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 407 /* 5: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 419 /* 5: ReduceAction88 < ReduceAction88: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90308,7 +90520,7 @@ const classtable_elt_t VFT_parser___ReduceAction88[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction88 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction88 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90337,11 +90549,11 @@ const classtable_elt_t VFT_parser___ReduceAction88[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction88 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction88 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction88___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction88 < ReduceAction88: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction88 < ReduceAction88: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90406,15 +90618,13 @@ val_t NEW_ReduceAction88_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction89[54] = {
-  {(bigint) 403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction89[52] = {
+  {(bigint) 415 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction89" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction89 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction89 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 403 /* 5: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 415 /* 5: ReduceAction89 < ReduceAction89: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90427,7 +90637,7 @@ const classtable_elt_t VFT_parser___ReduceAction89[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction89 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction89 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90456,11 +90666,11 @@ const classtable_elt_t VFT_parser___ReduceAction89[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction89 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction89 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction89___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction89 < ReduceAction89: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction89 < ReduceAction89: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90525,15 +90735,13 @@ val_t NEW_ReduceAction89_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction90[54] = {
-  {(bigint) 395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction90[52] = {
+  {(bigint) 407 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction90" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction90 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction90 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 395 /* 5: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 407 /* 5: ReduceAction90 < ReduceAction90: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90546,7 +90754,7 @@ const classtable_elt_t VFT_parser___ReduceAction90[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction90 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction90 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90575,11 +90783,11 @@ const classtable_elt_t VFT_parser___ReduceAction90[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction90 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction90 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction90___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction90 < ReduceAction90: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction90 < ReduceAction90: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90644,15 +90852,13 @@ val_t NEW_ReduceAction90_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction91[54] = {
-  {(bigint) 391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction91[52] = {
+  {(bigint) 403 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction91" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction91 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction91 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 391 /* 5: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 403 /* 5: ReduceAction91 < ReduceAction91: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90665,7 +90871,7 @@ const classtable_elt_t VFT_parser___ReduceAction91[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction91 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction91 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90694,11 +90900,11 @@ const classtable_elt_t VFT_parser___ReduceAction91[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction91 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction91 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction91___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction91 < ReduceAction91: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction91 < ReduceAction91: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90763,15 +90969,13 @@ val_t NEW_ReduceAction91_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction92[54] = {
-  {(bigint) 387 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction92[52] = {
+  {(bigint) 399 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction92" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction92 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction92 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 387 /* 5: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 399 /* 5: ReduceAction92 < ReduceAction92: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90784,7 +90988,7 @@ const classtable_elt_t VFT_parser___ReduceAction92[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction92 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction92 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90813,11 +91017,11 @@ const classtable_elt_t VFT_parser___ReduceAction92[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction92 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction92 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction92___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction92 < ReduceAction92: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction92 < ReduceAction92: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -90882,15 +91086,13 @@ val_t NEW_ReduceAction92_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction93[54] = {
-  {(bigint) 383 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction93[52] = {
+  {(bigint) 395 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction93" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction93 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction93 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 383 /* 5: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 395 /* 5: ReduceAction93 < ReduceAction93: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -90903,7 +91105,7 @@ const classtable_elt_t VFT_parser___ReduceAction93[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction93 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction93 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -90932,11 +91134,11 @@ const classtable_elt_t VFT_parser___ReduceAction93[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction93 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction93 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction93___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction93 < ReduceAction93: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction93 < ReduceAction93: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91001,15 +91203,13 @@ val_t NEW_ReduceAction93_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction94[54] = {
-  {(bigint) 379 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction94[52] = {
+  {(bigint) 391 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction94" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction94 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction94 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 379 /* 5: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 391 /* 5: ReduceAction94 < ReduceAction94: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91022,7 +91222,7 @@ const classtable_elt_t VFT_parser___ReduceAction94[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction94 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction94 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91051,11 +91251,11 @@ const classtable_elt_t VFT_parser___ReduceAction94[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction94 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction94 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction94___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction94 < ReduceAction94: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction94 < ReduceAction94: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91120,15 +91320,13 @@ val_t NEW_ReduceAction94_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction95[54] = {
-  {(bigint) 375 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction95[52] = {
+  {(bigint) 387 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction95" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction95 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction95 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 375 /* 5: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 387 /* 5: ReduceAction95 < ReduceAction95: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91141,7 +91339,7 @@ const classtable_elt_t VFT_parser___ReduceAction95[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction95 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction95 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91170,11 +91368,11 @@ const classtable_elt_t VFT_parser___ReduceAction95[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction95 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction95 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction95___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction95 < ReduceAction95: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction95 < ReduceAction95: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91239,15 +91437,13 @@ val_t NEW_ReduceAction95_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction96[54] = {
-  {(bigint) 371 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction96[52] = {
+  {(bigint) 383 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction96" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction96 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction96 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 371 /* 5: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 383 /* 5: ReduceAction96 < ReduceAction96: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91260,7 +91456,7 @@ const classtable_elt_t VFT_parser___ReduceAction96[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction96 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction96 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91289,11 +91485,11 @@ const classtable_elt_t VFT_parser___ReduceAction96[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction96 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction96 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction96___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction96 < ReduceAction96: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction96 < ReduceAction96: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91358,15 +91554,13 @@ val_t NEW_ReduceAction96_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction97[54] = {
-  {(bigint) 367 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction97[52] = {
+  {(bigint) 379 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction97" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction97 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction97 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 367 /* 5: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 379 /* 5: ReduceAction97 < ReduceAction97: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91379,7 +91573,7 @@ const classtable_elt_t VFT_parser___ReduceAction97[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction97 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction97 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91408,11 +91602,11 @@ const classtable_elt_t VFT_parser___ReduceAction97[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction97 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction97 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction97___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction97 < ReduceAction97: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction97 < ReduceAction97: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91477,15 +91671,13 @@ val_t NEW_ReduceAction97_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction98[54] = {
-  {(bigint) 363 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction98[52] = {
+  {(bigint) 375 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction98" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction98 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction98 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 363 /* 5: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 375 /* 5: ReduceAction98 < ReduceAction98: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91498,7 +91690,7 @@ const classtable_elt_t VFT_parser___ReduceAction98[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction98 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction98 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91527,11 +91719,11 @@ const classtable_elt_t VFT_parser___ReduceAction98[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction98 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction98 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction98___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction98 < ReduceAction98: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction98 < ReduceAction98: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91596,15 +91788,13 @@ val_t NEW_ReduceAction98_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction99[54] = {
-  {(bigint) 359 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction99[52] = {
+  {(bigint) 371 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction99" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction99 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction99 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 359 /* 5: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 371 /* 5: ReduceAction99 < ReduceAction99: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91617,7 +91807,7 @@ const classtable_elt_t VFT_parser___ReduceAction99[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction99 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction99 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91646,11 +91836,11 @@ const classtable_elt_t VFT_parser___ReduceAction99[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction99 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction99 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction99___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction99 < ReduceAction99: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction99 < ReduceAction99: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91715,15 +91905,13 @@ val_t NEW_ReduceAction99_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction100[54] = {
-  {(bigint) 2027 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction100[52] = {
+  {(bigint) 2039 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction100" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction100 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction100 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2027 /* 5: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2039 /* 5: ReduceAction100 < ReduceAction100: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91736,7 +91924,7 @@ const classtable_elt_t VFT_parser___ReduceAction100[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction100 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction100 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91765,11 +91953,11 @@ const classtable_elt_t VFT_parser___ReduceAction100[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction100 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction100 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction100___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction100 < ReduceAction100: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction100 < ReduceAction100: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91834,15 +92022,13 @@ val_t NEW_ReduceAction100_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction101[54] = {
-  {(bigint) 2023 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction101[52] = {
+  {(bigint) 2035 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction101" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction101 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction101 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2023 /* 5: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2035 /* 5: ReduceAction101 < ReduceAction101: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91855,7 +92041,7 @@ const classtable_elt_t VFT_parser___ReduceAction101[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction101 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction101 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -91884,11 +92070,11 @@ const classtable_elt_t VFT_parser___ReduceAction101[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction101 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction101 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction101___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction101 < ReduceAction101: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction101 < ReduceAction101: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -91953,15 +92139,13 @@ val_t NEW_ReduceAction101_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction102[54] = {
-  {(bigint) 2019 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction102[52] = {
+  {(bigint) 2031 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction102" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction102 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction102 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2019 /* 5: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2031 /* 5: ReduceAction102 < ReduceAction102: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -91974,7 +92158,7 @@ const classtable_elt_t VFT_parser___ReduceAction102[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction102 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction102 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92003,11 +92187,11 @@ const classtable_elt_t VFT_parser___ReduceAction102[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction102 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction102 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction102___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction102 < ReduceAction102: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction102 < ReduceAction102: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92072,15 +92256,13 @@ val_t NEW_ReduceAction102_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction103[54] = {
-  {(bigint) 2015 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction103[52] = {
+  {(bigint) 2027 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction103" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction103 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction103 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2015 /* 5: ReduceAction103 < ReduceAction103: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2027 /* 5: ReduceAction103 < ReduceAction103: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92093,7 +92275,7 @@ const classtable_elt_t VFT_parser___ReduceAction103[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction103 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction103 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92122,11 +92304,11 @@ const classtable_elt_t VFT_parser___ReduceAction103[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction103 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction103 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction103___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction103 < ReduceAction103: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction103 < ReduceAction103: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92191,15 +92373,13 @@ val_t NEW_ReduceAction103_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction104[54] = {
-  {(bigint) 2011 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction104[52] = {
+  {(bigint) 2023 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction104" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction104 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction104 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2011 /* 5: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2023 /* 5: ReduceAction104 < ReduceAction104: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92212,7 +92392,7 @@ const classtable_elt_t VFT_parser___ReduceAction104[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction104 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction104 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92241,11 +92421,11 @@ const classtable_elt_t VFT_parser___ReduceAction104[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction104 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction104 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction104___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction104 < ReduceAction104: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction104 < ReduceAction104: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92310,15 +92490,13 @@ val_t NEW_ReduceAction104_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction105[54] = {
-  {(bigint) 2007 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction105[52] = {
+  {(bigint) 2019 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction105" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction105 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction105 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2007 /* 5: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2019 /* 5: ReduceAction105 < ReduceAction105: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92331,7 +92509,7 @@ const classtable_elt_t VFT_parser___ReduceAction105[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction105 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction105 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92360,11 +92538,11 @@ const classtable_elt_t VFT_parser___ReduceAction105[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction105 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction105 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction105___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction105 < ReduceAction105: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction105 < ReduceAction105: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92429,15 +92607,13 @@ val_t NEW_ReduceAction105_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction106[54] = {
-  {(bigint) 2003 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction106[52] = {
+  {(bigint) 2015 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction106" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction106 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction106 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 2003 /* 5: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2015 /* 5: ReduceAction106 < ReduceAction106: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92450,7 +92626,7 @@ const classtable_elt_t VFT_parser___ReduceAction106[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction106 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction106 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92479,11 +92655,11 @@ const classtable_elt_t VFT_parser___ReduceAction106[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction106 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction106 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction106___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction106 < ReduceAction106: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction106 < ReduceAction106: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92548,15 +92724,13 @@ val_t NEW_ReduceAction106_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction107[54] = {
-  {(bigint) 1999 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction107[52] = {
+  {(bigint) 2011 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction107" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction107 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction107 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1999 /* 5: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2011 /* 5: ReduceAction107 < ReduceAction107: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92569,7 +92743,7 @@ const classtable_elt_t VFT_parser___ReduceAction107[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction107 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction107 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92598,11 +92772,11 @@ const classtable_elt_t VFT_parser___ReduceAction107[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction107 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction107 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction107___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction107 < ReduceAction107: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction107 < ReduceAction107: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92667,15 +92841,13 @@ val_t NEW_ReduceAction107_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction108[54] = {
-  {(bigint) 1995 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction108[52] = {
+  {(bigint) 2007 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction108" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction108 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction108 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1995 /* 5: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2007 /* 5: ReduceAction108 < ReduceAction108: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92688,7 +92860,7 @@ const classtable_elt_t VFT_parser___ReduceAction108[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction108 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction108 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92717,11 +92889,11 @@ const classtable_elt_t VFT_parser___ReduceAction108[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction108 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction108 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction108___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction108 < ReduceAction108: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction108 < ReduceAction108: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92786,15 +92958,13 @@ val_t NEW_ReduceAction108_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction109[54] = {
-  {(bigint) 1991 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction109[52] = {
+  {(bigint) 2003 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction109" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction109 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction109 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1991 /* 5: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2003 /* 5: ReduceAction109 < ReduceAction109: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92807,7 +92977,7 @@ const classtable_elt_t VFT_parser___ReduceAction109[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction109 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction109 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92836,11 +93006,11 @@ const classtable_elt_t VFT_parser___ReduceAction109[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction109 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction109 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction109___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction109 < ReduceAction109: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction109 < ReduceAction109: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -92905,15 +93075,13 @@ val_t NEW_ReduceAction109_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction110[54] = {
-  {(bigint) 1983 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction110[52] = {
+  {(bigint) 1995 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction110" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction110 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction110 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1983 /* 5: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1995 /* 5: ReduceAction110 < ReduceAction110: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -92926,7 +93094,7 @@ const classtable_elt_t VFT_parser___ReduceAction110[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction110 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction110 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -92955,11 +93123,11 @@ const classtable_elt_t VFT_parser___ReduceAction110[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction110 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction110 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction110___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction110 < ReduceAction110: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction110 < ReduceAction110: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93024,15 +93192,13 @@ val_t NEW_ReduceAction110_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction111[54] = {
-  {(bigint) 1979 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction111[52] = {
+  {(bigint) 1991 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction111" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction111 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction111 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1979 /* 5: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1991 /* 5: ReduceAction111 < ReduceAction111: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93045,7 +93211,7 @@ const classtable_elt_t VFT_parser___ReduceAction111[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction111 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction111 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93074,11 +93240,11 @@ const classtable_elt_t VFT_parser___ReduceAction111[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction111 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction111 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction111___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction111 < ReduceAction111: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction111 < ReduceAction111: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93143,15 +93309,13 @@ val_t NEW_ReduceAction111_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction112[54] = {
-  {(bigint) 1975 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction112[52] = {
+  {(bigint) 1987 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction112" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction112 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction112 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1975 /* 5: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1987 /* 5: ReduceAction112 < ReduceAction112: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93164,7 +93328,7 @@ const classtable_elt_t VFT_parser___ReduceAction112[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction112 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction112 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93193,11 +93357,11 @@ const classtable_elt_t VFT_parser___ReduceAction112[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction112 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction112 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction112___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction112 < ReduceAction112: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction112 < ReduceAction112: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93262,15 +93426,13 @@ val_t NEW_ReduceAction112_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction113[54] = {
-  {(bigint) 1971 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction113[52] = {
+  {(bigint) 1983 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction113" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction113 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction113 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1971 /* 5: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1983 /* 5: ReduceAction113 < ReduceAction113: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93283,7 +93445,7 @@ const classtable_elt_t VFT_parser___ReduceAction113[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction113 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction113 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93312,11 +93474,11 @@ const classtable_elt_t VFT_parser___ReduceAction113[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction113 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction113 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction113___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction113 < ReduceAction113: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction113 < ReduceAction113: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93381,15 +93543,13 @@ val_t NEW_ReduceAction113_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction114[54] = {
-  {(bigint) 1967 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction114[52] = {
+  {(bigint) 1979 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction114" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction114 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction114 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1967 /* 5: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1979 /* 5: ReduceAction114 < ReduceAction114: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93402,7 +93562,7 @@ const classtable_elt_t VFT_parser___ReduceAction114[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction114 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction114 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93431,11 +93591,11 @@ const classtable_elt_t VFT_parser___ReduceAction114[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction114 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction114 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction114___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction114 < ReduceAction114: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction114 < ReduceAction114: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93500,15 +93660,13 @@ val_t NEW_ReduceAction114_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction115[54] = {
-  {(bigint) 1963 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction115[52] = {
+  {(bigint) 1975 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction115" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction115 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction115 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1963 /* 5: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1975 /* 5: ReduceAction115 < ReduceAction115: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93521,7 +93679,7 @@ const classtable_elt_t VFT_parser___ReduceAction115[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction115 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction115 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93550,11 +93708,11 @@ const classtable_elt_t VFT_parser___ReduceAction115[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction115 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction115 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction115___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction115 < ReduceAction115: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction115 < ReduceAction115: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93619,15 +93777,13 @@ val_t NEW_ReduceAction115_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction116[54] = {
-  {(bigint) 1959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction116[52] = {
+  {(bigint) 1971 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction116" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction116 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction116 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1959 /* 5: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1971 /* 5: ReduceAction116 < ReduceAction116: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93640,7 +93796,7 @@ const classtable_elt_t VFT_parser___ReduceAction116[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction116 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction116 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93669,11 +93825,11 @@ const classtable_elt_t VFT_parser___ReduceAction116[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction116 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction116 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction116___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction116 < ReduceAction116: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction116 < ReduceAction116: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93738,15 +93894,13 @@ val_t NEW_ReduceAction116_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction117[54] = {
-  {(bigint) 1955 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction117[52] = {
+  {(bigint) 1967 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction117" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction117 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction117 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1955 /* 5: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1967 /* 5: ReduceAction117 < ReduceAction117: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93759,7 +93913,7 @@ const classtable_elt_t VFT_parser___ReduceAction117[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction117 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction117 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93788,11 +93942,11 @@ const classtable_elt_t VFT_parser___ReduceAction117[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction117 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction117 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction117___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction117 < ReduceAction117: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction117 < ReduceAction117: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93857,15 +94011,13 @@ val_t NEW_ReduceAction117_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction118[54] = {
-  {(bigint) 1951 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction118[52] = {
+  {(bigint) 1963 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction118" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction118 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction118 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1951 /* 5: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1963 /* 5: ReduceAction118 < ReduceAction118: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93878,7 +94030,7 @@ const classtable_elt_t VFT_parser___ReduceAction118[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction118 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction118 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -93907,11 +94059,11 @@ const classtable_elt_t VFT_parser___ReduceAction118[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction118 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction118 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction118___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction118 < ReduceAction118: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction118 < ReduceAction118: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -93976,15 +94128,13 @@ val_t NEW_ReduceAction118_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction119[54] = {
-  {(bigint) 1947 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction119[52] = {
+  {(bigint) 1959 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction119" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction119 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction119 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1947 /* 5: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1959 /* 5: ReduceAction119 < ReduceAction119: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -93997,7 +94147,7 @@ const classtable_elt_t VFT_parser___ReduceAction119[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction119 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction119 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94026,11 +94176,11 @@ const classtable_elt_t VFT_parser___ReduceAction119[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction119 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction119 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction119___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction119 < ReduceAction119: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction119 < ReduceAction119: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94095,15 +94245,13 @@ val_t NEW_ReduceAction119_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction120[54] = {
-  {(bigint) 1939 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction120[52] = {
+  {(bigint) 1951 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction120" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction120 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction120 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1939 /* 5: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1951 /* 5: ReduceAction120 < ReduceAction120: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94116,7 +94264,7 @@ const classtable_elt_t VFT_parser___ReduceAction120[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction120 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction120 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94145,11 +94293,11 @@ const classtable_elt_t VFT_parser___ReduceAction120[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction120 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction120 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction120___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction120 < ReduceAction120: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction120 < ReduceAction120: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94214,15 +94362,13 @@ val_t NEW_ReduceAction120_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction121[54] = {
-  {(bigint) 1935 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction121[52] = {
+  {(bigint) 1947 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction121" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction121 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction121 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1935 /* 5: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1947 /* 5: ReduceAction121 < ReduceAction121: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94235,7 +94381,7 @@ const classtable_elt_t VFT_parser___ReduceAction121[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction121 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction121 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94264,11 +94410,11 @@ const classtable_elt_t VFT_parser___ReduceAction121[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction121 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction121 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction121___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction121 < ReduceAction121: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction121 < ReduceAction121: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94333,15 +94479,13 @@ val_t NEW_ReduceAction121_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction122[54] = {
-  {(bigint) 1931 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction122[52] = {
+  {(bigint) 1943 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction122" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction122 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction122 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1931 /* 5: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1943 /* 5: ReduceAction122 < ReduceAction122: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94354,7 +94498,7 @@ const classtable_elt_t VFT_parser___ReduceAction122[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction122 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction122 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94383,11 +94527,11 @@ const classtable_elt_t VFT_parser___ReduceAction122[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction122 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction122 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction122___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction122 < ReduceAction122: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction122 < ReduceAction122: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94452,15 +94596,13 @@ val_t NEW_ReduceAction122_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction123[54] = {
-  {(bigint) 1927 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction123[52] = {
+  {(bigint) 1939 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction123" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction123 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction123 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1927 /* 5: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1939 /* 5: ReduceAction123 < ReduceAction123: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94473,7 +94615,7 @@ const classtable_elt_t VFT_parser___ReduceAction123[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction123 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction123 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94502,11 +94644,11 @@ const classtable_elt_t VFT_parser___ReduceAction123[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction123 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction123 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction123___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction123 < ReduceAction123: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction123 < ReduceAction123: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94571,15 +94713,13 @@ val_t NEW_ReduceAction123_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction124[54] = {
-  {(bigint) 1923 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction124[52] = {
+  {(bigint) 1935 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction124" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction124 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction124 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1923 /* 5: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1935 /* 5: ReduceAction124 < ReduceAction124: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94592,7 +94732,7 @@ const classtable_elt_t VFT_parser___ReduceAction124[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction124 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction124 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94621,11 +94761,11 @@ const classtable_elt_t VFT_parser___ReduceAction124[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction124 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction124 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction124___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction124 < ReduceAction124: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction124 < ReduceAction124: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94690,15 +94830,13 @@ val_t NEW_ReduceAction124_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction125[54] = {
-  {(bigint) 1919 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction125[52] = {
+  {(bigint) 1931 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction125" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction125 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction125 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1919 /* 5: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1931 /* 5: ReduceAction125 < ReduceAction125: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94711,7 +94849,7 @@ const classtable_elt_t VFT_parser___ReduceAction125[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction125 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction125 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94740,11 +94878,11 @@ const classtable_elt_t VFT_parser___ReduceAction125[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction125 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction125 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction125___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction125 < ReduceAction125: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction125 < ReduceAction125: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94809,15 +94947,13 @@ val_t NEW_ReduceAction125_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction126[54] = {
-  {(bigint) 1915 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction126[52] = {
+  {(bigint) 1927 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction126" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction126 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction126 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1915 /* 5: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1927 /* 5: ReduceAction126 < ReduceAction126: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94830,7 +94966,7 @@ const classtable_elt_t VFT_parser___ReduceAction126[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction126 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction126 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94859,11 +94995,11 @@ const classtable_elt_t VFT_parser___ReduceAction126[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction126 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction126 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction126___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction126 < ReduceAction126: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction126 < ReduceAction126: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -94928,15 +95064,13 @@ val_t NEW_ReduceAction126_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction127[54] = {
-  {(bigint) 1911 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction127[52] = {
+  {(bigint) 1923 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction127" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction127 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction127 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1911 /* 5: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1923 /* 5: ReduceAction127 < ReduceAction127: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -94949,7 +95083,7 @@ const classtable_elt_t VFT_parser___ReduceAction127[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction127 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction127 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -94978,11 +95112,11 @@ const classtable_elt_t VFT_parser___ReduceAction127[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction127 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction127 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction127___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction127 < ReduceAction127: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction127 < ReduceAction127: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95047,15 +95181,13 @@ val_t NEW_ReduceAction127_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction128[54] = {
-  {(bigint) 1907 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction128[52] = {
+  {(bigint) 1919 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction128" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction128 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction128 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1907 /* 5: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1919 /* 5: ReduceAction128 < ReduceAction128: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95068,7 +95200,7 @@ const classtable_elt_t VFT_parser___ReduceAction128[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction128 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction128 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95097,11 +95229,11 @@ const classtable_elt_t VFT_parser___ReduceAction128[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction128 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction128 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction128___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction128 < ReduceAction128: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction128 < ReduceAction128: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95166,15 +95298,13 @@ val_t NEW_ReduceAction128_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction129[54] = {
-  {(bigint) 1903 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction129[52] = {
+  {(bigint) 1915 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction129" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction129 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction129 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1903 /* 5: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1915 /* 5: ReduceAction129 < ReduceAction129: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95187,7 +95317,7 @@ const classtable_elt_t VFT_parser___ReduceAction129[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction129 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction129 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95216,11 +95346,11 @@ const classtable_elt_t VFT_parser___ReduceAction129[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction129 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction129 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction129___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction129 < ReduceAction129: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction129 < ReduceAction129: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95285,15 +95415,13 @@ val_t NEW_ReduceAction129_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction130[54] = {
-  {(bigint) 1895 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction130[52] = {
+  {(bigint) 1907 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction130" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction130 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction130 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1895 /* 5: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1907 /* 5: ReduceAction130 < ReduceAction130: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95306,7 +95434,7 @@ const classtable_elt_t VFT_parser___ReduceAction130[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction130 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction130 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95335,11 +95463,11 @@ const classtable_elt_t VFT_parser___ReduceAction130[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction130 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction130 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction130___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction130 < ReduceAction130: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction130 < ReduceAction130: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95404,15 +95532,13 @@ val_t NEW_ReduceAction130_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction131[54] = {
-  {(bigint) 1891 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction131[52] = {
+  {(bigint) 1903 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction131" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction131 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction131 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1891 /* 5: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1903 /* 5: ReduceAction131 < ReduceAction131: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95425,7 +95551,7 @@ const classtable_elt_t VFT_parser___ReduceAction131[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction131 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction131 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95454,11 +95580,11 @@ const classtable_elt_t VFT_parser___ReduceAction131[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction131 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction131 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction131___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction131 < ReduceAction131: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction131 < ReduceAction131: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95523,15 +95649,13 @@ val_t NEW_ReduceAction131_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction132[54] = {
-  {(bigint) 1887 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction132[52] = {
+  {(bigint) 1899 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction132" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction132 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction132 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1887 /* 5: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1899 /* 5: ReduceAction132 < ReduceAction132: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95544,7 +95668,7 @@ const classtable_elt_t VFT_parser___ReduceAction132[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction132 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction132 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95573,11 +95697,11 @@ const classtable_elt_t VFT_parser___ReduceAction132[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction132 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction132 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction132___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction132 < ReduceAction132: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction132 < ReduceAction132: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95642,15 +95766,13 @@ val_t NEW_ReduceAction132_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction133[54] = {
-  {(bigint) 1883 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction133[52] = {
+  {(bigint) 1895 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction133" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction133 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction133 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1883 /* 5: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1895 /* 5: ReduceAction133 < ReduceAction133: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95663,7 +95785,7 @@ const classtable_elt_t VFT_parser___ReduceAction133[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction133 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction133 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95692,11 +95814,11 @@ const classtable_elt_t VFT_parser___ReduceAction133[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction133 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction133 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction133___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction133 < ReduceAction133: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction133 < ReduceAction133: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95761,15 +95883,13 @@ val_t NEW_ReduceAction133_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction134[54] = {
-  {(bigint) 1879 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction134[52] = {
+  {(bigint) 1891 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction134" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction134 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction134 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1879 /* 5: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1891 /* 5: ReduceAction134 < ReduceAction134: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95782,7 +95902,7 @@ const classtable_elt_t VFT_parser___ReduceAction134[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction134 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction134 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95811,11 +95931,11 @@ const classtable_elt_t VFT_parser___ReduceAction134[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction134 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction134 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction134___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction134 < ReduceAction134: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction134 < ReduceAction134: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95880,15 +96000,13 @@ val_t NEW_ReduceAction134_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction135[54] = {
-  {(bigint) 1875 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction135[52] = {
+  {(bigint) 1887 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction135" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction135 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction135 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1875 /* 5: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1887 /* 5: ReduceAction135 < ReduceAction135: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -95901,7 +96019,7 @@ const classtable_elt_t VFT_parser___ReduceAction135[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction135 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction135 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -95930,11 +96048,11 @@ const classtable_elt_t VFT_parser___ReduceAction135[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction135 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction135 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction135___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction135 < ReduceAction135: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction135 < ReduceAction135: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -95999,15 +96117,13 @@ val_t NEW_ReduceAction135_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction136[54] = {
-  {(bigint) 1871 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction136[52] = {
+  {(bigint) 1883 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction136" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction136 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction136 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1871 /* 5: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1883 /* 5: ReduceAction136 < ReduceAction136: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96020,7 +96136,7 @@ const classtable_elt_t VFT_parser___ReduceAction136[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction136 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction136 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96049,11 +96165,11 @@ const classtable_elt_t VFT_parser___ReduceAction136[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction136 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction136 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction136___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction136 < ReduceAction136: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction136 < ReduceAction136: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96118,15 +96234,13 @@ val_t NEW_ReduceAction136_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction137[54] = {
-  {(bigint) 1867 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction137[52] = {
+  {(bigint) 1879 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction137" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction137 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction137 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1867 /* 5: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1879 /* 5: ReduceAction137 < ReduceAction137: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96139,7 +96253,7 @@ const classtable_elt_t VFT_parser___ReduceAction137[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction137 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction137 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96168,11 +96282,11 @@ const classtable_elt_t VFT_parser___ReduceAction137[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction137 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction137 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction137___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction137 < ReduceAction137: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction137 < ReduceAction137: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96237,15 +96351,13 @@ val_t NEW_ReduceAction137_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction138[54] = {
-  {(bigint) 1863 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction138[52] = {
+  {(bigint) 1875 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction138" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction138 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction138 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1863 /* 5: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1875 /* 5: ReduceAction138 < ReduceAction138: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96258,7 +96370,7 @@ const classtable_elt_t VFT_parser___ReduceAction138[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction138 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction138 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96287,11 +96399,11 @@ const classtable_elt_t VFT_parser___ReduceAction138[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction138 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction138 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction138___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction138 < ReduceAction138: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction138 < ReduceAction138: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96356,15 +96468,13 @@ val_t NEW_ReduceAction138_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction139[54] = {
-  {(bigint) 1859 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction139[52] = {
+  {(bigint) 1871 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction139" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction139 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction139 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1859 /* 5: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1871 /* 5: ReduceAction139 < ReduceAction139: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96377,7 +96487,7 @@ const classtable_elt_t VFT_parser___ReduceAction139[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction139 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction139 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96406,11 +96516,11 @@ const classtable_elt_t VFT_parser___ReduceAction139[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction139 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction139 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction139___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction139 < ReduceAction139: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction139 < ReduceAction139: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96475,15 +96585,13 @@ val_t NEW_ReduceAction139_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction140[54] = {
-  {(bigint) 1851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction140[52] = {
+  {(bigint) 1863 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction140" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction140 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction140 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1851 /* 5: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1863 /* 5: ReduceAction140 < ReduceAction140: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96496,7 +96604,7 @@ const classtable_elt_t VFT_parser___ReduceAction140[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction140 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction140 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96525,11 +96633,11 @@ const classtable_elt_t VFT_parser___ReduceAction140[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction140 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction140 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction140___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction140 < ReduceAction140: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction140 < ReduceAction140: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96594,15 +96702,13 @@ val_t NEW_ReduceAction140_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction141[54] = {
-  {(bigint) 1847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction141[52] = {
+  {(bigint) 1859 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction141" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction141 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction141 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1847 /* 5: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1859 /* 5: ReduceAction141 < ReduceAction141: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96615,7 +96721,7 @@ const classtable_elt_t VFT_parser___ReduceAction141[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction141 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction141 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96644,11 +96750,11 @@ const classtable_elt_t VFT_parser___ReduceAction141[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction141 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction141 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction141___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction141 < ReduceAction141: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction141 < ReduceAction141: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96713,15 +96819,13 @@ val_t NEW_ReduceAction141_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction142[54] = {
-  {(bigint) 1843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction142[52] = {
+  {(bigint) 1855 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction142" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction142 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction142 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1843 /* 5: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1855 /* 5: ReduceAction142 < ReduceAction142: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96734,7 +96838,7 @@ const classtable_elt_t VFT_parser___ReduceAction142[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction142 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction142 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96763,11 +96867,11 @@ const classtable_elt_t VFT_parser___ReduceAction142[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction142 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction142 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction142___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction142 < ReduceAction142: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction142 < ReduceAction142: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96832,15 +96936,13 @@ val_t NEW_ReduceAction142_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction143[54] = {
-  {(bigint) 1839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction143[52] = {
+  {(bigint) 1851 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction143" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction143 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction143 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1839 /* 5: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1851 /* 5: ReduceAction143 < ReduceAction143: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96853,7 +96955,7 @@ const classtable_elt_t VFT_parser___ReduceAction143[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction143 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction143 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -96882,11 +96984,11 @@ const classtable_elt_t VFT_parser___ReduceAction143[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction143 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction143 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction143___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction143 < ReduceAction143: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction143 < ReduceAction143: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -96951,15 +97053,13 @@ val_t NEW_ReduceAction143_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction144[54] = {
-  {(bigint) 1835 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction144[52] = {
+  {(bigint) 1847 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction144" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction144 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction144 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1835 /* 5: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1847 /* 5: ReduceAction144 < ReduceAction144: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -96972,7 +97072,7 @@ const classtable_elt_t VFT_parser___ReduceAction144[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction144 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction144 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97001,11 +97101,11 @@ const classtable_elt_t VFT_parser___ReduceAction144[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction144 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction144 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction144___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction144 < ReduceAction144: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction144 < ReduceAction144: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97070,15 +97170,13 @@ val_t NEW_ReduceAction144_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction145[54] = {
-  {(bigint) 1831 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction145[52] = {
+  {(bigint) 1843 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction145" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction145 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction145 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1831 /* 5: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1843 /* 5: ReduceAction145 < ReduceAction145: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97091,7 +97189,7 @@ const classtable_elt_t VFT_parser___ReduceAction145[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction145 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction145 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97120,11 +97218,11 @@ const classtable_elt_t VFT_parser___ReduceAction145[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction145 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction145 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction145___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction145 < ReduceAction145: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction145 < ReduceAction145: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97189,15 +97287,13 @@ val_t NEW_ReduceAction145_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction146[54] = {
-  {(bigint) 1827 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction146[52] = {
+  {(bigint) 1839 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction146" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction146 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction146 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1827 /* 5: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1839 /* 5: ReduceAction146 < ReduceAction146: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97210,7 +97306,7 @@ const classtable_elt_t VFT_parser___ReduceAction146[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction146 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction146 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97239,11 +97335,11 @@ const classtable_elt_t VFT_parser___ReduceAction146[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction146 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction146 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction146___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction146 < ReduceAction146: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction146 < ReduceAction146: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97308,15 +97404,13 @@ val_t NEW_ReduceAction146_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction147[54] = {
-  {(bigint) 1823 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction147[52] = {
+  {(bigint) 1835 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction147" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction147 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction147 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1823 /* 5: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1835 /* 5: ReduceAction147 < ReduceAction147: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97329,7 +97423,7 @@ const classtable_elt_t VFT_parser___ReduceAction147[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction147 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction147 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97358,11 +97452,11 @@ const classtable_elt_t VFT_parser___ReduceAction147[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction147 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction147 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction147___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction147 < ReduceAction147: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction147 < ReduceAction147: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97427,15 +97521,13 @@ val_t NEW_ReduceAction147_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction148[54] = {
-  {(bigint) 1819 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction148[52] = {
+  {(bigint) 1831 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction148" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction148 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction148 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1819 /* 5: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1831 /* 5: ReduceAction148 < ReduceAction148: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97448,7 +97540,7 @@ const classtable_elt_t VFT_parser___ReduceAction148[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction148 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction148 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97477,11 +97569,11 @@ const classtable_elt_t VFT_parser___ReduceAction148[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction148 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction148 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction148___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction148 < ReduceAction148: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction148 < ReduceAction148: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97546,15 +97638,13 @@ val_t NEW_ReduceAction148_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction149[54] = {
-  {(bigint) 1815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction149[52] = {
+  {(bigint) 1827 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction149" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction149 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction149 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1815 /* 5: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1827 /* 5: ReduceAction149 < ReduceAction149: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97567,7 +97657,7 @@ const classtable_elt_t VFT_parser___ReduceAction149[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction149 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction149 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97596,11 +97686,11 @@ const classtable_elt_t VFT_parser___ReduceAction149[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction149 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction149 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction149___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction149 < ReduceAction149: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction149 < ReduceAction149: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97665,15 +97755,13 @@ val_t NEW_ReduceAction149_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction150[54] = {
-  {(bigint) 1807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction150[52] = {
+  {(bigint) 1819 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction150" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction150 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction150 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1807 /* 5: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1819 /* 5: ReduceAction150 < ReduceAction150: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97686,7 +97774,7 @@ const classtable_elt_t VFT_parser___ReduceAction150[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction150 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction150 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97715,11 +97803,11 @@ const classtable_elt_t VFT_parser___ReduceAction150[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction150 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction150 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction150___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction150 < ReduceAction150: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction150 < ReduceAction150: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97784,15 +97872,13 @@ val_t NEW_ReduceAction150_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction151[54] = {
-  {(bigint) 1803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction151[52] = {
+  {(bigint) 1815 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction151" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction151 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction151 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1803 /* 5: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1815 /* 5: ReduceAction151 < ReduceAction151: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97805,7 +97891,7 @@ const classtable_elt_t VFT_parser___ReduceAction151[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction151 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction151 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97834,11 +97920,11 @@ const classtable_elt_t VFT_parser___ReduceAction151[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction151 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction151 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction151___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction151 < ReduceAction151: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction151 < ReduceAction151: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -97903,15 +97989,13 @@ val_t NEW_ReduceAction151_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction152[54] = {
-  {(bigint) 1799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction152[52] = {
+  {(bigint) 1811 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction152" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction152 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction152 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1799 /* 5: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1811 /* 5: ReduceAction152 < ReduceAction152: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -97924,7 +98008,7 @@ const classtable_elt_t VFT_parser___ReduceAction152[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction152 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction152 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -97953,11 +98037,11 @@ const classtable_elt_t VFT_parser___ReduceAction152[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction152 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction152 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction152___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction152 < ReduceAction152: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction152 < ReduceAction152: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98022,15 +98106,13 @@ val_t NEW_ReduceAction152_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction153[54] = {
-  {(bigint) 1795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction153[52] = {
+  {(bigint) 1807 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction153" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction153 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction153 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1795 /* 5: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1807 /* 5: ReduceAction153 < ReduceAction153: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98043,7 +98125,7 @@ const classtable_elt_t VFT_parser___ReduceAction153[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction153 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction153 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98072,11 +98154,11 @@ const classtable_elt_t VFT_parser___ReduceAction153[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction153 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction153 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction153___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction153 < ReduceAction153: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction153 < ReduceAction153: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98141,15 +98223,13 @@ val_t NEW_ReduceAction153_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction154[54] = {
-  {(bigint) 1791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction154[52] = {
+  {(bigint) 1803 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction154" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction154 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction154 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1791 /* 5: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1803 /* 5: ReduceAction154 < ReduceAction154: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98162,7 +98242,7 @@ const classtable_elt_t VFT_parser___ReduceAction154[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction154 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction154 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98191,11 +98271,11 @@ const classtable_elt_t VFT_parser___ReduceAction154[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction154 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction154 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction154___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction154 < ReduceAction154: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction154 < ReduceAction154: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98260,15 +98340,13 @@ val_t NEW_ReduceAction154_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction155[54] = {
-  {(bigint) 1787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction155[52] = {
+  {(bigint) 1799 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction155" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction155 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction155 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1787 /* 5: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1799 /* 5: ReduceAction155 < ReduceAction155: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98281,7 +98359,7 @@ const classtable_elt_t VFT_parser___ReduceAction155[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction155 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction155 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98310,11 +98388,11 @@ const classtable_elt_t VFT_parser___ReduceAction155[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction155 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction155 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction155___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction155 < ReduceAction155: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction155 < ReduceAction155: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98379,15 +98457,13 @@ val_t NEW_ReduceAction155_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction156[54] = {
-  {(bigint) 1783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction156[52] = {
+  {(bigint) 1795 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction156" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction156 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction156 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1783 /* 5: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1795 /* 5: ReduceAction156 < ReduceAction156: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98400,7 +98476,7 @@ const classtable_elt_t VFT_parser___ReduceAction156[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction156 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction156 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98429,11 +98505,11 @@ const classtable_elt_t VFT_parser___ReduceAction156[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction156 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction156 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction156___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction156 < ReduceAction156: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction156 < ReduceAction156: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98498,15 +98574,13 @@ val_t NEW_ReduceAction156_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction157[54] = {
-  {(bigint) 1779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction157[52] = {
+  {(bigint) 1791 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction157" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction157 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction157 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1779 /* 5: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1791 /* 5: ReduceAction157 < ReduceAction157: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98519,7 +98593,7 @@ const classtable_elt_t VFT_parser___ReduceAction157[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction157 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction157 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98548,11 +98622,11 @@ const classtable_elt_t VFT_parser___ReduceAction157[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction157 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction157 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction157___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction157 < ReduceAction157: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction157 < ReduceAction157: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98617,15 +98691,13 @@ val_t NEW_ReduceAction157_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction158[54] = {
-  {(bigint) 1775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction158[52] = {
+  {(bigint) 1787 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction158" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction158 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction158 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1775 /* 5: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1787 /* 5: ReduceAction158 < ReduceAction158: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98638,7 +98710,7 @@ const classtable_elt_t VFT_parser___ReduceAction158[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction158 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction158 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98667,11 +98739,11 @@ const classtable_elt_t VFT_parser___ReduceAction158[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction158 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction158 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction158___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction158 < ReduceAction158: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction158 < ReduceAction158: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98736,15 +98808,13 @@ val_t NEW_ReduceAction158_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction159[54] = {
-  {(bigint) 1771 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction159[52] = {
+  {(bigint) 1783 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction159" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction159 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction159 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1771 /* 5: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1783 /* 5: ReduceAction159 < ReduceAction159: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98757,7 +98827,7 @@ const classtable_elt_t VFT_parser___ReduceAction159[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction159 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction159 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98786,11 +98856,11 @@ const classtable_elt_t VFT_parser___ReduceAction159[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction159 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction159 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction159___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction159 < ReduceAction159: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction159 < ReduceAction159: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98855,15 +98925,13 @@ val_t NEW_ReduceAction159_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction160[54] = {
-  {(bigint) 1763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction160[52] = {
+  {(bigint) 1775 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction160" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction160 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction160 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1763 /* 5: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1775 /* 5: ReduceAction160 < ReduceAction160: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98876,7 +98944,7 @@ const classtable_elt_t VFT_parser___ReduceAction160[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction160 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction160 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -98905,11 +98973,11 @@ const classtable_elt_t VFT_parser___ReduceAction160[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction160 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction160 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction160___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction160 < ReduceAction160: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction160 < ReduceAction160: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -98974,15 +99042,13 @@ val_t NEW_ReduceAction160_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction161[54] = {
-  {(bigint) 1759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction161[52] = {
+  {(bigint) 1771 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction161" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction161 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction161 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1759 /* 5: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1771 /* 5: ReduceAction161 < ReduceAction161: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -98995,7 +99061,7 @@ const classtable_elt_t VFT_parser___ReduceAction161[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction161 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction161 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99024,11 +99090,11 @@ const classtable_elt_t VFT_parser___ReduceAction161[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction161 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction161 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction161___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction161 < ReduceAction161: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction161 < ReduceAction161: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99093,15 +99159,13 @@ val_t NEW_ReduceAction161_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction162[54] = {
-  {(bigint) 1755 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction162[52] = {
+  {(bigint) 1767 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction162" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction162 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction162 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1755 /* 5: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1767 /* 5: ReduceAction162 < ReduceAction162: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99114,7 +99178,7 @@ const classtable_elt_t VFT_parser___ReduceAction162[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction162 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction162 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99143,11 +99207,11 @@ const classtable_elt_t VFT_parser___ReduceAction162[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction162 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction162 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction162___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction162 < ReduceAction162: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction162 < ReduceAction162: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99212,15 +99276,13 @@ val_t NEW_ReduceAction162_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction163[54] = {
-  {(bigint) 1751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction163[52] = {
+  {(bigint) 1763 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction163" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction163 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction163 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1751 /* 5: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1763 /* 5: ReduceAction163 < ReduceAction163: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99233,7 +99295,7 @@ const classtable_elt_t VFT_parser___ReduceAction163[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction163 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction163 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99262,11 +99324,11 @@ const classtable_elt_t VFT_parser___ReduceAction163[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction163 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction163 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction163___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction163 < ReduceAction163: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction163 < ReduceAction163: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99331,15 +99393,13 @@ val_t NEW_ReduceAction163_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction164[54] = {
-  {(bigint) 1747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction164[52] = {
+  {(bigint) 1759 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction164" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction164 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction164 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1747 /* 5: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1759 /* 5: ReduceAction164 < ReduceAction164: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99352,7 +99412,7 @@ const classtable_elt_t VFT_parser___ReduceAction164[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction164 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction164 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99381,11 +99441,11 @@ const classtable_elt_t VFT_parser___ReduceAction164[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction164 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction164 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction164___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction164 < ReduceAction164: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction164 < ReduceAction164: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99450,15 +99510,13 @@ val_t NEW_ReduceAction164_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction165[54] = {
-  {(bigint) 1743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction165[52] = {
+  {(bigint) 1755 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction165" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction165 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction165 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1743 /* 5: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1755 /* 5: ReduceAction165 < ReduceAction165: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99471,7 +99529,7 @@ const classtable_elt_t VFT_parser___ReduceAction165[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction165 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction165 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99500,11 +99558,11 @@ const classtable_elt_t VFT_parser___ReduceAction165[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction165 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction165 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction165___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction165 < ReduceAction165: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction165 < ReduceAction165: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99569,15 +99627,13 @@ val_t NEW_ReduceAction165_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction166[54] = {
-  {(bigint) 1739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction166[52] = {
+  {(bigint) 1751 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction166" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction166 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction166 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1739 /* 5: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1751 /* 5: ReduceAction166 < ReduceAction166: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99590,7 +99646,7 @@ const classtable_elt_t VFT_parser___ReduceAction166[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction166 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction166 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99619,11 +99675,11 @@ const classtable_elt_t VFT_parser___ReduceAction166[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction166 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction166 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction166___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction166 < ReduceAction166: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction166 < ReduceAction166: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99688,15 +99744,13 @@ val_t NEW_ReduceAction166_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction167[54] = {
-  {(bigint) 1735 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction167[52] = {
+  {(bigint) 1747 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction167" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction167 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction167 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1735 /* 5: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1747 /* 5: ReduceAction167 < ReduceAction167: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99709,7 +99763,7 @@ const classtable_elt_t VFT_parser___ReduceAction167[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction167 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction167 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99738,11 +99792,11 @@ const classtable_elt_t VFT_parser___ReduceAction167[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction167 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction167 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction167___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction167 < ReduceAction167: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction167 < ReduceAction167: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99807,15 +99861,13 @@ val_t NEW_ReduceAction167_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction168[54] = {
-  {(bigint) 1731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction168[52] = {
+  {(bigint) 1743 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction168" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction168 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction168 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1731 /* 5: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1743 /* 5: ReduceAction168 < ReduceAction168: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99828,7 +99880,7 @@ const classtable_elt_t VFT_parser___ReduceAction168[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction168 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction168 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99857,11 +99909,11 @@ const classtable_elt_t VFT_parser___ReduceAction168[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction168 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction168 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction168___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction168 < ReduceAction168: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction168 < ReduceAction168: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -99926,15 +99978,13 @@ val_t NEW_ReduceAction168_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction169[54] = {
-  {(bigint) 1727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction169[52] = {
+  {(bigint) 1739 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction169" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction169 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction169 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1727 /* 5: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1739 /* 5: ReduceAction169 < ReduceAction169: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -99947,7 +99997,7 @@ const classtable_elt_t VFT_parser___ReduceAction169[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction169 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction169 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -99976,11 +100026,11 @@ const classtable_elt_t VFT_parser___ReduceAction169[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction169 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction169 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction169___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction169 < ReduceAction169: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction169 < ReduceAction169: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100045,15 +100095,13 @@ val_t NEW_ReduceAction169_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction170[54] = {
-  {(bigint) 1719 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction170[52] = {
+  {(bigint) 1731 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction170" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction170 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction170 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1719 /* 5: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1731 /* 5: ReduceAction170 < ReduceAction170: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100066,7 +100114,7 @@ const classtable_elt_t VFT_parser___ReduceAction170[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction170 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction170 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100095,11 +100143,11 @@ const classtable_elt_t VFT_parser___ReduceAction170[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction170 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction170 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction170___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction170 < ReduceAction170: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction170 < ReduceAction170: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100164,15 +100212,13 @@ val_t NEW_ReduceAction170_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction171[54] = {
-  {(bigint) 1715 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction171[52] = {
+  {(bigint) 1727 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction171" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction171 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction171 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1715 /* 5: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1727 /* 5: ReduceAction171 < ReduceAction171: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100185,7 +100231,7 @@ const classtable_elt_t VFT_parser___ReduceAction171[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction171 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction171 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100214,11 +100260,11 @@ const classtable_elt_t VFT_parser___ReduceAction171[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction171 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction171 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction171___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction171 < ReduceAction171: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction171 < ReduceAction171: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100283,15 +100329,13 @@ val_t NEW_ReduceAction171_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction172[54] = {
-  {(bigint) 1711 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction172[52] = {
+  {(bigint) 1723 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction172" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction172 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction172 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1711 /* 5: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1723 /* 5: ReduceAction172 < ReduceAction172: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100304,7 +100348,7 @@ const classtable_elt_t VFT_parser___ReduceAction172[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction172 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction172 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100333,11 +100377,11 @@ const classtable_elt_t VFT_parser___ReduceAction172[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction172 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction172 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction172___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction172 < ReduceAction172: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction172 < ReduceAction172: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100402,15 +100446,13 @@ val_t NEW_ReduceAction172_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction173[54] = {
-  {(bigint) 1707 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction173[52] = {
+  {(bigint) 1719 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction173" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction173 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction173 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1707 /* 5: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1719 /* 5: ReduceAction173 < ReduceAction173: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100423,7 +100465,7 @@ const classtable_elt_t VFT_parser___ReduceAction173[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction173 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction173 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100452,11 +100494,11 @@ const classtable_elt_t VFT_parser___ReduceAction173[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction173 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction173 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction173___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction173 < ReduceAction173: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction173 < ReduceAction173: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100521,15 +100563,13 @@ val_t NEW_ReduceAction173_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction174[54] = {
-  {(bigint) 1703 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction174[52] = {
+  {(bigint) 1715 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction174" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction174 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction174 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1703 /* 5: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1715 /* 5: ReduceAction174 < ReduceAction174: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100542,7 +100582,7 @@ const classtable_elt_t VFT_parser___ReduceAction174[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction174 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction174 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100571,11 +100611,11 @@ const classtable_elt_t VFT_parser___ReduceAction174[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction174 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction174 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction174___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction174 < ReduceAction174: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction174 < ReduceAction174: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100640,15 +100680,13 @@ val_t NEW_ReduceAction174_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction175[54] = {
-  {(bigint) 1699 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction175[52] = {
+  {(bigint) 1711 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction175" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction175 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction175 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1699 /* 5: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1711 /* 5: ReduceAction175 < ReduceAction175: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100661,7 +100699,7 @@ const classtable_elt_t VFT_parser___ReduceAction175[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction175 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction175 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100690,11 +100728,11 @@ const classtable_elt_t VFT_parser___ReduceAction175[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction175 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction175 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction175___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction175 < ReduceAction175: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction175 < ReduceAction175: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100759,15 +100797,13 @@ val_t NEW_ReduceAction175_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction176[54] = {
-  {(bigint) 1695 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction176[52] = {
+  {(bigint) 1707 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction176" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction176 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction176 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1695 /* 5: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1707 /* 5: ReduceAction176 < ReduceAction176: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100780,7 +100816,7 @@ const classtable_elt_t VFT_parser___ReduceAction176[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction176 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction176 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100809,11 +100845,11 @@ const classtable_elt_t VFT_parser___ReduceAction176[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction176 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction176 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction176___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction176 < ReduceAction176: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction176 < ReduceAction176: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100878,15 +100914,13 @@ val_t NEW_ReduceAction176_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction177[54] = {
-  {(bigint) 1691 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction177[52] = {
+  {(bigint) 1703 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction177" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction177 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction177 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1691 /* 5: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1703 /* 5: ReduceAction177 < ReduceAction177: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -100899,7 +100933,7 @@ const classtable_elt_t VFT_parser___ReduceAction177[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction177 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction177 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -100928,11 +100962,11 @@ const classtable_elt_t VFT_parser___ReduceAction177[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction177 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction177 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction177___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction177 < ReduceAction177: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction177 < ReduceAction177: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -100997,15 +101031,13 @@ val_t NEW_ReduceAction177_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction178[54] = {
-  {(bigint) 1687 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction178[52] = {
+  {(bigint) 1699 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction178" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction178 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction178 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1687 /* 5: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1699 /* 5: ReduceAction178 < ReduceAction178: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101018,7 +101050,7 @@ const classtable_elt_t VFT_parser___ReduceAction178[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction178 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction178 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101047,11 +101079,11 @@ const classtable_elt_t VFT_parser___ReduceAction178[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction178 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction178 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction178___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction178 < ReduceAction178: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction178 < ReduceAction178: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101116,15 +101148,13 @@ val_t NEW_ReduceAction178_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction179[54] = {
-  {(bigint) 1683 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction179[52] = {
+  {(bigint) 1695 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction179" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction179 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction179 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1683 /* 5: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1695 /* 5: ReduceAction179 < ReduceAction179: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101137,7 +101167,7 @@ const classtable_elt_t VFT_parser___ReduceAction179[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction179 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction179 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101166,11 +101196,11 @@ const classtable_elt_t VFT_parser___ReduceAction179[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction179 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction179 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction179___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction179 < ReduceAction179: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction179 < ReduceAction179: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101235,15 +101265,13 @@ val_t NEW_ReduceAction179_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction180[54] = {
-  {(bigint) 1675 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction180[52] = {
+  {(bigint) 1687 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction180" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction180 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction180 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1675 /* 5: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1687 /* 5: ReduceAction180 < ReduceAction180: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101256,7 +101284,7 @@ const classtable_elt_t VFT_parser___ReduceAction180[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction180 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction180 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101285,11 +101313,11 @@ const classtable_elt_t VFT_parser___ReduceAction180[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction180 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction180 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction180___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction180 < ReduceAction180: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction180 < ReduceAction180: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101354,15 +101382,13 @@ val_t NEW_ReduceAction180_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction181[54] = {
-  {(bigint) 1671 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction181[52] = {
+  {(bigint) 1683 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction181" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction181 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction181 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1671 /* 5: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1683 /* 5: ReduceAction181 < ReduceAction181: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101375,7 +101401,7 @@ const classtable_elt_t VFT_parser___ReduceAction181[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction181 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction181 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101404,11 +101430,11 @@ const classtable_elt_t VFT_parser___ReduceAction181[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction181 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction181 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction181___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction181 < ReduceAction181: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction181 < ReduceAction181: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101473,15 +101499,13 @@ val_t NEW_ReduceAction181_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction182[54] = {
-  {(bigint) 1667 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction182[52] = {
+  {(bigint) 1679 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction182" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction182 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction182 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1667 /* 5: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1679 /* 5: ReduceAction182 < ReduceAction182: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101494,7 +101518,7 @@ const classtable_elt_t VFT_parser___ReduceAction182[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction182 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction182 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101523,11 +101547,11 @@ const classtable_elt_t VFT_parser___ReduceAction182[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction182 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction182 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction182___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction182 < ReduceAction182: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction182 < ReduceAction182: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101592,15 +101616,13 @@ val_t NEW_ReduceAction182_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction183[54] = {
-  {(bigint) 1663 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction183[52] = {
+  {(bigint) 1675 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction183" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction183 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction183 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1663 /* 5: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1675 /* 5: ReduceAction183 < ReduceAction183: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101613,7 +101635,7 @@ const classtable_elt_t VFT_parser___ReduceAction183[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction183 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction183 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101642,11 +101664,11 @@ const classtable_elt_t VFT_parser___ReduceAction183[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction183 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction183 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction183___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction183 < ReduceAction183: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction183 < ReduceAction183: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101711,15 +101733,13 @@ val_t NEW_ReduceAction183_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction184[54] = {
-  {(bigint) 1659 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction184[52] = {
+  {(bigint) 1671 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction184" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction184 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction184 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1659 /* 5: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1671 /* 5: ReduceAction184 < ReduceAction184: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101732,7 +101752,7 @@ const classtable_elt_t VFT_parser___ReduceAction184[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction184 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction184 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101761,11 +101781,11 @@ const classtable_elt_t VFT_parser___ReduceAction184[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction184 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction184 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction184___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction184 < ReduceAction184: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction184 < ReduceAction184: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101830,15 +101850,13 @@ val_t NEW_ReduceAction184_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction185[54] = {
-  {(bigint) 1655 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction185[52] = {
+  {(bigint) 1667 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction185" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction185 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction185 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1655 /* 5: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1667 /* 5: ReduceAction185 < ReduceAction185: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101851,7 +101869,7 @@ const classtable_elt_t VFT_parser___ReduceAction185[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction185 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction185 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101880,11 +101898,11 @@ const classtable_elt_t VFT_parser___ReduceAction185[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction185 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction185 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction185___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction185 < ReduceAction185: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction185 < ReduceAction185: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -101949,15 +101967,13 @@ val_t NEW_ReduceAction185_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction186[54] = {
-  {(bigint) 1651 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction186[52] = {
+  {(bigint) 1663 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction186" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction186 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction186 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1651 /* 5: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1663 /* 5: ReduceAction186 < ReduceAction186: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -101970,7 +101986,7 @@ const classtable_elt_t VFT_parser___ReduceAction186[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction186 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction186 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -101999,11 +102015,11 @@ const classtable_elt_t VFT_parser___ReduceAction186[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction186 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction186 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction186___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction186 < ReduceAction186: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction186 < ReduceAction186: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102068,15 +102084,13 @@ val_t NEW_ReduceAction186_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction187[54] = {
-  {(bigint) 1647 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction187[52] = {
+  {(bigint) 1659 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction187" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction187 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction187 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1647 /* 5: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1659 /* 5: ReduceAction187 < ReduceAction187: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102089,7 +102103,7 @@ const classtable_elt_t VFT_parser___ReduceAction187[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction187 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction187 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102118,11 +102132,11 @@ const classtable_elt_t VFT_parser___ReduceAction187[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction187 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction187 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction187___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction187 < ReduceAction187: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction187 < ReduceAction187: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102187,15 +102201,13 @@ val_t NEW_ReduceAction187_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction188[54] = {
-  {(bigint) 1643 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction188[52] = {
+  {(bigint) 1655 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction188" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction188 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction188 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1643 /* 5: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1655 /* 5: ReduceAction188 < ReduceAction188: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102208,7 +102220,7 @@ const classtable_elt_t VFT_parser___ReduceAction188[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction188 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction188 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102237,11 +102249,11 @@ const classtable_elt_t VFT_parser___ReduceAction188[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction188 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction188 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction188___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction188 < ReduceAction188: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction188 < ReduceAction188: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102306,15 +102318,13 @@ val_t NEW_ReduceAction188_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction189[54] = {
-  {(bigint) 1639 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction189[52] = {
+  {(bigint) 1651 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction189" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction189 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction189 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1639 /* 5: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1651 /* 5: ReduceAction189 < ReduceAction189: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102327,7 +102337,7 @@ const classtable_elt_t VFT_parser___ReduceAction189[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction189 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction189 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102356,11 +102366,11 @@ const classtable_elt_t VFT_parser___ReduceAction189[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction189 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction189 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction189___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction189 < ReduceAction189: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction189 < ReduceAction189: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102425,15 +102435,13 @@ val_t NEW_ReduceAction189_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction190[54] = {
-  {(bigint) 1631 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction190[52] = {
+  {(bigint) 1643 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction190" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction190 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction190 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1631 /* 5: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1643 /* 5: ReduceAction190 < ReduceAction190: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102446,7 +102454,7 @@ const classtable_elt_t VFT_parser___ReduceAction190[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction190 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction190 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102475,11 +102483,11 @@ const classtable_elt_t VFT_parser___ReduceAction190[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction190 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction190 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction190___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction190 < ReduceAction190: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction190 < ReduceAction190: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102544,15 +102552,13 @@ val_t NEW_ReduceAction190_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction191[54] = {
-  {(bigint) 1627 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction191[52] = {
+  {(bigint) 1639 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction191" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction191 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction191 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1627 /* 5: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1639 /* 5: ReduceAction191 < ReduceAction191: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102565,7 +102571,7 @@ const classtable_elt_t VFT_parser___ReduceAction191[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction191 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction191 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102594,11 +102600,11 @@ const classtable_elt_t VFT_parser___ReduceAction191[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction191 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction191 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction191___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction191 < ReduceAction191: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction191 < ReduceAction191: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102663,15 +102669,13 @@ val_t NEW_ReduceAction191_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction192[54] = {
-  {(bigint) 1623 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction192[52] = {
+  {(bigint) 1635 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction192" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction192 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction192 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1623 /* 5: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1635 /* 5: ReduceAction192 < ReduceAction192: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102684,7 +102688,7 @@ const classtable_elt_t VFT_parser___ReduceAction192[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction192 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction192 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102713,11 +102717,11 @@ const classtable_elt_t VFT_parser___ReduceAction192[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction192 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction192 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction192___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction192 < ReduceAction192: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction192 < ReduceAction192: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102782,15 +102786,13 @@ val_t NEW_ReduceAction192_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction193[54] = {
-  {(bigint) 1619 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction193[52] = {
+  {(bigint) 1631 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction193" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction193 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction193 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1619 /* 5: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1631 /* 5: ReduceAction193 < ReduceAction193: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102803,7 +102805,7 @@ const classtable_elt_t VFT_parser___ReduceAction193[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction193 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction193 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102832,11 +102834,11 @@ const classtable_elt_t VFT_parser___ReduceAction193[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction193 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction193 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction193___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction193 < ReduceAction193: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction193 < ReduceAction193: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -102901,15 +102903,13 @@ val_t NEW_ReduceAction193_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction194[54] = {
-  {(bigint) 1615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction194[52] = {
+  {(bigint) 1627 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction194" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction194 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction194 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1615 /* 5: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1627 /* 5: ReduceAction194 < ReduceAction194: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -102922,7 +102922,7 @@ const classtable_elt_t VFT_parser___ReduceAction194[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction194 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction194 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -102951,11 +102951,11 @@ const classtable_elt_t VFT_parser___ReduceAction194[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction194 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction194 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction194___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction194 < ReduceAction194: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction194 < ReduceAction194: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103020,15 +103020,13 @@ val_t NEW_ReduceAction194_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction195[54] = {
-  {(bigint) 1611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction195[52] = {
+  {(bigint) 1623 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction195" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction195 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction195 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1611 /* 5: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1623 /* 5: ReduceAction195 < ReduceAction195: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103041,7 +103039,7 @@ const classtable_elt_t VFT_parser___ReduceAction195[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction195 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction195 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103070,11 +103068,11 @@ const classtable_elt_t VFT_parser___ReduceAction195[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction195 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction195 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction195___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction195 < ReduceAction195: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction195 < ReduceAction195: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103139,15 +103137,13 @@ val_t NEW_ReduceAction195_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction196[54] = {
-  {(bigint) 1607 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction196[52] = {
+  {(bigint) 1619 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction196" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction196 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction196 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1607 /* 5: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1619 /* 5: ReduceAction196 < ReduceAction196: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103160,7 +103156,7 @@ const classtable_elt_t VFT_parser___ReduceAction196[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction196 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction196 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103189,11 +103185,11 @@ const classtable_elt_t VFT_parser___ReduceAction196[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction196 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction196 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction196___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction196 < ReduceAction196: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction196 < ReduceAction196: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103258,15 +103254,13 @@ val_t NEW_ReduceAction196_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction197[54] = {
-  {(bigint) 1603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction197[52] = {
+  {(bigint) 1615 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction197" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction197 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction197 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1603 /* 5: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1615 /* 5: ReduceAction197 < ReduceAction197: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103279,7 +103273,7 @@ const classtable_elt_t VFT_parser___ReduceAction197[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction197 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction197 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103308,11 +103302,11 @@ const classtable_elt_t VFT_parser___ReduceAction197[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction197 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction197 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction197___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction197 < ReduceAction197: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction197 < ReduceAction197: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103377,15 +103371,13 @@ val_t NEW_ReduceAction197_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction198[54] = {
-  {(bigint) 1599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction198[52] = {
+  {(bigint) 1611 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction198" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction198 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction198 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1599 /* 5: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1611 /* 5: ReduceAction198 < ReduceAction198: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103398,7 +103390,7 @@ const classtable_elt_t VFT_parser___ReduceAction198[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction198 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction198 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103427,11 +103419,11 @@ const classtable_elt_t VFT_parser___ReduceAction198[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction198 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction198 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction198___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction198 < ReduceAction198: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction198 < ReduceAction198: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103496,15 +103488,13 @@ val_t NEW_ReduceAction198_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction199[54] = {
-  {(bigint) 1595 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction199[52] = {
+  {(bigint) 1607 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction199" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction199 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction199 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1595 /* 5: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1607 /* 5: ReduceAction199 < ReduceAction199: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103517,7 +103507,7 @@ const classtable_elt_t VFT_parser___ReduceAction199[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction199 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction199 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103546,11 +103536,11 @@ const classtable_elt_t VFT_parser___ReduceAction199[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction199 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction199 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction199___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction199 < ReduceAction199: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction199 < ReduceAction199: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103615,15 +103605,13 @@ val_t NEW_ReduceAction199_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction200[54] = {
-  {(bigint) 1583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction200[52] = {
+  {(bigint) 1595 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction200" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction200 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction200 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1583 /* 5: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1595 /* 5: ReduceAction200 < ReduceAction200: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103636,7 +103624,7 @@ const classtable_elt_t VFT_parser___ReduceAction200[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction200 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction200 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103665,11 +103653,11 @@ const classtable_elt_t VFT_parser___ReduceAction200[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction200 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction200 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction200___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction200 < ReduceAction200: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction200 < ReduceAction200: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103734,15 +103722,13 @@ val_t NEW_ReduceAction200_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction201[54] = {
-  {(bigint) 1579 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction201[52] = {
+  {(bigint) 1591 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction201" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction201 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction201 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1579 /* 5: ReduceAction201 < ReduceAction201: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1591 /* 5: ReduceAction201 < ReduceAction201: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103755,7 +103741,7 @@ const classtable_elt_t VFT_parser___ReduceAction201[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction201 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction201 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103784,11 +103770,11 @@ const classtable_elt_t VFT_parser___ReduceAction201[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction201 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction201 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction201___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction201 < ReduceAction201: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction201 < ReduceAction201: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103853,15 +103839,13 @@ val_t NEW_ReduceAction201_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction202[54] = {
-  {(bigint) 1575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction202[52] = {
+  {(bigint) 1587 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction202" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction202 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction202 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1575 /* 5: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1587 /* 5: ReduceAction202 < ReduceAction202: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103874,7 +103858,7 @@ const classtable_elt_t VFT_parser___ReduceAction202[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction202 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction202 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -103903,11 +103887,11 @@ const classtable_elt_t VFT_parser___ReduceAction202[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction202 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction202 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction202___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction202 < ReduceAction202: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction202 < ReduceAction202: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -103972,15 +103956,13 @@ val_t NEW_ReduceAction202_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction203[54] = {
-  {(bigint) 1571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction203[52] = {
+  {(bigint) 1583 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction203" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction203 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction203 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1571 /* 5: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1583 /* 5: ReduceAction203 < ReduceAction203: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -103993,7 +103975,7 @@ const classtable_elt_t VFT_parser___ReduceAction203[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction203 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction203 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104022,11 +104004,11 @@ const classtable_elt_t VFT_parser___ReduceAction203[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction203 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction203 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction203___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction203 < ReduceAction203: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction203 < ReduceAction203: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104091,15 +104073,13 @@ val_t NEW_ReduceAction203_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction204[54] = {
-  {(bigint) 1567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction204[52] = {
+  {(bigint) 1579 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction204" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction204 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction204 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1567 /* 5: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1579 /* 5: ReduceAction204 < ReduceAction204: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104112,7 +104092,7 @@ const classtable_elt_t VFT_parser___ReduceAction204[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction204 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction204 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104141,11 +104121,11 @@ const classtable_elt_t VFT_parser___ReduceAction204[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction204 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction204 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction204___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction204 < ReduceAction204: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction204 < ReduceAction204: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104210,15 +104190,13 @@ val_t NEW_ReduceAction204_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction205[54] = {
-  {(bigint) 1563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction205[52] = {
+  {(bigint) 1575 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction205" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction205 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction205 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1563 /* 5: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1575 /* 5: ReduceAction205 < ReduceAction205: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104231,7 +104209,7 @@ const classtable_elt_t VFT_parser___ReduceAction205[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction205 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction205 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104260,11 +104238,11 @@ const classtable_elt_t VFT_parser___ReduceAction205[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction205 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction205 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction205___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction205 < ReduceAction205: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction205 < ReduceAction205: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104329,15 +104307,13 @@ val_t NEW_ReduceAction205_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction206[54] = {
-  {(bigint) 1559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction206[52] = {
+  {(bigint) 1571 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction206" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction206 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction206 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1559 /* 5: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1571 /* 5: ReduceAction206 < ReduceAction206: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104350,7 +104326,7 @@ const classtable_elt_t VFT_parser___ReduceAction206[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction206 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction206 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104379,11 +104355,11 @@ const classtable_elt_t VFT_parser___ReduceAction206[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction206 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction206 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction206___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction206 < ReduceAction206: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction206 < ReduceAction206: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104448,15 +104424,13 @@ val_t NEW_ReduceAction206_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction207[54] = {
-  {(bigint) 1555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction207[52] = {
+  {(bigint) 1567 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction207" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction207 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction207 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1555 /* 5: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1567 /* 5: ReduceAction207 < ReduceAction207: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104469,7 +104443,7 @@ const classtable_elt_t VFT_parser___ReduceAction207[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction207 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction207 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104498,11 +104472,11 @@ const classtable_elt_t VFT_parser___ReduceAction207[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction207 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction207 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction207___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction207 < ReduceAction207: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction207 < ReduceAction207: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104567,15 +104541,13 @@ val_t NEW_ReduceAction207_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction208[54] = {
-  {(bigint) 1551 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction208[52] = {
+  {(bigint) 1563 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction208" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction208 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction208 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1551 /* 5: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1563 /* 5: ReduceAction208 < ReduceAction208: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104588,7 +104560,7 @@ const classtable_elt_t VFT_parser___ReduceAction208[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction208 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction208 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104617,11 +104589,11 @@ const classtable_elt_t VFT_parser___ReduceAction208[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction208 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction208 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction208___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction208 < ReduceAction208: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction208 < ReduceAction208: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104686,15 +104658,13 @@ val_t NEW_ReduceAction208_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction209[54] = {
-  {(bigint) 1547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction209[52] = {
+  {(bigint) 1559 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction209" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction209 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction209 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1547 /* 5: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1559 /* 5: ReduceAction209 < ReduceAction209: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104707,7 +104677,7 @@ const classtable_elt_t VFT_parser___ReduceAction209[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction209 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction209 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104736,11 +104706,11 @@ const classtable_elt_t VFT_parser___ReduceAction209[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction209 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction209 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction209___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction209 < ReduceAction209: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction209 < ReduceAction209: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104805,15 +104775,13 @@ val_t NEW_ReduceAction209_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction210[54] = {
-  {(bigint) 1539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction210[52] = {
+  {(bigint) 1551 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction210" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction210 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction210 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1539 /* 5: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1551 /* 5: ReduceAction210 < ReduceAction210: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104826,7 +104794,7 @@ const classtable_elt_t VFT_parser___ReduceAction210[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction210 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction210 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104855,11 +104823,11 @@ const classtable_elt_t VFT_parser___ReduceAction210[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction210 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction210 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction210___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction210 < ReduceAction210: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction210 < ReduceAction210: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -104924,15 +104892,13 @@ val_t NEW_ReduceAction210_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction211[54] = {
-  {(bigint) 1535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction211[52] = {
+  {(bigint) 1547 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction211" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction211 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction211 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1535 /* 5: ReduceAction211 < ReduceAction211: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1547 /* 5: ReduceAction211 < ReduceAction211: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -104945,7 +104911,7 @@ const classtable_elt_t VFT_parser___ReduceAction211[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction211 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction211 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -104974,11 +104940,11 @@ const classtable_elt_t VFT_parser___ReduceAction211[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction211 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction211 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction211___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction211 < ReduceAction211: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction211 < ReduceAction211: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105043,15 +105009,13 @@ val_t NEW_ReduceAction211_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction212[54] = {
-  {(bigint) 1531 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction212[52] = {
+  {(bigint) 1543 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction212" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction212 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction212 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1531 /* 5: ReduceAction212 < ReduceAction212: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1543 /* 5: ReduceAction212 < ReduceAction212: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105064,7 +105028,7 @@ const classtable_elt_t VFT_parser___ReduceAction212[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction212 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction212 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105093,11 +105057,11 @@ const classtable_elt_t VFT_parser___ReduceAction212[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction212 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction212 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction212___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction212 < ReduceAction212: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction212 < ReduceAction212: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105162,15 +105126,13 @@ val_t NEW_ReduceAction212_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction213[54] = {
-  {(bigint) 1527 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction213[52] = {
+  {(bigint) 1539 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction213" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction213 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction213 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1527 /* 5: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1539 /* 5: ReduceAction213 < ReduceAction213: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105183,7 +105145,7 @@ const classtable_elt_t VFT_parser___ReduceAction213[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction213 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction213 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105212,11 +105174,11 @@ const classtable_elt_t VFT_parser___ReduceAction213[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction213 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction213 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction213___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction213 < ReduceAction213: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction213 < ReduceAction213: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105281,15 +105243,13 @@ val_t NEW_ReduceAction213_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction214[54] = {
-  {(bigint) 1523 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction214[52] = {
+  {(bigint) 1535 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction214" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction214 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction214 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1523 /* 5: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1535 /* 5: ReduceAction214 < ReduceAction214: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105302,7 +105262,7 @@ const classtable_elt_t VFT_parser___ReduceAction214[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction214 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction214 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105331,11 +105291,11 @@ const classtable_elt_t VFT_parser___ReduceAction214[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction214 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction214 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction214___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction214 < ReduceAction214: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction214 < ReduceAction214: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105400,15 +105360,13 @@ val_t NEW_ReduceAction214_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction215[54] = {
-  {(bigint) 1519 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction215[52] = {
+  {(bigint) 1531 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction215" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction215 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction215 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1519 /* 5: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1531 /* 5: ReduceAction215 < ReduceAction215: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105421,7 +105379,7 @@ const classtable_elt_t VFT_parser___ReduceAction215[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction215 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction215 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105450,11 +105408,11 @@ const classtable_elt_t VFT_parser___ReduceAction215[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction215 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction215 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction215___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction215 < ReduceAction215: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction215 < ReduceAction215: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105519,15 +105477,13 @@ val_t NEW_ReduceAction215_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction216[54] = {
-  {(bigint) 1515 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction216[52] = {
+  {(bigint) 1527 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction216" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction216 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction216 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1515 /* 5: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1527 /* 5: ReduceAction216 < ReduceAction216: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105540,7 +105496,7 @@ const classtable_elt_t VFT_parser___ReduceAction216[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction216 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction216 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105569,11 +105525,11 @@ const classtable_elt_t VFT_parser___ReduceAction216[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction216 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction216 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction216___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction216 < ReduceAction216: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction216 < ReduceAction216: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105638,15 +105594,13 @@ val_t NEW_ReduceAction216_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction217[54] = {
-  {(bigint) 1511 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction217[52] = {
+  {(bigint) 1523 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction217" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction217 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction217 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1511 /* 5: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1523 /* 5: ReduceAction217 < ReduceAction217: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105659,7 +105613,7 @@ const classtable_elt_t VFT_parser___ReduceAction217[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction217 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction217 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105688,11 +105642,11 @@ const classtable_elt_t VFT_parser___ReduceAction217[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction217 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction217 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction217___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction217 < ReduceAction217: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction217 < ReduceAction217: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105757,15 +105711,13 @@ val_t NEW_ReduceAction217_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction218[54] = {
-  {(bigint) 1507 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction218[52] = {
+  {(bigint) 1519 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction218" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction218 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction218 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1507 /* 5: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1519 /* 5: ReduceAction218 < ReduceAction218: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105778,7 +105730,7 @@ const classtable_elt_t VFT_parser___ReduceAction218[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction218 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction218 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105807,11 +105759,11 @@ const classtable_elt_t VFT_parser___ReduceAction218[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction218 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction218 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction218___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction218 < ReduceAction218: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction218 < ReduceAction218: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105876,15 +105828,13 @@ val_t NEW_ReduceAction218_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction220[54] = {
-  {(bigint) 1499 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction220[52] = {
+  {(bigint) 1511 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction220" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction220 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction220 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1499 /* 5: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1511 /* 5: ReduceAction220 < ReduceAction220: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -105897,7 +105847,7 @@ const classtable_elt_t VFT_parser___ReduceAction220[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction220 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction220 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -105926,11 +105876,11 @@ const classtable_elt_t VFT_parser___ReduceAction220[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction220 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction220 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction220___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction220 < ReduceAction220: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction220 < ReduceAction220: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -105995,15 +105945,13 @@ val_t NEW_ReduceAction220_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction221[54] = {
-  {(bigint) 1495 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction221[52] = {
+  {(bigint) 1507 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction221" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction221 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction221 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1495 /* 5: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1507 /* 5: ReduceAction221 < ReduceAction221: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106016,7 +105964,7 @@ const classtable_elt_t VFT_parser___ReduceAction221[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction221 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction221 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106045,11 +105993,11 @@ const classtable_elt_t VFT_parser___ReduceAction221[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction221 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction221 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction221___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction221 < ReduceAction221: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction221 < ReduceAction221: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106114,15 +106062,13 @@ val_t NEW_ReduceAction221_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction222[54] = {
-  {(bigint) 1491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction222[52] = {
+  {(bigint) 1503 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction222" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction222 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction222 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1491 /* 5: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1503 /* 5: ReduceAction222 < ReduceAction222: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106135,7 +106081,7 @@ const classtable_elt_t VFT_parser___ReduceAction222[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction222 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction222 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106164,11 +106110,11 @@ const classtable_elt_t VFT_parser___ReduceAction222[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction222 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction222 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction222___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction222 < ReduceAction222: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction222 < ReduceAction222: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106233,15 +106179,13 @@ val_t NEW_ReduceAction222_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction223[54] = {
-  {(bigint) 1487 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction223[52] = {
+  {(bigint) 1499 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction223" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction223 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction223 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1487 /* 5: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1499 /* 5: ReduceAction223 < ReduceAction223: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106254,7 +106198,7 @@ const classtable_elt_t VFT_parser___ReduceAction223[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction223 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction223 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106283,11 +106227,11 @@ const classtable_elt_t VFT_parser___ReduceAction223[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction223 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction223 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction223___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction223 < ReduceAction223: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction223 < ReduceAction223: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106352,15 +106296,13 @@ val_t NEW_ReduceAction223_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction224[54] = {
-  {(bigint) 1483 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction224[52] = {
+  {(bigint) 1495 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction224" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction224 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction224 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1483 /* 5: ReduceAction224 < ReduceAction224: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1495 /* 5: ReduceAction224 < ReduceAction224: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106373,7 +106315,7 @@ const classtable_elt_t VFT_parser___ReduceAction224[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction224 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction224 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106402,11 +106344,11 @@ const classtable_elt_t VFT_parser___ReduceAction224[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction224 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction224 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction224___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction224 < ReduceAction224: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction224 < ReduceAction224: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106471,15 +106413,13 @@ val_t NEW_ReduceAction224_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction225[54] = {
-  {(bigint) 1479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction225[52] = {
+  {(bigint) 1491 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction225" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction225 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction225 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1479 /* 5: ReduceAction225 < ReduceAction225: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1491 /* 5: ReduceAction225 < ReduceAction225: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106492,7 +106432,7 @@ const classtable_elt_t VFT_parser___ReduceAction225[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction225 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction225 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106521,11 +106461,11 @@ const classtable_elt_t VFT_parser___ReduceAction225[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction225 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction225 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction225___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction225 < ReduceAction225: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction225 < ReduceAction225: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106590,15 +106530,13 @@ val_t NEW_ReduceAction225_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction226[54] = {
-  {(bigint) 1475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction226[52] = {
+  {(bigint) 1487 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction226" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction226 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction226 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1475 /* 5: ReduceAction226 < ReduceAction226: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1487 /* 5: ReduceAction226 < ReduceAction226: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106611,7 +106549,7 @@ const classtable_elt_t VFT_parser___ReduceAction226[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction226 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction226 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106640,11 +106578,11 @@ const classtable_elt_t VFT_parser___ReduceAction226[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction226 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction226 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction226___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction226 < ReduceAction226: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction226 < ReduceAction226: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106709,15 +106647,13 @@ val_t NEW_ReduceAction226_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction227[54] = {
-  {(bigint) 1471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction227[52] = {
+  {(bigint) 1483 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction227" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction227 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction227 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1471 /* 5: ReduceAction227 < ReduceAction227: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1483 /* 5: ReduceAction227 < ReduceAction227: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106730,7 +106666,7 @@ const classtable_elt_t VFT_parser___ReduceAction227[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction227 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction227 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106759,11 +106695,11 @@ const classtable_elt_t VFT_parser___ReduceAction227[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction227 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction227 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction227___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction227 < ReduceAction227: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction227 < ReduceAction227: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106828,15 +106764,13 @@ val_t NEW_ReduceAction227_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction228[54] = {
-  {(bigint) 1467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction228[52] = {
+  {(bigint) 1479 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction228" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction228 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction228 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1467 /* 5: ReduceAction228 < ReduceAction228: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1479 /* 5: ReduceAction228 < ReduceAction228: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106849,7 +106783,7 @@ const classtable_elt_t VFT_parser___ReduceAction228[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction228 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction228 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106878,11 +106812,11 @@ const classtable_elt_t VFT_parser___ReduceAction228[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction228 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction228 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction228___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction228 < ReduceAction228: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction228 < ReduceAction228: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -106947,15 +106881,13 @@ val_t NEW_ReduceAction228_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction229[54] = {
-  {(bigint) 1463 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction229[52] = {
+  {(bigint) 1475 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction229" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction229 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction229 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1463 /* 5: ReduceAction229 < ReduceAction229: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1475 /* 5: ReduceAction229 < ReduceAction229: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -106968,7 +106900,7 @@ const classtable_elt_t VFT_parser___ReduceAction229[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction229 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction229 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -106997,11 +106929,11 @@ const classtable_elt_t VFT_parser___ReduceAction229[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction229 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction229 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction229___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction229 < ReduceAction229: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction229 < ReduceAction229: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107066,15 +106998,13 @@ val_t NEW_ReduceAction229_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction230[54] = {
-  {(bigint) 1455 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction230[52] = {
+  {(bigint) 1467 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction230" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction230 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction230 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1455 /* 5: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1467 /* 5: ReduceAction230 < ReduceAction230: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107087,7 +107017,7 @@ const classtable_elt_t VFT_parser___ReduceAction230[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction230 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction230 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107116,11 +107046,11 @@ const classtable_elt_t VFT_parser___ReduceAction230[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction230 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction230 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction230___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction230 < ReduceAction230: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction230 < ReduceAction230: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107185,15 +107115,13 @@ val_t NEW_ReduceAction230_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction231[54] = {
-  {(bigint) 1451 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction231[52] = {
+  {(bigint) 1463 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction231" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction231 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction231 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1451 /* 5: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1463 /* 5: ReduceAction231 < ReduceAction231: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107206,7 +107134,7 @@ const classtable_elt_t VFT_parser___ReduceAction231[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction231 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction231 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107235,11 +107163,11 @@ const classtable_elt_t VFT_parser___ReduceAction231[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction231 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction231 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction231___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction231 < ReduceAction231: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction231 < ReduceAction231: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107304,15 +107232,13 @@ val_t NEW_ReduceAction231_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction232[54] = {
-  {(bigint) 1447 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction232[52] = {
+  {(bigint) 1459 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction232" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction232 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction232 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1447 /* 5: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1459 /* 5: ReduceAction232 < ReduceAction232: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107325,7 +107251,7 @@ const classtable_elt_t VFT_parser___ReduceAction232[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction232 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction232 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107354,11 +107280,11 @@ const classtable_elt_t VFT_parser___ReduceAction232[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction232 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction232 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction232___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction232 < ReduceAction232: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction232 < ReduceAction232: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107423,15 +107349,13 @@ val_t NEW_ReduceAction232_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction233[54] = {
-  {(bigint) 1443 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction233[52] = {
+  {(bigint) 1455 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction233" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction233 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction233 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1443 /* 5: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1455 /* 5: ReduceAction233 < ReduceAction233: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107444,7 +107368,7 @@ const classtable_elt_t VFT_parser___ReduceAction233[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction233 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction233 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107473,11 +107397,11 @@ const classtable_elt_t VFT_parser___ReduceAction233[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction233 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction233 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction233___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction233 < ReduceAction233: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction233 < ReduceAction233: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107542,15 +107466,13 @@ val_t NEW_ReduceAction233_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction235[54] = {
-  {(bigint) 1439 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction235[52] = {
+  {(bigint) 1451 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction235" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction235 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction235 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1439 /* 5: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1451 /* 5: ReduceAction235 < ReduceAction235: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107563,7 +107485,7 @@ const classtable_elt_t VFT_parser___ReduceAction235[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction235 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction235 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107592,11 +107514,11 @@ const classtable_elt_t VFT_parser___ReduceAction235[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction235 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction235 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction235___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction235 < ReduceAction235: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction235 < ReduceAction235: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107661,15 +107583,13 @@ val_t NEW_ReduceAction235_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction236[54] = {
-  {(bigint) 1435 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction236[52] = {
+  {(bigint) 1447 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction236" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction236 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction236 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1435 /* 5: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1447 /* 5: ReduceAction236 < ReduceAction236: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107682,7 +107602,7 @@ const classtable_elt_t VFT_parser___ReduceAction236[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction236 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction236 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107711,11 +107631,11 @@ const classtable_elt_t VFT_parser___ReduceAction236[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction236 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction236 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction236___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction236 < ReduceAction236: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction236 < ReduceAction236: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107780,15 +107700,13 @@ val_t NEW_ReduceAction236_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction237[54] = {
-  {(bigint) 1431 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction237[52] = {
+  {(bigint) 1443 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction237" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction237 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction237 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1431 /* 5: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1443 /* 5: ReduceAction237 < ReduceAction237: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107801,7 +107719,7 @@ const classtable_elt_t VFT_parser___ReduceAction237[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction237 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction237 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107830,11 +107748,11 @@ const classtable_elt_t VFT_parser___ReduceAction237[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction237 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction237 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction237___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction237 < ReduceAction237: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction237 < ReduceAction237: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -107899,15 +107817,13 @@ val_t NEW_ReduceAction237_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction238[54] = {
-  {(bigint) 1427 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction238[52] = {
+  {(bigint) 1439 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction238" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction238 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction238 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1427 /* 5: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1439 /* 5: ReduceAction238 < ReduceAction238: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -107920,7 +107836,7 @@ const classtable_elt_t VFT_parser___ReduceAction238[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction238 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction238 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -107949,11 +107865,11 @@ const classtable_elt_t VFT_parser___ReduceAction238[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction238 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction238 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction238___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction238 < ReduceAction238: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction238 < ReduceAction238: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108018,15 +107934,13 @@ val_t NEW_ReduceAction238_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction239[54] = {
-  {(bigint) 1423 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction239[52] = {
+  {(bigint) 1435 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction239" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction239 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction239 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1423 /* 5: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1435 /* 5: ReduceAction239 < ReduceAction239: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108039,7 +107953,7 @@ const classtable_elt_t VFT_parser___ReduceAction239[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction239 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction239 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108068,11 +107982,11 @@ const classtable_elt_t VFT_parser___ReduceAction239[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction239 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction239 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction239___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction239 < ReduceAction239: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction239 < ReduceAction239: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108137,15 +108051,13 @@ val_t NEW_ReduceAction239_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction240[54] = {
-  {(bigint) 1415 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction240[52] = {
+  {(bigint) 1427 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction240" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction240 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction240 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1415 /* 5: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1427 /* 5: ReduceAction240 < ReduceAction240: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108158,7 +108070,7 @@ const classtable_elt_t VFT_parser___ReduceAction240[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction240 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction240 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108187,11 +108099,11 @@ const classtable_elt_t VFT_parser___ReduceAction240[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction240 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction240 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction240___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction240 < ReduceAction240: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction240 < ReduceAction240: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108256,15 +108168,13 @@ val_t NEW_ReduceAction240_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction241[54] = {
-  {(bigint) 1411 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction241[52] = {
+  {(bigint) 1423 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction241" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction241 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction241 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1411 /* 5: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1423 /* 5: ReduceAction241 < ReduceAction241: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108277,7 +108187,7 @@ const classtable_elt_t VFT_parser___ReduceAction241[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction241 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction241 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108306,11 +108216,11 @@ const classtable_elt_t VFT_parser___ReduceAction241[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction241 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction241 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction241___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction241 < ReduceAction241: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction241 < ReduceAction241: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108375,15 +108285,13 @@ val_t NEW_ReduceAction241_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction242[54] = {
-  {(bigint) 1407 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction242[52] = {
+  {(bigint) 1419 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction242" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction242 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction242 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1407 /* 5: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1419 /* 5: ReduceAction242 < ReduceAction242: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108396,7 +108304,7 @@ const classtable_elt_t VFT_parser___ReduceAction242[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction242 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction242 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108425,11 +108333,11 @@ const classtable_elt_t VFT_parser___ReduceAction242[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction242 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction242 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction242___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction242 < ReduceAction242: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction242 < ReduceAction242: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108494,15 +108402,13 @@ val_t NEW_ReduceAction242_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction243[54] = {
-  {(bigint) 1403 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction243[52] = {
+  {(bigint) 1415 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction243" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction243 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction243 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1403 /* 5: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1415 /* 5: ReduceAction243 < ReduceAction243: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108515,7 +108421,7 @@ const classtable_elt_t VFT_parser___ReduceAction243[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction243 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction243 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108544,11 +108450,11 @@ const classtable_elt_t VFT_parser___ReduceAction243[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction243 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction243 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction243___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction243 < ReduceAction243: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction243 < ReduceAction243: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108613,15 +108519,13 @@ val_t NEW_ReduceAction243_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction246[54] = {
-  {(bigint) 1399 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction246[52] = {
+  {(bigint) 1411 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction246" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction246 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction246 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1399 /* 5: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1411 /* 5: ReduceAction246 < ReduceAction246: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108634,7 +108538,7 @@ const classtable_elt_t VFT_parser___ReduceAction246[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction246 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction246 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108663,11 +108567,11 @@ const classtable_elt_t VFT_parser___ReduceAction246[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction246 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction246 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction246___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction246 < ReduceAction246: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction246 < ReduceAction246: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108732,15 +108636,13 @@ val_t NEW_ReduceAction246_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction247[54] = {
-  {(bigint) 1395 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction247[52] = {
+  {(bigint) 1407 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction247" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction247 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction247 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1395 /* 5: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1407 /* 5: ReduceAction247 < ReduceAction247: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108753,7 +108655,7 @@ const classtable_elt_t VFT_parser___ReduceAction247[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction247 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction247 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108782,11 +108684,11 @@ const classtable_elt_t VFT_parser___ReduceAction247[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction247 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction247 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction247___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction247 < ReduceAction247: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction247 < ReduceAction247: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108851,15 +108753,13 @@ val_t NEW_ReduceAction247_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction248[54] = {
-  {(bigint) 1391 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction248[52] = {
+  {(bigint) 1403 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction248" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction248 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction248 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1391 /* 5: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1403 /* 5: ReduceAction248 < ReduceAction248: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108872,7 +108772,7 @@ const classtable_elt_t VFT_parser___ReduceAction248[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction248 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction248 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -108901,11 +108801,11 @@ const classtable_elt_t VFT_parser___ReduceAction248[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction248 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction248 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction248___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction248 < ReduceAction248: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction248 < ReduceAction248: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -108970,15 +108870,13 @@ val_t NEW_ReduceAction248_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction249[54] = {
-  {(bigint) 1387 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction249[52] = {
+  {(bigint) 1399 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction249" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction249 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction249 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1387 /* 5: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1399 /* 5: ReduceAction249 < ReduceAction249: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -108991,7 +108889,7 @@ const classtable_elt_t VFT_parser___ReduceAction249[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction249 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction249 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109020,11 +108918,11 @@ const classtable_elt_t VFT_parser___ReduceAction249[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction249 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction249 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction249___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction249 < ReduceAction249: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction249 < ReduceAction249: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109089,15 +108987,13 @@ val_t NEW_ReduceAction249_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction250[54] = {
-  {(bigint) 1379 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction250[52] = {
+  {(bigint) 1391 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction250" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction250 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction250 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1379 /* 5: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1391 /* 5: ReduceAction250 < ReduceAction250: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109110,7 +109006,7 @@ const classtable_elt_t VFT_parser___ReduceAction250[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction250 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction250 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109139,11 +109035,11 @@ const classtable_elt_t VFT_parser___ReduceAction250[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction250 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction250 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction250___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction250 < ReduceAction250: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction250 < ReduceAction250: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109208,15 +109104,13 @@ val_t NEW_ReduceAction250_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction251[54] = {
-  {(bigint) 1375 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction251[52] = {
+  {(bigint) 1387 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction251" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction251 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction251 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1375 /* 5: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1387 /* 5: ReduceAction251 < ReduceAction251: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109229,7 +109123,7 @@ const classtable_elt_t VFT_parser___ReduceAction251[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction251 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction251 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109258,11 +109152,11 @@ const classtable_elt_t VFT_parser___ReduceAction251[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction251 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction251 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction251___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction251 < ReduceAction251: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction251 < ReduceAction251: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109327,15 +109221,13 @@ val_t NEW_ReduceAction251_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction252[54] = {
-  {(bigint) 1371 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction252[52] = {
+  {(bigint) 1383 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction252" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction252 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction252 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1371 /* 5: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1383 /* 5: ReduceAction252 < ReduceAction252: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109348,7 +109240,7 @@ const classtable_elt_t VFT_parser___ReduceAction252[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction252 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction252 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109377,11 +109269,11 @@ const classtable_elt_t VFT_parser___ReduceAction252[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction252 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction252 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction252___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction252 < ReduceAction252: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction252 < ReduceAction252: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109446,15 +109338,13 @@ val_t NEW_ReduceAction252_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction253[54] = {
-  {(bigint) 1367 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction253[52] = {
+  {(bigint) 1379 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction253" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction253 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction253 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1367 /* 5: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1379 /* 5: ReduceAction253 < ReduceAction253: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109467,7 +109357,7 @@ const classtable_elt_t VFT_parser___ReduceAction253[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction253 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction253 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109496,11 +109386,11 @@ const classtable_elt_t VFT_parser___ReduceAction253[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction253 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction253 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction253___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction253 < ReduceAction253: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction253 < ReduceAction253: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109565,15 +109455,13 @@ val_t NEW_ReduceAction253_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction254[54] = {
-  {(bigint) 1363 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction254[52] = {
+  {(bigint) 1375 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction254" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction254 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction254 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1363 /* 5: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1375 /* 5: ReduceAction254 < ReduceAction254: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109586,7 +109474,7 @@ const classtable_elt_t VFT_parser___ReduceAction254[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction254 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction254 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109615,11 +109503,11 @@ const classtable_elt_t VFT_parser___ReduceAction254[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction254 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction254 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction254___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction254 < ReduceAction254: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction254 < ReduceAction254: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109684,15 +109572,13 @@ val_t NEW_ReduceAction254_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction255[54] = {
-  {(bigint) 1359 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction255[52] = {
+  {(bigint) 1371 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction255" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction255 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction255 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1359 /* 5: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1371 /* 5: ReduceAction255 < ReduceAction255: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109705,7 +109591,7 @@ const classtable_elt_t VFT_parser___ReduceAction255[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction255 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction255 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109734,11 +109620,11 @@ const classtable_elt_t VFT_parser___ReduceAction255[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction255 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction255 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction255___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction255 < ReduceAction255: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction255 < ReduceAction255: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109803,15 +109689,13 @@ val_t NEW_ReduceAction255_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction256[54] = {
-  {(bigint) 1355 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction256[52] = {
+  {(bigint) 1367 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction256" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction256 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction256 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1355 /* 5: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1367 /* 5: ReduceAction256 < ReduceAction256: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109824,7 +109708,7 @@ const classtable_elt_t VFT_parser___ReduceAction256[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction256 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction256 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109853,11 +109737,11 @@ const classtable_elt_t VFT_parser___ReduceAction256[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction256 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction256 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction256___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction256 < ReduceAction256: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction256 < ReduceAction256: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -109922,15 +109806,13 @@ val_t NEW_ReduceAction256_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction263[54] = {
-  {(bigint) 1347 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction263[52] = {
+  {(bigint) 1359 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction263" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction263 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction263 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1347 /* 5: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1359 /* 5: ReduceAction263 < ReduceAction263: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -109943,7 +109825,7 @@ const classtable_elt_t VFT_parser___ReduceAction263[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction263 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction263 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -109972,11 +109854,11 @@ const classtable_elt_t VFT_parser___ReduceAction263[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction263 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction263 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction263___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction263 < ReduceAction263: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction263 < ReduceAction263: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110041,15 +109923,13 @@ val_t NEW_ReduceAction263_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction264[54] = {
-  {(bigint) 1343 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction264[52] = {
+  {(bigint) 1355 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction264" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction264 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction264 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1343 /* 5: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1355 /* 5: ReduceAction264 < ReduceAction264: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110062,7 +109942,7 @@ const classtable_elt_t VFT_parser___ReduceAction264[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction264 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction264 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110091,11 +109971,11 @@ const classtable_elt_t VFT_parser___ReduceAction264[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction264 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction264 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction264___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction264 < ReduceAction264: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction264 < ReduceAction264: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110160,15 +110040,13 @@ val_t NEW_ReduceAction264_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction265[54] = {
-  {(bigint) 1339 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction265[52] = {
+  {(bigint) 1351 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction265" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction265 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction265 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1339 /* 5: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1351 /* 5: ReduceAction265 < ReduceAction265: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110181,7 +110059,7 @@ const classtable_elt_t VFT_parser___ReduceAction265[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction265 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction265 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110210,11 +110088,11 @@ const classtable_elt_t VFT_parser___ReduceAction265[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction265 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction265 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction265___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction265 < ReduceAction265: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction265 < ReduceAction265: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110279,15 +110157,13 @@ val_t NEW_ReduceAction265_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction266[54] = {
-  {(bigint) 1335 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction266[52] = {
+  {(bigint) 1347 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction266" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction266 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction266 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1335 /* 5: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1347 /* 5: ReduceAction266 < ReduceAction266: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110300,7 +110176,7 @@ const classtable_elt_t VFT_parser___ReduceAction266[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction266 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction266 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110329,11 +110205,11 @@ const classtable_elt_t VFT_parser___ReduceAction266[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction266 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction266 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction266___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction266 < ReduceAction266: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction266 < ReduceAction266: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110398,15 +110274,13 @@ val_t NEW_ReduceAction266_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction267[54] = {
-  {(bigint) 1331 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction267[52] = {
+  {(bigint) 1343 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction267" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction267 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction267 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1331 /* 5: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1343 /* 5: ReduceAction267 < ReduceAction267: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110419,7 +110293,7 @@ const classtable_elt_t VFT_parser___ReduceAction267[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction267 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction267 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110448,11 +110322,11 @@ const classtable_elt_t VFT_parser___ReduceAction267[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction267 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction267 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction267___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction267 < ReduceAction267: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction267 < ReduceAction267: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110517,15 +110391,13 @@ val_t NEW_ReduceAction267_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction268[54] = {
-  {(bigint) 1327 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction268[52] = {
+  {(bigint) 1339 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction268" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction268 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction268 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1327 /* 5: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1339 /* 5: ReduceAction268 < ReduceAction268: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110538,7 +110410,7 @@ const classtable_elt_t VFT_parser___ReduceAction268[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction268 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction268 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110567,11 +110439,11 @@ const classtable_elt_t VFT_parser___ReduceAction268[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction268 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction268 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction268___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction268 < ReduceAction268: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction268 < ReduceAction268: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110636,15 +110508,13 @@ val_t NEW_ReduceAction268_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction269[54] = {
-  {(bigint) 1323 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction269[52] = {
+  {(bigint) 1335 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction269" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction269 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction269 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1323 /* 5: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1335 /* 5: ReduceAction269 < ReduceAction269: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110657,7 +110527,7 @@ const classtable_elt_t VFT_parser___ReduceAction269[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction269 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction269 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110686,11 +110556,11 @@ const classtable_elt_t VFT_parser___ReduceAction269[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction269 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction269 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction269___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction269 < ReduceAction269: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction269 < ReduceAction269: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110755,15 +110625,13 @@ val_t NEW_ReduceAction269_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction270[54] = {
-  {(bigint) 1315 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction270[52] = {
+  {(bigint) 1327 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction270" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction270 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction270 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1315 /* 5: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1327 /* 5: ReduceAction270 < ReduceAction270: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110776,7 +110644,7 @@ const classtable_elt_t VFT_parser___ReduceAction270[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction270 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction270 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110805,11 +110673,11 @@ const classtable_elt_t VFT_parser___ReduceAction270[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction270 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction270 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction270___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction270 < ReduceAction270: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction270 < ReduceAction270: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110874,15 +110742,13 @@ val_t NEW_ReduceAction270_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction271[54] = {
-  {(bigint) 1311 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction271[52] = {
+  {(bigint) 1323 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction271" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction271 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction271 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1311 /* 5: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1323 /* 5: ReduceAction271 < ReduceAction271: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -110895,7 +110761,7 @@ const classtable_elt_t VFT_parser___ReduceAction271[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction271 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction271 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -110924,11 +110790,11 @@ const classtable_elt_t VFT_parser___ReduceAction271[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction271 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction271 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction271___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction271 < ReduceAction271: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction271 < ReduceAction271: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -110993,15 +110859,13 @@ val_t NEW_ReduceAction271_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction272[54] = {
-  {(bigint) 1307 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction272[52] = {
+  {(bigint) 1319 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction272" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction272 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction272 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1307 /* 5: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1319 /* 5: ReduceAction272 < ReduceAction272: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111014,7 +110878,7 @@ const classtable_elt_t VFT_parser___ReduceAction272[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction272 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction272 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111043,11 +110907,11 @@ const classtable_elt_t VFT_parser___ReduceAction272[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction272 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction272 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction272___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction272 < ReduceAction272: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction272 < ReduceAction272: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111112,15 +110976,13 @@ val_t NEW_ReduceAction272_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction273[54] = {
-  {(bigint) 1303 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction273[52] = {
+  {(bigint) 1315 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction273" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction273 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction273 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1303 /* 5: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1315 /* 5: ReduceAction273 < ReduceAction273: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111133,7 +110995,7 @@ const classtable_elt_t VFT_parser___ReduceAction273[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction273 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction273 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111162,11 +111024,11 @@ const classtable_elt_t VFT_parser___ReduceAction273[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction273 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction273 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction273___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction273 < ReduceAction273: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction273 < ReduceAction273: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111231,15 +111093,13 @@ val_t NEW_ReduceAction273_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction274[54] = {
-  {(bigint) 1299 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction274[52] = {
+  {(bigint) 1311 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction274" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction274 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction274 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1299 /* 5: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1311 /* 5: ReduceAction274 < ReduceAction274: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111252,7 +111112,7 @@ const classtable_elt_t VFT_parser___ReduceAction274[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction274 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction274 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111281,11 +111141,11 @@ const classtable_elt_t VFT_parser___ReduceAction274[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction274 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction274 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction274___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction274 < ReduceAction274: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction274 < ReduceAction274: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111350,15 +111210,13 @@ val_t NEW_ReduceAction274_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction275[54] = {
-  {(bigint) 1295 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction275[52] = {
+  {(bigint) 1307 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction275" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction275 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction275 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1295 /* 5: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1307 /* 5: ReduceAction275 < ReduceAction275: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111371,7 +111229,7 @@ const classtable_elt_t VFT_parser___ReduceAction275[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction275 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction275 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111400,11 +111258,11 @@ const classtable_elt_t VFT_parser___ReduceAction275[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction275 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction275 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction275___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction275 < ReduceAction275: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction275 < ReduceAction275: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111469,15 +111327,13 @@ val_t NEW_ReduceAction275_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction276[54] = {
-  {(bigint) 1291 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction276[52] = {
+  {(bigint) 1303 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction276" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction276 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction276 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1291 /* 5: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1303 /* 5: ReduceAction276 < ReduceAction276: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111490,7 +111346,7 @@ const classtable_elt_t VFT_parser___ReduceAction276[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction276 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction276 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111519,11 +111375,11 @@ const classtable_elt_t VFT_parser___ReduceAction276[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction276 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction276 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction276___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction276 < ReduceAction276: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction276 < ReduceAction276: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111588,15 +111444,13 @@ val_t NEW_ReduceAction276_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction277[54] = {
-  {(bigint) 1287 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction277[52] = {
+  {(bigint) 1299 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction277" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction277 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction277 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1287 /* 5: ReduceAction277 < ReduceAction277: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1299 /* 5: ReduceAction277 < ReduceAction277: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111609,7 +111463,7 @@ const classtable_elt_t VFT_parser___ReduceAction277[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction277 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction277 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111638,11 +111492,11 @@ const classtable_elt_t VFT_parser___ReduceAction277[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction277 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction277 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction277___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction277 < ReduceAction277: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction277 < ReduceAction277: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111707,15 +111561,13 @@ val_t NEW_ReduceAction277_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction278[54] = {
-  {(bigint) 1283 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction278[52] = {
+  {(bigint) 1295 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction278" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction278 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction278 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1283 /* 5: ReduceAction278 < ReduceAction278: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1295 /* 5: ReduceAction278 < ReduceAction278: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111728,7 +111580,7 @@ const classtable_elt_t VFT_parser___ReduceAction278[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction278 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction278 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111757,11 +111609,11 @@ const classtable_elt_t VFT_parser___ReduceAction278[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction278 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction278 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction278___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction278 < ReduceAction278: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction278 < ReduceAction278: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111826,15 +111678,13 @@ val_t NEW_ReduceAction278_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction279[54] = {
-  {(bigint) 1279 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction279[52] = {
+  {(bigint) 1291 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction279" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction279 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction279 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1279 /* 5: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1291 /* 5: ReduceAction279 < ReduceAction279: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111847,7 +111697,7 @@ const classtable_elt_t VFT_parser___ReduceAction279[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction279 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction279 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111876,11 +111726,11 @@ const classtable_elt_t VFT_parser___ReduceAction279[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction279 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction279 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction279___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction279 < ReduceAction279: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction279 < ReduceAction279: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -111945,15 +111795,13 @@ val_t NEW_ReduceAction279_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction280[54] = {
-  {(bigint) 1271 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction280[52] = {
+  {(bigint) 1283 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction280" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction280 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction280 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1271 /* 5: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1283 /* 5: ReduceAction280 < ReduceAction280: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -111966,7 +111814,7 @@ const classtable_elt_t VFT_parser___ReduceAction280[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction280 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction280 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -111995,11 +111843,11 @@ const classtable_elt_t VFT_parser___ReduceAction280[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction280 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction280 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction280___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction280 < ReduceAction280: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction280 < ReduceAction280: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112064,15 +111912,13 @@ val_t NEW_ReduceAction280_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction281[54] = {
-  {(bigint) 1267 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction281[52] = {
+  {(bigint) 1279 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction281" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction281 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction281 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1267 /* 5: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1279 /* 5: ReduceAction281 < ReduceAction281: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112085,7 +111931,7 @@ const classtable_elt_t VFT_parser___ReduceAction281[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction281 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction281 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112114,11 +111960,11 @@ const classtable_elt_t VFT_parser___ReduceAction281[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction281 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction281 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction281___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction281 < ReduceAction281: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction281 < ReduceAction281: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112183,15 +112029,13 @@ val_t NEW_ReduceAction281_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction282[54] = {
-  {(bigint) 1263 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction282[52] = {
+  {(bigint) 1275 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction282" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction282 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction282 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1263 /* 5: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1275 /* 5: ReduceAction282 < ReduceAction282: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112204,7 +112048,7 @@ const classtable_elt_t VFT_parser___ReduceAction282[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction282 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction282 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112233,11 +112077,11 @@ const classtable_elt_t VFT_parser___ReduceAction282[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction282 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction282 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction282___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction282 < ReduceAction282: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction282 < ReduceAction282: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112302,15 +112146,13 @@ val_t NEW_ReduceAction282_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction283[54] = {
-  {(bigint) 1259 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction283[52] = {
+  {(bigint) 1271 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction283" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction283 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction283 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1259 /* 5: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1271 /* 5: ReduceAction283 < ReduceAction283: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112323,7 +112165,7 @@ const classtable_elt_t VFT_parser___ReduceAction283[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction283 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction283 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112352,11 +112194,11 @@ const classtable_elt_t VFT_parser___ReduceAction283[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction283 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction283 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction283___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction283 < ReduceAction283: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction283 < ReduceAction283: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112421,15 +112263,13 @@ val_t NEW_ReduceAction283_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction284[54] = {
-  {(bigint) 1255 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction284[52] = {
+  {(bigint) 1267 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction284" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction284 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction284 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1255 /* 5: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1267 /* 5: ReduceAction284 < ReduceAction284: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112442,7 +112282,7 @@ const classtable_elt_t VFT_parser___ReduceAction284[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction284 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction284 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112471,11 +112311,11 @@ const classtable_elt_t VFT_parser___ReduceAction284[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction284 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction284 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction284___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction284 < ReduceAction284: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction284 < ReduceAction284: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112540,15 +112380,13 @@ val_t NEW_ReduceAction284_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction285[54] = {
-  {(bigint) 1251 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction285[52] = {
+  {(bigint) 1263 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction285" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction285 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction285 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1251 /* 5: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1263 /* 5: ReduceAction285 < ReduceAction285: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112561,7 +112399,7 @@ const classtable_elt_t VFT_parser___ReduceAction285[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction285 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction285 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112590,11 +112428,11 @@ const classtable_elt_t VFT_parser___ReduceAction285[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction285 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction285 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction285___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction285 < ReduceAction285: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction285 < ReduceAction285: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112659,15 +112497,13 @@ val_t NEW_ReduceAction285_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction286[54] = {
-  {(bigint) 1247 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction286[52] = {
+  {(bigint) 1259 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction286" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction286 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction286 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1247 /* 5: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1259 /* 5: ReduceAction286 < ReduceAction286: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112680,7 +112516,7 @@ const classtable_elt_t VFT_parser___ReduceAction286[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction286 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction286 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112709,11 +112545,11 @@ const classtable_elt_t VFT_parser___ReduceAction286[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction286 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction286 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction286___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction286 < ReduceAction286: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction286 < ReduceAction286: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112778,15 +112614,13 @@ val_t NEW_ReduceAction286_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction287[54] = {
-  {(bigint) 1243 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction287[52] = {
+  {(bigint) 1255 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction287" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction287 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction287 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1243 /* 5: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1255 /* 5: ReduceAction287 < ReduceAction287: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112799,7 +112633,7 @@ const classtable_elt_t VFT_parser___ReduceAction287[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction287 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction287 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112828,11 +112662,11 @@ const classtable_elt_t VFT_parser___ReduceAction287[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction287 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction287 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction287___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction287 < ReduceAction287: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction287 < ReduceAction287: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -112897,15 +112731,13 @@ val_t NEW_ReduceAction287_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction288[54] = {
-  {(bigint) 1239 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction288[52] = {
+  {(bigint) 1251 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction288" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction288 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction288 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1239 /* 5: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1251 /* 5: ReduceAction288 < ReduceAction288: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -112918,7 +112750,7 @@ const classtable_elt_t VFT_parser___ReduceAction288[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction288 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction288 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -112947,11 +112779,11 @@ const classtable_elt_t VFT_parser___ReduceAction288[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction288 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction288 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction288___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction288 < ReduceAction288: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction288 < ReduceAction288: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113016,15 +112848,13 @@ val_t NEW_ReduceAction288_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction289[54] = {
-  {(bigint) 1235 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction289[52] = {
+  {(bigint) 1247 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction289" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction289 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction289 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1235 /* 5: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1247 /* 5: ReduceAction289 < ReduceAction289: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113037,7 +112867,7 @@ const classtable_elt_t VFT_parser___ReduceAction289[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction289 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction289 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113066,11 +112896,11 @@ const classtable_elt_t VFT_parser___ReduceAction289[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction289 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction289 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction289___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction289 < ReduceAction289: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction289 < ReduceAction289: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113135,15 +112965,13 @@ val_t NEW_ReduceAction289_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction290[54] = {
-  {(bigint) 1227 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction290[52] = {
+  {(bigint) 1239 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction290" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction290 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction290 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1227 /* 5: ReduceAction290 < ReduceAction290: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1239 /* 5: ReduceAction290 < ReduceAction290: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113156,7 +112984,7 @@ const classtable_elt_t VFT_parser___ReduceAction290[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction290 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction290 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113185,11 +113013,11 @@ const classtable_elt_t VFT_parser___ReduceAction290[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction290 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction290 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction290___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction290 < ReduceAction290: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction290 < ReduceAction290: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113254,15 +113082,13 @@ val_t NEW_ReduceAction290_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction291[54] = {
-  {(bigint) 1223 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction291[52] = {
+  {(bigint) 1235 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction291" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction291 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction291 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1223 /* 5: ReduceAction291 < ReduceAction291: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1235 /* 5: ReduceAction291 < ReduceAction291: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113275,7 +113101,7 @@ const classtable_elt_t VFT_parser___ReduceAction291[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction291 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction291 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113304,11 +113130,11 @@ const classtable_elt_t VFT_parser___ReduceAction291[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction291 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction291 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction291___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction291 < ReduceAction291: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction291 < ReduceAction291: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113373,15 +113199,13 @@ val_t NEW_ReduceAction291_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction292[54] = {
-  {(bigint) 1219 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction292[52] = {
+  {(bigint) 1231 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction292" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction292 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction292 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1219 /* 5: ReduceAction292 < ReduceAction292: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1231 /* 5: ReduceAction292 < ReduceAction292: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113394,7 +113218,7 @@ const classtable_elt_t VFT_parser___ReduceAction292[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction292 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction292 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113423,11 +113247,11 @@ const classtable_elt_t VFT_parser___ReduceAction292[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction292 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction292 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction292___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction292 < ReduceAction292: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction292 < ReduceAction292: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113492,15 +113316,13 @@ val_t NEW_ReduceAction292_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction293[54] = {
-  {(bigint) 1215 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction293[52] = {
+  {(bigint) 1227 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction293" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction293 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction293 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1215 /* 5: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1227 /* 5: ReduceAction293 < ReduceAction293: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113513,7 +113335,7 @@ const classtable_elt_t VFT_parser___ReduceAction293[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction293 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction293 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113542,11 +113364,11 @@ const classtable_elt_t VFT_parser___ReduceAction293[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction293 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction293 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction293___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction293 < ReduceAction293: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction293 < ReduceAction293: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113611,15 +113433,13 @@ val_t NEW_ReduceAction293_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction294[54] = {
-  {(bigint) 1211 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction294[52] = {
+  {(bigint) 1223 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction294" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction294 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction294 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1211 /* 5: ReduceAction294 < ReduceAction294: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1223 /* 5: ReduceAction294 < ReduceAction294: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113632,7 +113452,7 @@ const classtable_elt_t VFT_parser___ReduceAction294[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction294 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction294 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113661,11 +113481,11 @@ const classtable_elt_t VFT_parser___ReduceAction294[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction294 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction294 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction294___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction294 < ReduceAction294: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction294 < ReduceAction294: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113730,15 +113550,13 @@ val_t NEW_ReduceAction294_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction295[54] = {
-  {(bigint) 1207 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction295[52] = {
+  {(bigint) 1219 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction295" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction295 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction295 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1207 /* 5: ReduceAction295 < ReduceAction295: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1219 /* 5: ReduceAction295 < ReduceAction295: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113751,7 +113569,7 @@ const classtable_elt_t VFT_parser___ReduceAction295[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction295 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction295 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113780,11 +113598,11 @@ const classtable_elt_t VFT_parser___ReduceAction295[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction295 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction295 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction295___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction295 < ReduceAction295: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction295 < ReduceAction295: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113849,15 +113667,13 @@ val_t NEW_ReduceAction295_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction296[54] = {
-  {(bigint) 1203 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction296[52] = {
+  {(bigint) 1215 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction296" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction296 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction296 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1203 /* 5: ReduceAction296 < ReduceAction296: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1215 /* 5: ReduceAction296 < ReduceAction296: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113870,7 +113686,7 @@ const classtable_elt_t VFT_parser___ReduceAction296[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction296 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction296 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -113899,11 +113715,11 @@ const classtable_elt_t VFT_parser___ReduceAction296[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction296 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction296 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction296___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction296 < ReduceAction296: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction296 < ReduceAction296: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -113968,15 +113784,13 @@ val_t NEW_ReduceAction296_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction297[54] = {
-  {(bigint) 1199 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction297[52] = {
+  {(bigint) 1211 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction297" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction297 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction297 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1199 /* 5: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1211 /* 5: ReduceAction297 < ReduceAction297: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -113989,7 +113803,7 @@ const classtable_elt_t VFT_parser___ReduceAction297[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction297 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction297 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114018,11 +113832,11 @@ const classtable_elt_t VFT_parser___ReduceAction297[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction297 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction297 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction297___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction297 < ReduceAction297: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction297 < ReduceAction297: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114087,15 +113901,13 @@ val_t NEW_ReduceAction297_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction298[54] = {
-  {(bigint) 1195 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction298[52] = {
+  {(bigint) 1207 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction298" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction298 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction298 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1195 /* 5: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1207 /* 5: ReduceAction298 < ReduceAction298: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114108,7 +113920,7 @@ const classtable_elt_t VFT_parser___ReduceAction298[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction298 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction298 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114137,11 +113949,11 @@ const classtable_elt_t VFT_parser___ReduceAction298[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction298 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction298 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction298___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction298 < ReduceAction298: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction298 < ReduceAction298: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114206,15 +114018,13 @@ val_t NEW_ReduceAction298_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction299[54] = {
-  {(bigint) 1191 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction299[52] = {
+  {(bigint) 1203 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction299" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction299 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction299 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1191 /* 5: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1203 /* 5: ReduceAction299 < ReduceAction299: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114227,7 +114037,7 @@ const classtable_elt_t VFT_parser___ReduceAction299[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction299 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction299 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114256,11 +114066,11 @@ const classtable_elt_t VFT_parser___ReduceAction299[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction299 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction299 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction299___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction299 < ReduceAction299: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction299 < ReduceAction299: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114325,15 +114135,13 @@ val_t NEW_ReduceAction299_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction300[54] = {
-  {(bigint) 1179 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction300[52] = {
+  {(bigint) 1191 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction300" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction300 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction300 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1179 /* 5: ReduceAction300 < ReduceAction300: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1191 /* 5: ReduceAction300 < ReduceAction300: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114346,7 +114154,7 @@ const classtable_elt_t VFT_parser___ReduceAction300[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction300 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction300 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114375,11 +114183,11 @@ const classtable_elt_t VFT_parser___ReduceAction300[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction300 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction300 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction300___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction300 < ReduceAction300: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction300 < ReduceAction300: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114444,15 +114252,13 @@ val_t NEW_ReduceAction300_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction301[54] = {
-  {(bigint) 1175 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction301[52] = {
+  {(bigint) 1187 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction301" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction301 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction301 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1175 /* 5: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1187 /* 5: ReduceAction301 < ReduceAction301: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114465,7 +114271,7 @@ const classtable_elt_t VFT_parser___ReduceAction301[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction301 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction301 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114494,11 +114300,11 @@ const classtable_elt_t VFT_parser___ReduceAction301[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction301 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction301 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction301___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction301 < ReduceAction301: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction301 < ReduceAction301: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114563,15 +114369,13 @@ val_t NEW_ReduceAction301_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction302[54] = {
-  {(bigint) 1171 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction302[52] = {
+  {(bigint) 1183 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction302" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction302 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction302 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1171 /* 5: ReduceAction302 < ReduceAction302: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1183 /* 5: ReduceAction302 < ReduceAction302: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114584,7 +114388,7 @@ const classtable_elt_t VFT_parser___ReduceAction302[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction302 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction302 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114613,11 +114417,11 @@ const classtable_elt_t VFT_parser___ReduceAction302[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction302 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction302 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction302___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction302 < ReduceAction302: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction302 < ReduceAction302: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114682,15 +114486,13 @@ val_t NEW_ReduceAction302_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction303[54] = {
-  {(bigint) 1167 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction303[52] = {
+  {(bigint) 1179 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction303" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction303 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction303 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1167 /* 5: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1179 /* 5: ReduceAction303 < ReduceAction303: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114703,7 +114505,7 @@ const classtable_elt_t VFT_parser___ReduceAction303[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction303 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction303 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114732,11 +114534,11 @@ const classtable_elt_t VFT_parser___ReduceAction303[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction303 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction303 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction303___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction303 < ReduceAction303: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction303 < ReduceAction303: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114801,15 +114603,13 @@ val_t NEW_ReduceAction303_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction304[54] = {
-  {(bigint) 1163 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction304[52] = {
+  {(bigint) 1175 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction304" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction304 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction304 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1163 /* 5: ReduceAction304 < ReduceAction304: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1175 /* 5: ReduceAction304 < ReduceAction304: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114822,7 +114622,7 @@ const classtable_elt_t VFT_parser___ReduceAction304[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction304 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction304 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114851,11 +114651,11 @@ const classtable_elt_t VFT_parser___ReduceAction304[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction304 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction304 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction304___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction304 < ReduceAction304: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction304 < ReduceAction304: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -114920,15 +114720,13 @@ val_t NEW_ReduceAction304_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction305[54] = {
-  {(bigint) 1159 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction305[52] = {
+  {(bigint) 1171 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction305" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction305 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction305 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1159 /* 5: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1171 /* 5: ReduceAction305 < ReduceAction305: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -114941,7 +114739,7 @@ const classtable_elt_t VFT_parser___ReduceAction305[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction305 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction305 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -114970,11 +114768,11 @@ const classtable_elt_t VFT_parser___ReduceAction305[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction305 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction305 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction305___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction305 < ReduceAction305: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction305 < ReduceAction305: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115039,15 +114837,13 @@ val_t NEW_ReduceAction305_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction306[54] = {
-  {(bigint) 1155 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction306[52] = {
+  {(bigint) 1167 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction306" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction306 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction306 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1155 /* 5: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1167 /* 5: ReduceAction306 < ReduceAction306: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115060,7 +114856,7 @@ const classtable_elt_t VFT_parser___ReduceAction306[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction306 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction306 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115089,11 +114885,11 @@ const classtable_elt_t VFT_parser___ReduceAction306[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction306 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction306 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction306___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction306 < ReduceAction306: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction306 < ReduceAction306: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115158,15 +114954,13 @@ val_t NEW_ReduceAction306_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction307[54] = {
-  {(bigint) 1151 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction307[52] = {
+  {(bigint) 1163 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction307" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction307 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction307 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1151 /* 5: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1163 /* 5: ReduceAction307 < ReduceAction307: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115179,7 +114973,7 @@ const classtable_elt_t VFT_parser___ReduceAction307[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction307 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction307 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115208,11 +115002,11 @@ const classtable_elt_t VFT_parser___ReduceAction307[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction307 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction307 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction307___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction307 < ReduceAction307: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction307 < ReduceAction307: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115277,15 +115071,13 @@ val_t NEW_ReduceAction307_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction308[54] = {
-  {(bigint) 1147 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction308[52] = {
+  {(bigint) 1159 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction308" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction308 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction308 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1147 /* 5: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1159 /* 5: ReduceAction308 < ReduceAction308: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115298,7 +115090,7 @@ const classtable_elt_t VFT_parser___ReduceAction308[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction308 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction308 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115327,11 +115119,11 @@ const classtable_elt_t VFT_parser___ReduceAction308[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction308 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction308 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction308___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction308 < ReduceAction308: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction308 < ReduceAction308: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115396,15 +115188,13 @@ val_t NEW_ReduceAction308_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction309[54] = {
-  {(bigint) 1143 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction309[52] = {
+  {(bigint) 1155 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction309" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction309 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction309 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1143 /* 5: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1155 /* 5: ReduceAction309 < ReduceAction309: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115417,7 +115207,7 @@ const classtable_elt_t VFT_parser___ReduceAction309[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction309 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction309 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115446,11 +115236,11 @@ const classtable_elt_t VFT_parser___ReduceAction309[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction309 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction309 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction309___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction309 < ReduceAction309: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction309 < ReduceAction309: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115515,15 +115305,13 @@ val_t NEW_ReduceAction309_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction310[54] = {
-  {(bigint) 1135 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction310[52] = {
+  {(bigint) 1147 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction310" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction310 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction310 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1135 /* 5: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1147 /* 5: ReduceAction310 < ReduceAction310: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115536,7 +115324,7 @@ const classtable_elt_t VFT_parser___ReduceAction310[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction310 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction310 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115565,11 +115353,11 @@ const classtable_elt_t VFT_parser___ReduceAction310[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction310 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction310 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction310___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction310 < ReduceAction310: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction310 < ReduceAction310: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115634,15 +115422,13 @@ val_t NEW_ReduceAction310_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction311[54] = {
-  {(bigint) 1131 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction311[52] = {
+  {(bigint) 1143 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction311" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction311 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction311 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1131 /* 5: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1143 /* 5: ReduceAction311 < ReduceAction311: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115655,7 +115441,7 @@ const classtable_elt_t VFT_parser___ReduceAction311[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction311 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction311 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115684,11 +115470,11 @@ const classtable_elt_t VFT_parser___ReduceAction311[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction311 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction311 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction311___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction311 < ReduceAction311: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction311 < ReduceAction311: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115753,15 +115539,13 @@ val_t NEW_ReduceAction311_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction312[54] = {
-  {(bigint) 1127 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction312[52] = {
+  {(bigint) 1139 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction312" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction312 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction312 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1127 /* 5: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1139 /* 5: ReduceAction312 < ReduceAction312: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115774,7 +115558,7 @@ const classtable_elt_t VFT_parser___ReduceAction312[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction312 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction312 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115803,11 +115587,11 @@ const classtable_elt_t VFT_parser___ReduceAction312[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction312 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction312 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction312___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction312 < ReduceAction312: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction312 < ReduceAction312: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115872,15 +115656,13 @@ val_t NEW_ReduceAction312_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction313[54] = {
-  {(bigint) 1123 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction313[52] = {
+  {(bigint) 1135 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction313" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction313 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction313 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1123 /* 5: ReduceAction313 < ReduceAction313: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1135 /* 5: ReduceAction313 < ReduceAction313: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -115893,7 +115675,7 @@ const classtable_elt_t VFT_parser___ReduceAction313[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction313 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction313 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -115922,11 +115704,11 @@ const classtable_elt_t VFT_parser___ReduceAction313[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction313 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction313 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction313___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction313 < ReduceAction313: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction313 < ReduceAction313: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -115991,15 +115773,13 @@ val_t NEW_ReduceAction313_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction314[54] = {
-  {(bigint) 1119 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction314[52] = {
+  {(bigint) 1131 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction314" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction314 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction314 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1119 /* 5: ReduceAction314 < ReduceAction314: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1131 /* 5: ReduceAction314 < ReduceAction314: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116012,7 +115792,7 @@ const classtable_elt_t VFT_parser___ReduceAction314[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction314 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction314 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116041,11 +115821,11 @@ const classtable_elt_t VFT_parser___ReduceAction314[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction314 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction314 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction314___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction314 < ReduceAction314: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction314 < ReduceAction314: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116110,15 +115890,13 @@ val_t NEW_ReduceAction314_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction317[54] = {
-  {(bigint) 1115 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction317[52] = {
+  {(bigint) 1127 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction317" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction317 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction317 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1115 /* 5: ReduceAction317 < ReduceAction317: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1127 /* 5: ReduceAction317 < ReduceAction317: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116131,7 +115909,7 @@ const classtable_elt_t VFT_parser___ReduceAction317[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction317 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction317 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116160,11 +115938,11 @@ const classtable_elt_t VFT_parser___ReduceAction317[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction317 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction317 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction317___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction317 < ReduceAction317: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction317 < ReduceAction317: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116229,15 +116007,13 @@ val_t NEW_ReduceAction317_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction318[54] = {
-  {(bigint) 1111 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction318[52] = {
+  {(bigint) 1123 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction318" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction318 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction318 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1111 /* 5: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1123 /* 5: ReduceAction318 < ReduceAction318: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116250,7 +116026,7 @@ const classtable_elt_t VFT_parser___ReduceAction318[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction318 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction318 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116279,11 +116055,11 @@ const classtable_elt_t VFT_parser___ReduceAction318[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction318 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction318 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction318___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction318 < ReduceAction318: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction318 < ReduceAction318: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116348,15 +116124,13 @@ val_t NEW_ReduceAction318_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction319[54] = {
-  {(bigint) 1107 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction319[52] = {
+  {(bigint) 1119 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction319" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction319 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction319 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1107 /* 5: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1119 /* 5: ReduceAction319 < ReduceAction319: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116369,7 +116143,7 @@ const classtable_elt_t VFT_parser___ReduceAction319[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction319 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction319 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116398,11 +116172,11 @@ const classtable_elt_t VFT_parser___ReduceAction319[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction319 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction319 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction319___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction319 < ReduceAction319: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction319 < ReduceAction319: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116467,15 +116241,13 @@ val_t NEW_ReduceAction319_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction320[54] = {
-  {(bigint) 1099 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction320[52] = {
+  {(bigint) 1111 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction320" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction320 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction320 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1099 /* 5: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1111 /* 5: ReduceAction320 < ReduceAction320: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116488,7 +116260,7 @@ const classtable_elt_t VFT_parser___ReduceAction320[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction320 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction320 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116517,11 +116289,11 @@ const classtable_elt_t VFT_parser___ReduceAction320[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction320 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction320 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction320___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction320 < ReduceAction320: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction320 < ReduceAction320: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116586,15 +116358,13 @@ val_t NEW_ReduceAction320_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction321[54] = {
-  {(bigint) 1095 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction321[52] = {
+  {(bigint) 1107 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction321" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction321 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction321 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1095 /* 5: ReduceAction321 < ReduceAction321: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1107 /* 5: ReduceAction321 < ReduceAction321: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116607,7 +116377,7 @@ const classtable_elt_t VFT_parser___ReduceAction321[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction321 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction321 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116636,11 +116406,11 @@ const classtable_elt_t VFT_parser___ReduceAction321[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction321 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction321 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction321___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction321 < ReduceAction321: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction321 < ReduceAction321: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116705,15 +116475,13 @@ val_t NEW_ReduceAction321_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction322[54] = {
-  {(bigint) 1091 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction322[52] = {
+  {(bigint) 1103 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction322" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction322 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction322 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1091 /* 5: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1103 /* 5: ReduceAction322 < ReduceAction322: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116726,7 +116494,7 @@ const classtable_elt_t VFT_parser___ReduceAction322[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction322 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction322 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116755,11 +116523,11 @@ const classtable_elt_t VFT_parser___ReduceAction322[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction322 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction322 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction322___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction322 < ReduceAction322: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction322 < ReduceAction322: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116824,15 +116592,13 @@ val_t NEW_ReduceAction322_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction323[54] = {
-  {(bigint) 1087 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction323[52] = {
+  {(bigint) 1099 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction323" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction323 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction323 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1087 /* 5: ReduceAction323 < ReduceAction323: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1099 /* 5: ReduceAction323 < ReduceAction323: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116845,7 +116611,7 @@ const classtable_elt_t VFT_parser___ReduceAction323[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction323 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction323 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116874,11 +116640,11 @@ const classtable_elt_t VFT_parser___ReduceAction323[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction323 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction323 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction323___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction323 < ReduceAction323: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction323 < ReduceAction323: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -116943,15 +116709,13 @@ val_t NEW_ReduceAction323_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction324[54] = {
-  {(bigint) 1083 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction324[52] = {
+  {(bigint) 1095 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction324" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction324 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction324 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1083 /* 5: ReduceAction324 < ReduceAction324: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1095 /* 5: ReduceAction324 < ReduceAction324: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -116964,7 +116728,7 @@ const classtable_elt_t VFT_parser___ReduceAction324[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction324 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction324 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -116993,11 +116757,11 @@ const classtable_elt_t VFT_parser___ReduceAction324[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction324 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction324 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction324___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction324 < ReduceAction324: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction324 < ReduceAction324: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117062,15 +116826,13 @@ val_t NEW_ReduceAction324_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction325[54] = {
-  {(bigint) 1079 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction325[52] = {
+  {(bigint) 1091 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction325" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction325 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction325 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1079 /* 5: ReduceAction325 < ReduceAction325: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1091 /* 5: ReduceAction325 < ReduceAction325: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117083,7 +116845,7 @@ const classtable_elt_t VFT_parser___ReduceAction325[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction325 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction325 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117112,11 +116874,11 @@ const classtable_elt_t VFT_parser___ReduceAction325[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction325 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction325 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction325___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction325 < ReduceAction325: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction325 < ReduceAction325: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117181,15 +116943,13 @@ val_t NEW_ReduceAction325_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction326[54] = {
-  {(bigint) 1075 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction326[52] = {
+  {(bigint) 1087 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction326" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction326 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction326 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1075 /* 5: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1087 /* 5: ReduceAction326 < ReduceAction326: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117202,7 +116962,7 @@ const classtable_elt_t VFT_parser___ReduceAction326[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction326 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction326 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117231,11 +116991,11 @@ const classtable_elt_t VFT_parser___ReduceAction326[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction326 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction326 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction326___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction326 < ReduceAction326: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction326 < ReduceAction326: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117300,15 +117060,13 @@ val_t NEW_ReduceAction326_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction327[54] = {
-  {(bigint) 1071 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction327[52] = {
+  {(bigint) 1083 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction327" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction327 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction327 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1071 /* 5: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1083 /* 5: ReduceAction327 < ReduceAction327: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117321,7 +117079,7 @@ const classtable_elt_t VFT_parser___ReduceAction327[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction327 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction327 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117350,11 +117108,11 @@ const classtable_elt_t VFT_parser___ReduceAction327[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction327 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction327 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction327___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction327 < ReduceAction327: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction327 < ReduceAction327: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117419,15 +117177,13 @@ val_t NEW_ReduceAction327_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction328[54] = {
-  {(bigint) 1067 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction328[52] = {
+  {(bigint) 1079 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction328" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction328 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction328 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1067 /* 5: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1079 /* 5: ReduceAction328 < ReduceAction328: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117440,7 +117196,7 @@ const classtable_elt_t VFT_parser___ReduceAction328[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction328 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction328 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117469,11 +117225,11 @@ const classtable_elt_t VFT_parser___ReduceAction328[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction328 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction328 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction328___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction328 < ReduceAction328: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction328 < ReduceAction328: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117538,15 +117294,13 @@ val_t NEW_ReduceAction328_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction329[54] = {
-  {(bigint) 1063 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction329[52] = {
+  {(bigint) 1075 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction329" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction329 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction329 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1063 /* 5: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1075 /* 5: ReduceAction329 < ReduceAction329: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117559,7 +117313,7 @@ const classtable_elt_t VFT_parser___ReduceAction329[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction329 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction329 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117588,11 +117342,11 @@ const classtable_elt_t VFT_parser___ReduceAction329[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction329 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction329 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction329___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction329 < ReduceAction329: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction329 < ReduceAction329: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117657,15 +117411,13 @@ val_t NEW_ReduceAction329_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction333[54] = {
-  {(bigint) 1055 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction333[52] = {
+  {(bigint) 1067 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction333" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction333 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction333 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1055 /* 5: ReduceAction333 < ReduceAction333: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1067 /* 5: ReduceAction333 < ReduceAction333: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117678,7 +117430,7 @@ const classtable_elt_t VFT_parser___ReduceAction333[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction333 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction333 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117707,11 +117459,11 @@ const classtable_elt_t VFT_parser___ReduceAction333[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction333 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction333 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction333___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction333 < ReduceAction333: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction333 < ReduceAction333: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117776,15 +117528,13 @@ val_t NEW_ReduceAction333_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction335[54] = {
-  {(bigint) 1051 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction335[52] = {
+  {(bigint) 1063 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction335" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction335 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction335 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1051 /* 5: ReduceAction335 < ReduceAction335: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1063 /* 5: ReduceAction335 < ReduceAction335: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117797,7 +117547,7 @@ const classtable_elt_t VFT_parser___ReduceAction335[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction335 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction335 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117826,11 +117576,11 @@ const classtable_elt_t VFT_parser___ReduceAction335[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction335 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction335 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction335___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction335 < ReduceAction335: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction335 < ReduceAction335: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -117895,15 +117645,13 @@ val_t NEW_ReduceAction335_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction337[54] = {
-  {(bigint) 1047 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction337[52] = {
+  {(bigint) 1059 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction337" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction337 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction337 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1047 /* 5: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1059 /* 5: ReduceAction337 < ReduceAction337: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -117916,7 +117664,7 @@ const classtable_elt_t VFT_parser___ReduceAction337[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction337 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction337 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -117945,11 +117693,11 @@ const classtable_elt_t VFT_parser___ReduceAction337[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction337 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction337 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction337___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction337 < ReduceAction337: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction337 < ReduceAction337: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118014,15 +117762,13 @@ val_t NEW_ReduceAction337_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction338[54] = {
-  {(bigint) 1043 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction338[52] = {
+  {(bigint) 1055 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction338" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction338 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction338 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1043 /* 5: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1055 /* 5: ReduceAction338 < ReduceAction338: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118035,7 +117781,7 @@ const classtable_elt_t VFT_parser___ReduceAction338[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction338 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction338 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118064,11 +117810,11 @@ const classtable_elt_t VFT_parser___ReduceAction338[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction338 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction338 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction338___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction338 < ReduceAction338: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction338 < ReduceAction338: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118133,15 +117879,13 @@ val_t NEW_ReduceAction338_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction339[54] = {
-  {(bigint) 1039 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction339[52] = {
+  {(bigint) 1051 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction339" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction339 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction339 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1039 /* 5: ReduceAction339 < ReduceAction339: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1051 /* 5: ReduceAction339 < ReduceAction339: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118154,7 +117898,7 @@ const classtable_elt_t VFT_parser___ReduceAction339[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction339 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction339 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118183,11 +117927,11 @@ const classtable_elt_t VFT_parser___ReduceAction339[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction339 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction339 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction339___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction339 < ReduceAction339: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction339 < ReduceAction339: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118252,15 +117996,13 @@ val_t NEW_ReduceAction339_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction341[54] = {
-  {(bigint) 1031 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction341[52] = {
+  {(bigint) 1043 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction341" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction341 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction341 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1031 /* 5: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1043 /* 5: ReduceAction341 < ReduceAction341: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118273,7 +118015,7 @@ const classtable_elt_t VFT_parser___ReduceAction341[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction341 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction341 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118302,11 +118044,11 @@ const classtable_elt_t VFT_parser___ReduceAction341[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction341 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction341 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction341___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction341 < ReduceAction341: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction341 < ReduceAction341: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118371,15 +118113,13 @@ val_t NEW_ReduceAction341_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction343[54] = {
-  {(bigint) 1027 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction343[52] = {
+  {(bigint) 1039 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction343" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction343 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction343 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1027 /* 5: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1039 /* 5: ReduceAction343 < ReduceAction343: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118392,7 +118132,7 @@ const classtable_elt_t VFT_parser___ReduceAction343[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction343 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction343 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118421,11 +118161,11 @@ const classtable_elt_t VFT_parser___ReduceAction343[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction343 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction343 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction343___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction343 < ReduceAction343: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction343 < ReduceAction343: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118490,15 +118230,13 @@ val_t NEW_ReduceAction343_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction344[54] = {
-  {(bigint) 1023 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction344[52] = {
+  {(bigint) 1035 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction344" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction344 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction344 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1023 /* 5: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1035 /* 5: ReduceAction344 < ReduceAction344: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118511,7 +118249,7 @@ const classtable_elt_t VFT_parser___ReduceAction344[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction344 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction344 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118540,11 +118278,11 @@ const classtable_elt_t VFT_parser___ReduceAction344[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction344 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction344 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction344___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction344 < ReduceAction344: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction344 < ReduceAction344: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118609,15 +118347,13 @@ val_t NEW_ReduceAction344_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction345[54] = {
-  {(bigint) 1019 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction345[52] = {
+  {(bigint) 1031 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction345" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction345 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction345 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1019 /* 5: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1031 /* 5: ReduceAction345 < ReduceAction345: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118630,7 +118366,7 @@ const classtable_elt_t VFT_parser___ReduceAction345[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction345 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction345 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118659,11 +118395,11 @@ const classtable_elt_t VFT_parser___ReduceAction345[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction345 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction345 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction345___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction345 < ReduceAction345: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction345 < ReduceAction345: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118728,15 +118464,13 @@ val_t NEW_ReduceAction345_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction346[54] = {
-  {(bigint) 1015 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction346[52] = {
+  {(bigint) 1027 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction346" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction346 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction346 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1015 /* 5: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1027 /* 5: ReduceAction346 < ReduceAction346: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118749,7 +118483,7 @@ const classtable_elt_t VFT_parser___ReduceAction346[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction346 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction346 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118778,11 +118512,11 @@ const classtable_elt_t VFT_parser___ReduceAction346[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction346 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction346 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction346___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction346 < ReduceAction346: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction346 < ReduceAction346: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118847,15 +118581,13 @@ val_t NEW_ReduceAction346_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction347[54] = {
-  {(bigint) 1011 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction347[52] = {
+  {(bigint) 1023 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction347" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction347 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction347 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1011 /* 5: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1023 /* 5: ReduceAction347 < ReduceAction347: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118868,7 +118600,7 @@ const classtable_elt_t VFT_parser___ReduceAction347[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction347 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction347 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -118897,11 +118629,11 @@ const classtable_elt_t VFT_parser___ReduceAction347[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction347 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction347 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction347___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction347 < ReduceAction347: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction347 < ReduceAction347: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -118966,15 +118698,13 @@ val_t NEW_ReduceAction347_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction348[54] = {
-  {(bigint) 1007 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction348[52] = {
+  {(bigint) 1019 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction348" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction348 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction348 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1007 /* 5: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1019 /* 5: ReduceAction348 < ReduceAction348: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -118987,7 +118717,7 @@ const classtable_elt_t VFT_parser___ReduceAction348[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction348 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction348 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119016,11 +118746,11 @@ const classtable_elt_t VFT_parser___ReduceAction348[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction348 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction348 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction348___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction348 < ReduceAction348: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction348 < ReduceAction348: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119085,15 +118815,13 @@ val_t NEW_ReduceAction348_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction349[54] = {
-  {(bigint) 1003 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction349[52] = {
+  {(bigint) 1015 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction349" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction349 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction349 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 1003 /* 5: ReduceAction349 < ReduceAction349: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1015 /* 5: ReduceAction349 < ReduceAction349: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119106,7 +118834,7 @@ const classtable_elt_t VFT_parser___ReduceAction349[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction349 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction349 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119135,11 +118863,11 @@ const classtable_elt_t VFT_parser___ReduceAction349[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction349 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction349 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction349___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction349 < ReduceAction349: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction349 < ReduceAction349: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119204,15 +118932,13 @@ val_t NEW_ReduceAction349_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction350[54] = {
-  {(bigint) 995 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction350[52] = {
+  {(bigint) 1007 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction350" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction350 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction350 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 995 /* 5: ReduceAction350 < ReduceAction350: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1007 /* 5: ReduceAction350 < ReduceAction350: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119225,7 +118951,7 @@ const classtable_elt_t VFT_parser___ReduceAction350[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction350 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction350 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119254,11 +118980,11 @@ const classtable_elt_t VFT_parser___ReduceAction350[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction350 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction350 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction350___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction350 < ReduceAction350: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction350 < ReduceAction350: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119323,15 +119049,13 @@ val_t NEW_ReduceAction350_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction351[54] = {
-  {(bigint) 991 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction351[52] = {
+  {(bigint) 1003 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction351" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction351 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction351 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 991 /* 5: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 1003 /* 5: ReduceAction351 < ReduceAction351: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119344,7 +119068,7 @@ const classtable_elt_t VFT_parser___ReduceAction351[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction351 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction351 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119373,11 +119097,11 @@ const classtable_elt_t VFT_parser___ReduceAction351[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction351 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction351 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction351___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction351 < ReduceAction351: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction351 < ReduceAction351: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119442,15 +119166,13 @@ val_t NEW_ReduceAction351_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction352[54] = {
-  {(bigint) 987 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction352[52] = {
+  {(bigint) 999 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction352" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction352 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction352 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 987 /* 5: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 999 /* 5: ReduceAction352 < ReduceAction352: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119463,7 +119185,7 @@ const classtable_elt_t VFT_parser___ReduceAction352[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction352 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction352 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119492,11 +119214,11 @@ const classtable_elt_t VFT_parser___ReduceAction352[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction352 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction352 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction352___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction352 < ReduceAction352: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction352 < ReduceAction352: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119561,15 +119283,13 @@ val_t NEW_ReduceAction352_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction353[54] = {
-  {(bigint) 983 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction353[52] = {
+  {(bigint) 995 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction353" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction353 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction353 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 983 /* 5: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 995 /* 5: ReduceAction353 < ReduceAction353: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119582,7 +119302,7 @@ const classtable_elt_t VFT_parser___ReduceAction353[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction353 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction353 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119611,11 +119331,11 @@ const classtable_elt_t VFT_parser___ReduceAction353[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction353 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction353 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction353___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction353 < ReduceAction353: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction353 < ReduceAction353: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119680,15 +119400,13 @@ val_t NEW_ReduceAction353_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction355[54] = {
-  {(bigint) 979 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction355[52] = {
+  {(bigint) 991 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction355" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction355 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction355 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 979 /* 5: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 991 /* 5: ReduceAction355 < ReduceAction355: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119701,7 +119419,7 @@ const classtable_elt_t VFT_parser___ReduceAction355[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction355 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction355 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119730,11 +119448,11 @@ const classtable_elt_t VFT_parser___ReduceAction355[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction355 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction355 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction355___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction355 < ReduceAction355: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction355 < ReduceAction355: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119799,15 +119517,13 @@ val_t NEW_ReduceAction355_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction356[54] = {
-  {(bigint) 975 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction356[52] = {
+  {(bigint) 987 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction356" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction356 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction356 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 975 /* 5: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 987 /* 5: ReduceAction356 < ReduceAction356: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119820,7 +119536,7 @@ const classtable_elt_t VFT_parser___ReduceAction356[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction356 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction356 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119849,11 +119565,11 @@ const classtable_elt_t VFT_parser___ReduceAction356[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction356 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction356 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction356___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction356 < ReduceAction356: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction356 < ReduceAction356: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -119918,15 +119634,13 @@ val_t NEW_ReduceAction356_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction358[54] = {
-  {(bigint) 971 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction358[52] = {
+  {(bigint) 983 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction358" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction358 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction358 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 971 /* 5: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 983 /* 5: ReduceAction358 < ReduceAction358: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -119939,7 +119653,7 @@ const classtable_elt_t VFT_parser___ReduceAction358[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction358 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction358 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -119968,11 +119682,11 @@ const classtable_elt_t VFT_parser___ReduceAction358[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction358 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction358 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction358___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction358 < ReduceAction358: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction358 < ReduceAction358: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120037,15 +119751,13 @@ val_t NEW_ReduceAction358_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction359[54] = {
-  {(bigint) 967 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction359[52] = {
+  {(bigint) 979 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction359" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction359 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction359 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 967 /* 5: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 979 /* 5: ReduceAction359 < ReduceAction359: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120058,7 +119770,7 @@ const classtable_elt_t VFT_parser___ReduceAction359[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction359 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction359 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120087,11 +119799,11 @@ const classtable_elt_t VFT_parser___ReduceAction359[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction359 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction359 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction359___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction359 < ReduceAction359: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction359 < ReduceAction359: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120156,15 +119868,13 @@ val_t NEW_ReduceAction359_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction360[54] = {
-  {(bigint) 959 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction360[52] = {
+  {(bigint) 971 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction360" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction360 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction360 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 959 /* 5: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 971 /* 5: ReduceAction360 < ReduceAction360: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120177,7 +119887,7 @@ const classtable_elt_t VFT_parser___ReduceAction360[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction360 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction360 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120206,11 +119916,11 @@ const classtable_elt_t VFT_parser___ReduceAction360[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction360 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction360 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction360___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction360 < ReduceAction360: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction360 < ReduceAction360: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120275,15 +119985,13 @@ val_t NEW_ReduceAction360_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction362[54] = {
-  {(bigint) 955 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction362[52] = {
+  {(bigint) 967 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction362" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction362 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction362 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 955 /* 5: ReduceAction362 < ReduceAction362: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 967 /* 5: ReduceAction362 < ReduceAction362: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120296,7 +120004,7 @@ const classtable_elt_t VFT_parser___ReduceAction362[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction362 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction362 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120325,11 +120033,11 @@ const classtable_elt_t VFT_parser___ReduceAction362[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction362 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction362 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction362___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction362 < ReduceAction362: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction362 < ReduceAction362: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120394,15 +120102,13 @@ val_t NEW_ReduceAction362_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction363[54] = {
-  {(bigint) 951 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction363[52] = {
+  {(bigint) 963 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction363" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction363 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction363 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 951 /* 5: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 963 /* 5: ReduceAction363 < ReduceAction363: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120415,7 +120121,7 @@ const classtable_elt_t VFT_parser___ReduceAction363[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction363 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction363 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120444,11 +120150,11 @@ const classtable_elt_t VFT_parser___ReduceAction363[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction363 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction363 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction363___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction363 < ReduceAction363: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction363 < ReduceAction363: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120513,15 +120219,13 @@ val_t NEW_ReduceAction363_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction365[54] = {
-  {(bigint) 947 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction365[52] = {
+  {(bigint) 959 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction365" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction365 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction365 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 947 /* 5: ReduceAction365 < ReduceAction365: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 959 /* 5: ReduceAction365 < ReduceAction365: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120534,7 +120238,7 @@ const classtable_elt_t VFT_parser___ReduceAction365[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction365 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction365 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120563,11 +120267,11 @@ const classtable_elt_t VFT_parser___ReduceAction365[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction365 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction365 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction365___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction365 < ReduceAction365: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction365 < ReduceAction365: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120632,15 +120336,13 @@ val_t NEW_ReduceAction365_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction366[54] = {
-  {(bigint) 943 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction366[52] = {
+  {(bigint) 955 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction366" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction366 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction366 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 943 /* 5: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 955 /* 5: ReduceAction366 < ReduceAction366: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120653,7 +120355,7 @@ const classtable_elt_t VFT_parser___ReduceAction366[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction366 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction366 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120682,11 +120384,11 @@ const classtable_elt_t VFT_parser___ReduceAction366[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction366 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction366 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction366___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction366 < ReduceAction366: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction366 < ReduceAction366: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120751,15 +120453,13 @@ val_t NEW_ReduceAction366_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction367[54] = {
-  {(bigint) 939 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction367[52] = {
+  {(bigint) 951 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction367" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction367 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction367 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 939 /* 5: ReduceAction367 < ReduceAction367: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 951 /* 5: ReduceAction367 < ReduceAction367: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120772,7 +120472,7 @@ const classtable_elt_t VFT_parser___ReduceAction367[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction367 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction367 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120801,11 +120501,11 @@ const classtable_elt_t VFT_parser___ReduceAction367[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction367 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction367 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction367___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction367 < ReduceAction367: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction367 < ReduceAction367: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120870,15 +120570,13 @@ val_t NEW_ReduceAction367_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction368[54] = {
-  {(bigint) 935 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction368[52] = {
+  {(bigint) 947 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction368" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction368 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction368 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 935 /* 5: ReduceAction368 < ReduceAction368: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 947 /* 5: ReduceAction368 < ReduceAction368: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -120891,7 +120589,7 @@ const classtable_elt_t VFT_parser___ReduceAction368[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction368 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction368 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -120920,11 +120618,11 @@ const classtable_elt_t VFT_parser___ReduceAction368[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction368 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction368 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction368___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction368 < ReduceAction368: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction368 < ReduceAction368: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -120989,15 +120687,13 @@ val_t NEW_ReduceAction368_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction369[54] = {
-  {(bigint) 931 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction369[52] = {
+  {(bigint) 943 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction369" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction369 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction369 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 931 /* 5: ReduceAction369 < ReduceAction369: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 943 /* 5: ReduceAction369 < ReduceAction369: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121010,7 +120706,7 @@ const classtable_elt_t VFT_parser___ReduceAction369[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction369 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction369 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121039,11 +120735,11 @@ const classtable_elt_t VFT_parser___ReduceAction369[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction369 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction369 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction369___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction369 < ReduceAction369: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction369 < ReduceAction369: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121108,15 +120804,13 @@ val_t NEW_ReduceAction369_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction376[54] = {
-  {(bigint) 923 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction376[52] = {
+  {(bigint) 935 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction376" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction376 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction376 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 923 /* 5: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 935 /* 5: ReduceAction376 < ReduceAction376: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121129,7 +120823,7 @@ const classtable_elt_t VFT_parser___ReduceAction376[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction376 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction376 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121158,11 +120852,11 @@ const classtable_elt_t VFT_parser___ReduceAction376[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction376 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction376 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction376___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction376 < ReduceAction376: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction376 < ReduceAction376: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121227,15 +120921,13 @@ val_t NEW_ReduceAction376_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction377[54] = {
-  {(bigint) 919 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction377[52] = {
+  {(bigint) 931 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction377" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction377 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction377 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 919 /* 5: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 931 /* 5: ReduceAction377 < ReduceAction377: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121248,7 +120940,7 @@ const classtable_elt_t VFT_parser___ReduceAction377[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction377 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction377 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121277,11 +120969,11 @@ const classtable_elt_t VFT_parser___ReduceAction377[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction377 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction377 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction377___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction377 < ReduceAction377: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction377 < ReduceAction377: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121346,15 +121038,13 @@ val_t NEW_ReduceAction377_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction378[54] = {
-  {(bigint) 915 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction378[52] = {
+  {(bigint) 927 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction378" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction378 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction378 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 915 /* 5: ReduceAction378 < ReduceAction378: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 927 /* 5: ReduceAction378 < ReduceAction378: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121367,7 +121057,7 @@ const classtable_elt_t VFT_parser___ReduceAction378[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction378 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction378 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121396,11 +121086,11 @@ const classtable_elt_t VFT_parser___ReduceAction378[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction378 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction378 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction378___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction378 < ReduceAction378: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction378 < ReduceAction378: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121465,15 +121155,13 @@ val_t NEW_ReduceAction378_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction379[54] = {
-  {(bigint) 911 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction379[52] = {
+  {(bigint) 923 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction379" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction379 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction379 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 911 /* 5: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 923 /* 5: ReduceAction379 < ReduceAction379: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121486,7 +121174,7 @@ const classtable_elt_t VFT_parser___ReduceAction379[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction379 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction379 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121515,11 +121203,11 @@ const classtable_elt_t VFT_parser___ReduceAction379[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction379 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction379 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction379___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction379 < ReduceAction379: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction379 < ReduceAction379: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121584,15 +121272,13 @@ val_t NEW_ReduceAction379_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction380[54] = {
-  {(bigint) 907 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction380[52] = {
+  {(bigint) 919 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction380" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction380 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction380 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 907 /* 5: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 919 /* 5: ReduceAction380 < ReduceAction380: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121605,7 +121291,7 @@ const classtable_elt_t VFT_parser___ReduceAction380[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction380 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction380 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121634,11 +121320,11 @@ const classtable_elt_t VFT_parser___ReduceAction380[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction380 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction380 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction380___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction380 < ReduceAction380: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction380 < ReduceAction380: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121703,15 +121389,13 @@ val_t NEW_ReduceAction380_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction381[54] = {
-  {(bigint) 903 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction381[52] = {
+  {(bigint) 915 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction381" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction381 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction381 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 903 /* 5: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 915 /* 5: ReduceAction381 < ReduceAction381: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121724,7 +121408,7 @@ const classtable_elt_t VFT_parser___ReduceAction381[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction381 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction381 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121753,11 +121437,11 @@ const classtable_elt_t VFT_parser___ReduceAction381[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction381 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction381 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction381___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction381 < ReduceAction381: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction381 < ReduceAction381: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121822,15 +121506,13 @@ val_t NEW_ReduceAction381_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction382[54] = {
-  {(bigint) 899 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction382[52] = {
+  {(bigint) 911 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction382" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction382 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction382 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 899 /* 5: ReduceAction382 < ReduceAction382: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 911 /* 5: ReduceAction382 < ReduceAction382: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121843,7 +121525,7 @@ const classtable_elt_t VFT_parser___ReduceAction382[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction382 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction382 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121872,11 +121554,11 @@ const classtable_elt_t VFT_parser___ReduceAction382[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction382 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction382 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction382___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction382 < ReduceAction382: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction382 < ReduceAction382: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -121941,15 +121623,13 @@ val_t NEW_ReduceAction382_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction383[54] = {
-  {(bigint) 895 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction383[52] = {
+  {(bigint) 907 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction383" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction383 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction383 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 895 /* 5: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 907 /* 5: ReduceAction383 < ReduceAction383: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -121962,7 +121642,7 @@ const classtable_elt_t VFT_parser___ReduceAction383[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction383 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction383 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -121991,11 +121671,11 @@ const classtable_elt_t VFT_parser___ReduceAction383[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction383 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction383 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction383___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction383 < ReduceAction383: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction383 < ReduceAction383: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122060,15 +121740,13 @@ val_t NEW_ReduceAction383_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction384[54] = {
-  {(bigint) 891 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction384[52] = {
+  {(bigint) 903 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction384" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction384 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction384 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 891 /* 5: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 903 /* 5: ReduceAction384 < ReduceAction384: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122081,7 +121759,7 @@ const classtable_elt_t VFT_parser___ReduceAction384[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction384 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction384 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122110,11 +121788,11 @@ const classtable_elt_t VFT_parser___ReduceAction384[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction384 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction384 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction384___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction384 < ReduceAction384: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction384 < ReduceAction384: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122179,15 +121857,13 @@ val_t NEW_ReduceAction384_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction385[54] = {
-  {(bigint) 887 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction385[52] = {
+  {(bigint) 899 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction385" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction385 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction385 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 887 /* 5: ReduceAction385 < ReduceAction385: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 899 /* 5: ReduceAction385 < ReduceAction385: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122200,7 +121876,7 @@ const classtable_elt_t VFT_parser___ReduceAction385[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction385 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction385 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122229,11 +121905,11 @@ const classtable_elt_t VFT_parser___ReduceAction385[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction385 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction385 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction385___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction385 < ReduceAction385: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction385 < ReduceAction385: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122298,15 +121974,13 @@ val_t NEW_ReduceAction385_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction386[54] = {
-  {(bigint) 883 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction386[52] = {
+  {(bigint) 895 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction386" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction386 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction386 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 883 /* 5: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 895 /* 5: ReduceAction386 < ReduceAction386: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122319,7 +121993,7 @@ const classtable_elt_t VFT_parser___ReduceAction386[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction386 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction386 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122348,11 +122022,11 @@ const classtable_elt_t VFT_parser___ReduceAction386[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction386 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction386 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction386___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction386 < ReduceAction386: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction386 < ReduceAction386: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122417,15 +122091,13 @@ val_t NEW_ReduceAction386_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction387[54] = {
-  {(bigint) 879 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction387[52] = {
+  {(bigint) 891 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction387" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction387 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction387 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 879 /* 5: ReduceAction387 < ReduceAction387: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 891 /* 5: ReduceAction387 < ReduceAction387: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122438,7 +122110,7 @@ const classtable_elt_t VFT_parser___ReduceAction387[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction387 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction387 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122467,11 +122139,11 @@ const classtable_elt_t VFT_parser___ReduceAction387[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction387 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction387 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction387___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction387 < ReduceAction387: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction387 < ReduceAction387: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122536,15 +122208,13 @@ val_t NEW_ReduceAction387_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction388[54] = {
-  {(bigint) 875 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction388[52] = {
+  {(bigint) 887 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction388" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction388 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction388 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 875 /* 5: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 887 /* 5: ReduceAction388 < ReduceAction388: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122557,7 +122227,7 @@ const classtable_elt_t VFT_parser___ReduceAction388[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction388 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction388 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122586,11 +122256,11 @@ const classtable_elt_t VFT_parser___ReduceAction388[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction388 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction388 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction388___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction388 < ReduceAction388: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction388 < ReduceAction388: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122655,15 +122325,13 @@ val_t NEW_ReduceAction388_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction391[54] = {
-  {(bigint) 867 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction391[52] = {
+  {(bigint) 879 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction391" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction391 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction391 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 867 /* 5: ReduceAction391 < ReduceAction391: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 879 /* 5: ReduceAction391 < ReduceAction391: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122676,7 +122344,7 @@ const classtable_elt_t VFT_parser___ReduceAction391[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction391 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction391 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122705,11 +122373,11 @@ const classtable_elt_t VFT_parser___ReduceAction391[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction391 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction391 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction391___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction391 < ReduceAction391: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction391 < ReduceAction391: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122774,15 +122442,13 @@ val_t NEW_ReduceAction391_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction392[54] = {
-  {(bigint) 863 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction392[52] = {
+  {(bigint) 875 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction392" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction392 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction392 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 863 /* 5: ReduceAction392 < ReduceAction392: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 875 /* 5: ReduceAction392 < ReduceAction392: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122795,7 +122461,7 @@ const classtable_elt_t VFT_parser___ReduceAction392[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction392 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction392 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122824,11 +122490,11 @@ const classtable_elt_t VFT_parser___ReduceAction392[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction392 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction392 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction392___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction392 < ReduceAction392: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction392 < ReduceAction392: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -122893,15 +122559,13 @@ val_t NEW_ReduceAction392_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction393[54] = {
-  {(bigint) 859 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction393[52] = {
+  {(bigint) 871 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction393" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction393 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction393 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 859 /* 5: ReduceAction393 < ReduceAction393: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 871 /* 5: ReduceAction393 < ReduceAction393: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -122914,7 +122578,7 @@ const classtable_elt_t VFT_parser___ReduceAction393[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction393 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction393 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -122943,11 +122607,11 @@ const classtable_elt_t VFT_parser___ReduceAction393[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction393 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction393 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction393___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction393 < ReduceAction393: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction393 < ReduceAction393: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123012,15 +122676,13 @@ val_t NEW_ReduceAction393_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction394[54] = {
-  {(bigint) 855 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction394[52] = {
+  {(bigint) 867 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction394" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction394 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction394 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 855 /* 5: ReduceAction394 < ReduceAction394: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 867 /* 5: ReduceAction394 < ReduceAction394: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123033,7 +122695,7 @@ const classtable_elt_t VFT_parser___ReduceAction394[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction394 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction394 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123062,11 +122724,11 @@ const classtable_elt_t VFT_parser___ReduceAction394[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction394 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction394 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction394___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction394 < ReduceAction394: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction394 < ReduceAction394: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123131,15 +122793,13 @@ val_t NEW_ReduceAction394_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction395[54] = {
-  {(bigint) 851 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction395[52] = {
+  {(bigint) 863 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction395" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction395 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction395 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 851 /* 5: ReduceAction395 < ReduceAction395: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 863 /* 5: ReduceAction395 < ReduceAction395: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123152,7 +122812,7 @@ const classtable_elt_t VFT_parser___ReduceAction395[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction395 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction395 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123181,11 +122841,11 @@ const classtable_elt_t VFT_parser___ReduceAction395[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction395 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction395 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction395___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction395 < ReduceAction395: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction395 < ReduceAction395: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123250,15 +122910,13 @@ val_t NEW_ReduceAction395_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction396[54] = {
-  {(bigint) 847 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction396[52] = {
+  {(bigint) 859 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction396" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction396 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction396 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 847 /* 5: ReduceAction396 < ReduceAction396: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 859 /* 5: ReduceAction396 < ReduceAction396: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123271,7 +122929,7 @@ const classtable_elt_t VFT_parser___ReduceAction396[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction396 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction396 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123300,11 +122958,11 @@ const classtable_elt_t VFT_parser___ReduceAction396[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction396 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction396 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction396___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction396 < ReduceAction396: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction396 < ReduceAction396: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123369,15 +123027,13 @@ val_t NEW_ReduceAction396_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction398[54] = {
-  {(bigint) 843 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction398[52] = {
+  {(bigint) 855 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction398" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction398 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction398 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 843 /* 5: ReduceAction398 < ReduceAction398: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 855 /* 5: ReduceAction398 < ReduceAction398: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123390,7 +123046,7 @@ const classtable_elt_t VFT_parser___ReduceAction398[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction398 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction398 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123419,11 +123075,11 @@ const classtable_elt_t VFT_parser___ReduceAction398[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction398 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction398 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction398___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction398 < ReduceAction398: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction398 < ReduceAction398: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123488,15 +123144,13 @@ val_t NEW_ReduceAction398_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction399[54] = {
-  {(bigint) 839 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction399[52] = {
+  {(bigint) 851 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction399" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction399 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction399 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 839 /* 5: ReduceAction399 < ReduceAction399: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 851 /* 5: ReduceAction399 < ReduceAction399: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123509,7 +123163,7 @@ const classtable_elt_t VFT_parser___ReduceAction399[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction399 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction399 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123538,11 +123192,11 @@ const classtable_elt_t VFT_parser___ReduceAction399[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction399 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction399 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction399___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction399 < ReduceAction399: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction399 < ReduceAction399: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123607,15 +123261,13 @@ val_t NEW_ReduceAction399_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction400[54] = {
-  {(bigint) 827 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction400[52] = {
+  {(bigint) 839 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction400" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction400 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction400 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 827 /* 5: ReduceAction400 < ReduceAction400: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 839 /* 5: ReduceAction400 < ReduceAction400: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123628,7 +123280,7 @@ const classtable_elt_t VFT_parser___ReduceAction400[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction400 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction400 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123657,11 +123309,11 @@ const classtable_elt_t VFT_parser___ReduceAction400[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction400 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction400 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction400___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction400 < ReduceAction400: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction400 < ReduceAction400: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123726,15 +123378,13 @@ val_t NEW_ReduceAction400_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction401[54] = {
-  {(bigint) 823 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction401[52] = {
+  {(bigint) 835 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction401" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction401 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction401 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 823 /* 5: ReduceAction401 < ReduceAction401: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 835 /* 5: ReduceAction401 < ReduceAction401: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123747,7 +123397,7 @@ const classtable_elt_t VFT_parser___ReduceAction401[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction401 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction401 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123776,11 +123426,11 @@ const classtable_elt_t VFT_parser___ReduceAction401[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction401 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction401 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction401___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction401 < ReduceAction401: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction401 < ReduceAction401: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123845,15 +123495,13 @@ val_t NEW_ReduceAction401_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction403[54] = {
-  {(bigint) 819 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction403[52] = {
+  {(bigint) 831 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction403" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction403 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction403 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 819 /* 5: ReduceAction403 < ReduceAction403: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 831 /* 5: ReduceAction403 < ReduceAction403: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123866,7 +123514,7 @@ const classtable_elt_t VFT_parser___ReduceAction403[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction403 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction403 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -123895,11 +123543,11 @@ const classtable_elt_t VFT_parser___ReduceAction403[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction403 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction403 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction403___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction403 < ReduceAction403: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction403 < ReduceAction403: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -123964,15 +123612,13 @@ val_t NEW_ReduceAction403_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction406[54] = {
-  {(bigint) 815 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction406[52] = {
+  {(bigint) 827 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction406" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction406 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction406 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 815 /* 5: ReduceAction406 < ReduceAction406: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 827 /* 5: ReduceAction406 < ReduceAction406: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -123985,7 +123631,7 @@ const classtable_elt_t VFT_parser___ReduceAction406[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction406 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction406 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124014,11 +123660,11 @@ const classtable_elt_t VFT_parser___ReduceAction406[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction406 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction406 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction406___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction406 < ReduceAction406: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction406 < ReduceAction406: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124083,15 +123729,13 @@ val_t NEW_ReduceAction406_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction411[54] = {
-  {(bigint) 807 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction411[52] = {
+  {(bigint) 819 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction411" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction411 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction411 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 807 /* 5: ReduceAction411 < ReduceAction411: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 819 /* 5: ReduceAction411 < ReduceAction411: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124104,7 +123748,7 @@ const classtable_elt_t VFT_parser___ReduceAction411[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction411 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction411 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124133,11 +123777,11 @@ const classtable_elt_t VFT_parser___ReduceAction411[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction411 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction411 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction411___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction411 < ReduceAction411: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction411 < ReduceAction411: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124202,15 +123846,13 @@ val_t NEW_ReduceAction411_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction412[54] = {
-  {(bigint) 803 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction412[52] = {
+  {(bigint) 815 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction412" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction412 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction412 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 803 /* 5: ReduceAction412 < ReduceAction412: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 815 /* 5: ReduceAction412 < ReduceAction412: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124223,7 +123865,7 @@ const classtable_elt_t VFT_parser___ReduceAction412[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction412 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction412 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124252,11 +123894,11 @@ const classtable_elt_t VFT_parser___ReduceAction412[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction412 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction412 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction412___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction412 < ReduceAction412: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction412 < ReduceAction412: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124321,15 +123963,13 @@ val_t NEW_ReduceAction412_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction413[54] = {
-  {(bigint) 799 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction413[52] = {
+  {(bigint) 811 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction413" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction413 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction413 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 799 /* 5: ReduceAction413 < ReduceAction413: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 811 /* 5: ReduceAction413 < ReduceAction413: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124342,7 +123982,7 @@ const classtable_elt_t VFT_parser___ReduceAction413[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction413 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction413 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124371,11 +124011,11 @@ const classtable_elt_t VFT_parser___ReduceAction413[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction413 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction413 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction413___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction413 < ReduceAction413: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction413 < ReduceAction413: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124440,15 +124080,13 @@ val_t NEW_ReduceAction413_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction414[54] = {
-  {(bigint) 795 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction414[52] = {
+  {(bigint) 807 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction414" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction414 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction414 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 795 /* 5: ReduceAction414 < ReduceAction414: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 807 /* 5: ReduceAction414 < ReduceAction414: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124461,7 +124099,7 @@ const classtable_elt_t VFT_parser___ReduceAction414[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction414 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction414 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124490,11 +124128,11 @@ const classtable_elt_t VFT_parser___ReduceAction414[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction414 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction414 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction414___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction414 < ReduceAction414: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction414 < ReduceAction414: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124559,15 +124197,13 @@ val_t NEW_ReduceAction414_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction415[54] = {
-  {(bigint) 791 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction415[52] = {
+  {(bigint) 803 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction415" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction415 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction415 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 791 /* 5: ReduceAction415 < ReduceAction415: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 803 /* 5: ReduceAction415 < ReduceAction415: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124580,7 +124216,7 @@ const classtable_elt_t VFT_parser___ReduceAction415[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction415 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction415 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124609,11 +124245,11 @@ const classtable_elt_t VFT_parser___ReduceAction415[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction415 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction415 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction415___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction415 < ReduceAction415: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction415 < ReduceAction415: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124678,15 +124314,13 @@ val_t NEW_ReduceAction415_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction416[54] = {
-  {(bigint) 787 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction416[52] = {
+  {(bigint) 799 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction416" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction416 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction416 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 787 /* 5: ReduceAction416 < ReduceAction416: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 799 /* 5: ReduceAction416 < ReduceAction416: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124699,7 +124333,7 @@ const classtable_elt_t VFT_parser___ReduceAction416[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction416 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction416 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124728,11 +124362,11 @@ const classtable_elt_t VFT_parser___ReduceAction416[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction416 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction416 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction416___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction416 < ReduceAction416: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction416 < ReduceAction416: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124797,15 +124431,13 @@ val_t NEW_ReduceAction416_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction417[54] = {
-  {(bigint) 783 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction417[52] = {
+  {(bigint) 795 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction417" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction417 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction417 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 783 /* 5: ReduceAction417 < ReduceAction417: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 795 /* 5: ReduceAction417 < ReduceAction417: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124818,7 +124450,7 @@ const classtable_elt_t VFT_parser___ReduceAction417[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction417 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction417 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124847,11 +124479,11 @@ const classtable_elt_t VFT_parser___ReduceAction417[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction417 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction417 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction417___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction417 < ReduceAction417: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction417 < ReduceAction417: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -124916,15 +124548,13 @@ val_t NEW_ReduceAction417_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction418[54] = {
-  {(bigint) 779 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction418[52] = {
+  {(bigint) 791 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction418" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction418 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction418 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 779 /* 5: ReduceAction418 < ReduceAction418: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 791 /* 5: ReduceAction418 < ReduceAction418: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -124937,7 +124567,7 @@ const classtable_elt_t VFT_parser___ReduceAction418[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction418 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction418 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -124966,11 +124596,11 @@ const classtable_elt_t VFT_parser___ReduceAction418[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction418 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction418 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction418___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction418 < ReduceAction418: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction418 < ReduceAction418: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125035,15 +124665,13 @@ val_t NEW_ReduceAction418_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction419[54] = {
-  {(bigint) 775 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction419[52] = {
+  {(bigint) 787 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction419" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction419 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction419 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 775 /* 5: ReduceAction419 < ReduceAction419: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 787 /* 5: ReduceAction419 < ReduceAction419: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125056,7 +124684,7 @@ const classtable_elt_t VFT_parser___ReduceAction419[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction419 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction419 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125085,11 +124713,11 @@ const classtable_elt_t VFT_parser___ReduceAction419[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction419 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction419 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction419___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction419 < ReduceAction419: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction419 < ReduceAction419: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125154,15 +124782,13 @@ val_t NEW_ReduceAction419_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction420[54] = {
-  {(bigint) 767 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction420[52] = {
+  {(bigint) 779 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction420" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction420 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction420 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 767 /* 5: ReduceAction420 < ReduceAction420: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 779 /* 5: ReduceAction420 < ReduceAction420: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125175,7 +124801,7 @@ const classtable_elt_t VFT_parser___ReduceAction420[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction420 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction420 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125204,11 +124830,11 @@ const classtable_elt_t VFT_parser___ReduceAction420[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction420 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction420 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction420___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction420 < ReduceAction420: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction420 < ReduceAction420: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125273,15 +124899,13 @@ val_t NEW_ReduceAction420_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction421[54] = {
-  {(bigint) 763 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction421[52] = {
+  {(bigint) 775 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction421" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction421 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction421 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 763 /* 5: ReduceAction421 < ReduceAction421: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 775 /* 5: ReduceAction421 < ReduceAction421: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125294,7 +124918,7 @@ const classtable_elt_t VFT_parser___ReduceAction421[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction421 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction421 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125323,11 +124947,11 @@ const classtable_elt_t VFT_parser___ReduceAction421[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction421 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction421 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction421___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction421 < ReduceAction421: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction421 < ReduceAction421: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125392,15 +125016,13 @@ val_t NEW_ReduceAction421_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction422[54] = {
-  {(bigint) 759 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction422[52] = {
+  {(bigint) 771 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction422" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction422 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction422 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 759 /* 5: ReduceAction422 < ReduceAction422: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 771 /* 5: ReduceAction422 < ReduceAction422: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125413,7 +125035,7 @@ const classtable_elt_t VFT_parser___ReduceAction422[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction422 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction422 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125442,11 +125064,11 @@ const classtable_elt_t VFT_parser___ReduceAction422[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction422 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction422 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction422___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction422 < ReduceAction422: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction422 < ReduceAction422: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125511,15 +125133,13 @@ val_t NEW_ReduceAction422_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction423[54] = {
-  {(bigint) 755 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction423[52] = {
+  {(bigint) 767 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction423" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction423 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction423 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 755 /* 5: ReduceAction423 < ReduceAction423: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 767 /* 5: ReduceAction423 < ReduceAction423: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125532,7 +125152,7 @@ const classtable_elt_t VFT_parser___ReduceAction423[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction423 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction423 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125561,11 +125181,11 @@ const classtable_elt_t VFT_parser___ReduceAction423[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction423 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction423 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction423___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction423 < ReduceAction423: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction423 < ReduceAction423: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125630,15 +125250,13 @@ val_t NEW_ReduceAction423_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction425[54] = {
-  {(bigint) 751 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction425[52] = {
+  {(bigint) 763 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction425" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction425 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction425 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 751 /* 5: ReduceAction425 < ReduceAction425: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 763 /* 5: ReduceAction425 < ReduceAction425: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125651,7 +125269,7 @@ const classtable_elt_t VFT_parser___ReduceAction425[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction425 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction425 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125680,11 +125298,11 @@ const classtable_elt_t VFT_parser___ReduceAction425[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction425 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction425 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction425___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction425 < ReduceAction425: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction425 < ReduceAction425: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125749,15 +125367,13 @@ val_t NEW_ReduceAction425_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction426[54] = {
-  {(bigint) 747 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction426[52] = {
+  {(bigint) 759 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction426" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction426 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction426 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 747 /* 5: ReduceAction426 < ReduceAction426: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 759 /* 5: ReduceAction426 < ReduceAction426: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125770,7 +125386,7 @@ const classtable_elt_t VFT_parser___ReduceAction426[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction426 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction426 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125799,11 +125415,11 @@ const classtable_elt_t VFT_parser___ReduceAction426[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction426 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction426 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction426___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction426 < ReduceAction426: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction426 < ReduceAction426: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125868,15 +125484,13 @@ val_t NEW_ReduceAction426_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction428[54] = {
-  {(bigint) 743 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction428[52] = {
+  {(bigint) 755 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction428" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction428 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction428 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 743 /* 5: ReduceAction428 < ReduceAction428: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 755 /* 5: ReduceAction428 < ReduceAction428: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -125889,7 +125503,7 @@ const classtable_elt_t VFT_parser___ReduceAction428[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction428 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction428 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -125918,11 +125532,11 @@ const classtable_elt_t VFT_parser___ReduceAction428[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction428 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction428 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction428___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction428 < ReduceAction428: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction428 < ReduceAction428: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -125987,15 +125601,13 @@ val_t NEW_ReduceAction428_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction429[54] = {
-  {(bigint) 739 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction429[52] = {
+  {(bigint) 751 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction429" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction429 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction429 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 739 /* 5: ReduceAction429 < ReduceAction429: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 751 /* 5: ReduceAction429 < ReduceAction429: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126008,7 +125620,7 @@ const classtable_elt_t VFT_parser___ReduceAction429[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction429 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction429 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126037,11 +125649,11 @@ const classtable_elt_t VFT_parser___ReduceAction429[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction429 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction429 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction429___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction429 < ReduceAction429: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction429 < ReduceAction429: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126106,15 +125718,13 @@ val_t NEW_ReduceAction429_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction430[54] = {
-  {(bigint) 731 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction430[52] = {
+  {(bigint) 743 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction430" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction430 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction430 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 731 /* 5: ReduceAction430 < ReduceAction430: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 743 /* 5: ReduceAction430 < ReduceAction430: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126127,7 +125737,7 @@ const classtable_elt_t VFT_parser___ReduceAction430[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction430 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction430 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126156,11 +125766,11 @@ const classtable_elt_t VFT_parser___ReduceAction430[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction430 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction430 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction430___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction430 < ReduceAction430: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction430 < ReduceAction430: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126225,15 +125835,13 @@ val_t NEW_ReduceAction430_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction431[54] = {
-  {(bigint) 727 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction431[52] = {
+  {(bigint) 739 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction431" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction431 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction431 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 727 /* 5: ReduceAction431 < ReduceAction431: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 739 /* 5: ReduceAction431 < ReduceAction431: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126246,7 +125854,7 @@ const classtable_elt_t VFT_parser___ReduceAction431[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction431 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction431 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126275,11 +125883,11 @@ const classtable_elt_t VFT_parser___ReduceAction431[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction431 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction431 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction431___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction431 < ReduceAction431: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction431 < ReduceAction431: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126344,15 +125952,13 @@ val_t NEW_ReduceAction431_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction688[54] = {
-  {(bigint) 615 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction688[52] = {
+  {(bigint) 627 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction688" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction688 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction688 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 615 /* 5: ReduceAction688 < ReduceAction688: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 627 /* 5: ReduceAction688 < ReduceAction688: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126365,7 +125971,7 @@ const classtable_elt_t VFT_parser___ReduceAction688[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction688 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction688 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126394,11 +126000,11 @@ const classtable_elt_t VFT_parser___ReduceAction688[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction688 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction688 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction688___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction688 < ReduceAction688: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction688 < ReduceAction688: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126463,15 +126069,13 @@ val_t NEW_ReduceAction688_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction689[54] = {
-  {(bigint) 611 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction689[52] = {
+  {(bigint) 623 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction689" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction689 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction689 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 611 /* 5: ReduceAction689 < ReduceAction689: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 623 /* 5: ReduceAction689 < ReduceAction689: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126484,7 +126088,7 @@ const classtable_elt_t VFT_parser___ReduceAction689[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction689 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction689 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126513,11 +126117,11 @@ const classtable_elt_t VFT_parser___ReduceAction689[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction689 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction689 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction689___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction689 < ReduceAction689: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction689 < ReduceAction689: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126582,15 +126186,13 @@ val_t NEW_ReduceAction689_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction690[54] = {
-  {(bigint) 603 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction690[52] = {
+  {(bigint) 615 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction690" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction690 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction690 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 603 /* 5: ReduceAction690 < ReduceAction690: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 615 /* 5: ReduceAction690 < ReduceAction690: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126603,7 +126205,7 @@ const classtable_elt_t VFT_parser___ReduceAction690[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction690 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction690 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126632,11 +126234,11 @@ const classtable_elt_t VFT_parser___ReduceAction690[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction690 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction690 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction690___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction690 < ReduceAction690: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction690 < ReduceAction690: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126701,15 +126303,13 @@ val_t NEW_ReduceAction690_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction693[54] = {
-  {(bigint) 599 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction693[52] = {
+  {(bigint) 611 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction693" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction693 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction693 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 599 /* 5: ReduceAction693 < ReduceAction693: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 611 /* 5: ReduceAction693 < ReduceAction693: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126722,7 +126322,7 @@ const classtable_elt_t VFT_parser___ReduceAction693[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction693 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction693 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126751,11 +126351,11 @@ const classtable_elt_t VFT_parser___ReduceAction693[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction693 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction693 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction693___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction693 < ReduceAction693: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction693 < ReduceAction693: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126820,15 +126420,13 @@ val_t NEW_ReduceAction693_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction706[54] = {
-  {(bigint) 587 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction706[52] = {
+  {(bigint) 599 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction706" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction706 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction706 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 587 /* 5: ReduceAction706 < ReduceAction706: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 599 /* 5: ReduceAction706 < ReduceAction706: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126841,7 +126439,7 @@ const classtable_elt_t VFT_parser___ReduceAction706[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction706 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction706 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126870,11 +126468,11 @@ const classtable_elt_t VFT_parser___ReduceAction706[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction706 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction706 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction706___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction706 < ReduceAction706: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction706 < ReduceAction706: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -126939,15 +126537,13 @@ val_t NEW_ReduceAction706_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction707[54] = {
-  {(bigint) 583 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction707[52] = {
+  {(bigint) 595 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction707" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction707 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction707 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 583 /* 5: ReduceAction707 < ReduceAction707: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 595 /* 5: ReduceAction707 < ReduceAction707: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -126960,7 +126556,7 @@ const classtable_elt_t VFT_parser___ReduceAction707[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction707 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction707 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -126989,11 +126585,11 @@ const classtable_elt_t VFT_parser___ReduceAction707[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction707 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction707 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction707___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction707 < ReduceAction707: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction707 < ReduceAction707: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127058,15 +126654,13 @@ val_t NEW_ReduceAction707_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction714[54] = {
-  {(bigint) 575 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction714[52] = {
+  {(bigint) 587 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction714" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction714 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction714 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 575 /* 5: ReduceAction714 < ReduceAction714: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 587 /* 5: ReduceAction714 < ReduceAction714: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127079,7 +126673,7 @@ const classtable_elt_t VFT_parser___ReduceAction714[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction714 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction714 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127108,11 +126702,11 @@ const classtable_elt_t VFT_parser___ReduceAction714[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction714 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction714 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction714___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction714 < ReduceAction714: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction714 < ReduceAction714: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127177,15 +126771,13 @@ val_t NEW_ReduceAction714_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction715[54] = {
-  {(bigint) 571 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction715[52] = {
+  {(bigint) 583 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction715" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction715 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction715 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 571 /* 5: ReduceAction715 < ReduceAction715: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 583 /* 5: ReduceAction715 < ReduceAction715: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127198,7 +126790,7 @@ const classtable_elt_t VFT_parser___ReduceAction715[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction715 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction715 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127227,11 +126819,11 @@ const classtable_elt_t VFT_parser___ReduceAction715[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction715 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction715 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction715___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction715 < ReduceAction715: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction715 < ReduceAction715: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127296,15 +126888,13 @@ val_t NEW_ReduceAction715_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction716[54] = {
-  {(bigint) 567 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction716[52] = {
+  {(bigint) 579 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction716" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction716 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction716 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 567 /* 5: ReduceAction716 < ReduceAction716: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 579 /* 5: ReduceAction716 < ReduceAction716: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127317,7 +126907,7 @@ const classtable_elt_t VFT_parser___ReduceAction716[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction716 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction716 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127346,11 +126936,11 @@ const classtable_elt_t VFT_parser___ReduceAction716[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction716 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction716 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction716___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction716 < ReduceAction716: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction716 < ReduceAction716: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127415,15 +127005,13 @@ val_t NEW_ReduceAction716_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction717[54] = {
-  {(bigint) 563 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction717[52] = {
+  {(bigint) 575 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction717" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction717 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction717 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 563 /* 5: ReduceAction717 < ReduceAction717: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 575 /* 5: ReduceAction717 < ReduceAction717: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127436,7 +127024,7 @@ const classtable_elt_t VFT_parser___ReduceAction717[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction717 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction717 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127465,11 +127053,11 @@ const classtable_elt_t VFT_parser___ReduceAction717[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction717 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction717 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction717___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction717 < ReduceAction717: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction717 < ReduceAction717: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127534,15 +127122,13 @@ val_t NEW_ReduceAction717_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction718[54] = {
-  {(bigint) 559 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction718[52] = {
+  {(bigint) 571 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction718" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction718 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction718 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 559 /* 5: ReduceAction718 < ReduceAction718: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 571 /* 5: ReduceAction718 < ReduceAction718: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127555,7 +127141,7 @@ const classtable_elt_t VFT_parser___ReduceAction718[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction718 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction718 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127584,11 +127170,11 @@ const classtable_elt_t VFT_parser___ReduceAction718[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction718 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction718 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction718___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction718 < ReduceAction718: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction718 < ReduceAction718: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127653,15 +127239,13 @@ val_t NEW_ReduceAction718_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction719[54] = {
-  {(bigint) 555 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction719[52] = {
+  {(bigint) 567 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction719" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction719 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction719 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 555 /* 5: ReduceAction719 < ReduceAction719: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 567 /* 5: ReduceAction719 < ReduceAction719: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127674,7 +127258,7 @@ const classtable_elt_t VFT_parser___ReduceAction719[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction719 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction719 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127703,11 +127287,11 @@ const classtable_elt_t VFT_parser___ReduceAction719[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction719 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction719 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction719___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction719 < ReduceAction719: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction719 < ReduceAction719: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127772,15 +127356,13 @@ val_t NEW_ReduceAction719_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction720[54] = {
-  {(bigint) 547 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction720[52] = {
+  {(bigint) 559 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction720" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction720 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction720 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 547 /* 5: ReduceAction720 < ReduceAction720: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 559 /* 5: ReduceAction720 < ReduceAction720: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127793,7 +127375,7 @@ const classtable_elt_t VFT_parser___ReduceAction720[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction720 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction720 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127822,11 +127404,11 @@ const classtable_elt_t VFT_parser___ReduceAction720[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction720 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction720 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction720___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction720 < ReduceAction720: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction720 < ReduceAction720: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -127891,15 +127473,13 @@ val_t NEW_ReduceAction720_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction721[54] = {
-  {(bigint) 543 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction721[52] = {
+  {(bigint) 555 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction721" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction721 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction721 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 543 /* 5: ReduceAction721 < ReduceAction721: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 555 /* 5: ReduceAction721 < ReduceAction721: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -127912,7 +127492,7 @@ const classtable_elt_t VFT_parser___ReduceAction721[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction721 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction721 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -127941,11 +127521,11 @@ const classtable_elt_t VFT_parser___ReduceAction721[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction721 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction721 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction721___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction721 < ReduceAction721: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction721 < ReduceAction721: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128010,15 +127590,13 @@ val_t NEW_ReduceAction721_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction724[54] = {
-  {(bigint) 539 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction724[52] = {
+  {(bigint) 551 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction724" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction724 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction724 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 539 /* 5: ReduceAction724 < ReduceAction724: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 551 /* 5: ReduceAction724 < ReduceAction724: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128031,7 +127609,7 @@ const classtable_elt_t VFT_parser___ReduceAction724[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction724 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction724 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128060,11 +127638,11 @@ const classtable_elt_t VFT_parser___ReduceAction724[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction724 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction724 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction724___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction724 < ReduceAction724: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction724 < ReduceAction724: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128129,15 +127707,13 @@ val_t NEW_ReduceAction724_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction725[54] = {
-  {(bigint) 535 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction725[52] = {
+  {(bigint) 547 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction725" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction725 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction725 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 535 /* 5: ReduceAction725 < ReduceAction725: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 547 /* 5: ReduceAction725 < ReduceAction725: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128150,7 +127726,7 @@ const classtable_elt_t VFT_parser___ReduceAction725[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction725 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction725 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128179,11 +127755,11 @@ const classtable_elt_t VFT_parser___ReduceAction725[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction725 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction725 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction725___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction725 < ReduceAction725: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction725 < ReduceAction725: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128248,15 +127824,13 @@ val_t NEW_ReduceAction725_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction726[54] = {
-  {(bigint) 531 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction726[52] = {
+  {(bigint) 543 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction726" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction726 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction726 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 531 /* 5: ReduceAction726 < ReduceAction726: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 543 /* 5: ReduceAction726 < ReduceAction726: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128269,7 +127843,7 @@ const classtable_elt_t VFT_parser___ReduceAction726[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction726 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction726 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128298,11 +127872,11 @@ const classtable_elt_t VFT_parser___ReduceAction726[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction726 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction726 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction726___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction726 < ReduceAction726: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction726 < ReduceAction726: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128367,15 +127941,13 @@ val_t NEW_ReduceAction726_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction727[54] = {
-  {(bigint) 527 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction727[52] = {
+  {(bigint) 539 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction727" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction727 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction727 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 527 /* 5: ReduceAction727 < ReduceAction727: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 539 /* 5: ReduceAction727 < ReduceAction727: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128388,7 +127960,7 @@ const classtable_elt_t VFT_parser___ReduceAction727[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction727 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction727 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128417,11 +127989,11 @@ const classtable_elt_t VFT_parser___ReduceAction727[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction727 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction727 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction727___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction727 < ReduceAction727: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction727 < ReduceAction727: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128486,15 +128058,13 @@ val_t NEW_ReduceAction727_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction728[54] = {
-  {(bigint) 523 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction728[52] = {
+  {(bigint) 535 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction728" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction728 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction728 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 523 /* 5: ReduceAction728 < ReduceAction728: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 535 /* 5: ReduceAction728 < ReduceAction728: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128507,7 +128077,7 @@ const classtable_elt_t VFT_parser___ReduceAction728[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction728 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction728 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128536,11 +128106,11 @@ const classtable_elt_t VFT_parser___ReduceAction728[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction728 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction728 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction728___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction728 < ReduceAction728: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction728 < ReduceAction728: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128605,15 +128175,13 @@ val_t NEW_ReduceAction728_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction729[54] = {
-  {(bigint) 519 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction729[52] = {
+  {(bigint) 531 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction729" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction729 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction729 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 519 /* 5: ReduceAction729 < ReduceAction729: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 531 /* 5: ReduceAction729 < ReduceAction729: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128626,7 +128194,7 @@ const classtable_elt_t VFT_parser___ReduceAction729[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction729 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction729 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128655,11 +128223,11 @@ const classtable_elt_t VFT_parser___ReduceAction729[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction729 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction729 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction729___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction729 < ReduceAction729: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction729 < ReduceAction729: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128724,15 +128292,13 @@ val_t NEW_ReduceAction729_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction730[54] = {
-  {(bigint) 511 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction730[52] = {
+  {(bigint) 523 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction730" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction730 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction730 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 511 /* 5: ReduceAction730 < ReduceAction730: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 523 /* 5: ReduceAction730 < ReduceAction730: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128745,7 +128311,7 @@ const classtable_elt_t VFT_parser___ReduceAction730[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction730 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction730 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128774,11 +128340,11 @@ const classtable_elt_t VFT_parser___ReduceAction730[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction730 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction730 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction730___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction730 < ReduceAction730: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction730 < ReduceAction730: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128843,15 +128409,13 @@ val_t NEW_ReduceAction730_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction731[54] = {
-  {(bigint) 507 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction731[52] = {
+  {(bigint) 519 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction731" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction731 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction731 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 507 /* 5: ReduceAction731 < ReduceAction731: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 519 /* 5: ReduceAction731 < ReduceAction731: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128864,7 +128428,7 @@ const classtable_elt_t VFT_parser___ReduceAction731[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction731 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction731 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -128893,11 +128457,11 @@ const classtable_elt_t VFT_parser___ReduceAction731[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction731 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction731 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction731___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction731 < ReduceAction731: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction731 < ReduceAction731: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -128962,15 +128526,13 @@ val_t NEW_ReduceAction731_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction733[54] = {
-  {(bigint) 503 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction733[52] = {
+  {(bigint) 515 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction733" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction733 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction733 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 503 /* 5: ReduceAction733 < ReduceAction733: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 515 /* 5: ReduceAction733 < ReduceAction733: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -128983,7 +128545,7 @@ const classtable_elt_t VFT_parser___ReduceAction733[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction733 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction733 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129012,11 +128574,11 @@ const classtable_elt_t VFT_parser___ReduceAction733[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction733 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction733 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction733___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction733 < ReduceAction733: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction733 < ReduceAction733: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129081,15 +128643,13 @@ val_t NEW_ReduceAction733_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction735[54] = {
-  {(bigint) 499 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction735[52] = {
+  {(bigint) 511 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction735" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction735 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction735 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 499 /* 5: ReduceAction735 < ReduceAction735: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 511 /* 5: ReduceAction735 < ReduceAction735: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129102,7 +128662,7 @@ const classtable_elt_t VFT_parser___ReduceAction735[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction735 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction735 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129131,11 +128691,11 @@ const classtable_elt_t VFT_parser___ReduceAction735[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction735 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction735 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction735___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction735 < ReduceAction735: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction735 < ReduceAction735: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129200,15 +128760,13 @@ val_t NEW_ReduceAction735_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction736[54] = {
-  {(bigint) 495 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction736[52] = {
+  {(bigint) 507 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction736" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction736 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction736 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 495 /* 5: ReduceAction736 < ReduceAction736: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 507 /* 5: ReduceAction736 < ReduceAction736: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129221,7 +128779,7 @@ const classtable_elt_t VFT_parser___ReduceAction736[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction736 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction736 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129250,11 +128808,11 @@ const classtable_elt_t VFT_parser___ReduceAction736[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction736 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction736 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction736___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction736 < ReduceAction736: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction736 < ReduceAction736: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129319,15 +128877,13 @@ val_t NEW_ReduceAction736_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction737[54] = {
-  {(bigint) 491 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction737[52] = {
+  {(bigint) 503 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction737" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction737 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction737 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 491 /* 5: ReduceAction737 < ReduceAction737: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 503 /* 5: ReduceAction737 < ReduceAction737: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129340,7 +128896,7 @@ const classtable_elt_t VFT_parser___ReduceAction737[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction737 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction737 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129369,11 +128925,11 @@ const classtable_elt_t VFT_parser___ReduceAction737[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction737 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction737 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction737___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction737 < ReduceAction737: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction737 < ReduceAction737: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129438,15 +128994,13 @@ val_t NEW_ReduceAction737_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction741[54] = {
-  {(bigint) 483 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction741[52] = {
+  {(bigint) 495 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction741" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction741 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction741 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 483 /* 5: ReduceAction741 < ReduceAction741: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 495 /* 5: ReduceAction741 < ReduceAction741: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129459,7 +129013,7 @@ const classtable_elt_t VFT_parser___ReduceAction741[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction741 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction741 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129488,11 +129042,11 @@ const classtable_elt_t VFT_parser___ReduceAction741[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction741 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction741 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction741___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction741 < ReduceAction741: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction741 < ReduceAction741: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129557,15 +129111,13 @@ val_t NEW_ReduceAction741_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction742[54] = {
-  {(bigint) 479 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction742[52] = {
+  {(bigint) 491 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction742" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction742 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction742 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 479 /* 5: ReduceAction742 < ReduceAction742: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 491 /* 5: ReduceAction742 < ReduceAction742: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129578,7 +129130,7 @@ const classtable_elt_t VFT_parser___ReduceAction742[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction742 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction742 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129607,11 +129159,11 @@ const classtable_elt_t VFT_parser___ReduceAction742[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction742 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction742 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction742___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction742 < ReduceAction742: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction742 < ReduceAction742: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129676,15 +129228,13 @@ val_t NEW_ReduceAction742_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction743[54] = {
-  {(bigint) 475 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction743[52] = {
+  {(bigint) 487 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction743" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction743 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction743 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 475 /* 5: ReduceAction743 < ReduceAction743: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 487 /* 5: ReduceAction743 < ReduceAction743: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129697,7 +129247,7 @@ const classtable_elt_t VFT_parser___ReduceAction743[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction743 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction743 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129726,11 +129276,11 @@ const classtable_elt_t VFT_parser___ReduceAction743[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction743 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction743 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction743___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction743 < ReduceAction743: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction743 < ReduceAction743: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129795,15 +129345,13 @@ val_t NEW_ReduceAction743_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction744[54] = {
-  {(bigint) 471 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction744[52] = {
+  {(bigint) 483 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction744" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction744 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction744 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 471 /* 5: ReduceAction744 < ReduceAction744: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 483 /* 5: ReduceAction744 < ReduceAction744: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129816,7 +129364,7 @@ const classtable_elt_t VFT_parser___ReduceAction744[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction744 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction744 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129845,11 +129393,11 @@ const classtable_elt_t VFT_parser___ReduceAction744[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction744 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction744 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction744___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction744 < ReduceAction744: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction744 < ReduceAction744: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -129914,15 +129462,13 @@ val_t NEW_ReduceAction744_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_parser___ReduceAction745[54] = {
-  {(bigint) 467 /* 0: Identity */},
+const classtable_elt_t VFT_parser___ReduceAction745[52] = {
+  {(bigint) 479 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReduceAction745" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReduceAction745 < Object: superclass typecheck marker */},
   {(bigint) 67 /* 4: ReduceAction745 < ReduceAction: superclass typecheck marker */},
-  {(bigint) 467 /* 5: ReduceAction745 < ReduceAction745: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 479 /* 5: ReduceAction745 < ReduceAction745: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -129935,7 +129481,7 @@ const classtable_elt_t VFT_parser___ReduceAction745[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ReduceAction745 < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ReduceAction745 < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -129964,11 +129510,11 @@ const classtable_elt_t VFT_parser___ReduceAction745[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: ReduceAction745 < ReduceAction: superclass init_table position */},
+  {(bigint) 0 /* 47: ReduceAction745 < ReduceAction: superclass init_table position */},
   {(bigint) parser___ReduceAction745___action},
   {(bigint) parser___ReduceAction___concat},
   {(bigint) parser___ReduceAction___init},
-  {(bigint) 2 /* 53: ReduceAction745 < ReduceAction745: superclass init_table position */},
+  {(bigint) 2 /* 51: ReduceAction745 < ReduceAction745: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -130033,17 +129579,15 @@ val_t NEW_ReduceAction745_parser___ReduceAction___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[88] = {
-  {(bigint) 2067 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[89] = {
+  {(bigint) 2079 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PartialOrder" /* 2: Class Name */},
   {(bigint) 3 /* 3: PartialOrder < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 275 /* 6: PartialOrder < Collection: superclass typecheck marker */},
-  {(bigint) 2067 /* 7: PartialOrder < PartialOrder: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 283 /* 6: PartialOrder < Collection: superclass typecheck marker */},
+  {(bigint) 2079 /* 7: PartialOrder < PartialOrder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130054,7 +129598,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: PartialOrder < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: PartialOrder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130097,6 +129641,8 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[88] = {
   {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) 0 /* 65: PartialOrder < Collection: superclass init_table position */},
@@ -130108,7 +129654,8 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrder[88] = {
   {(bigint) metamodel___partial_order___PartialOrder___has_only},
   {(bigint) metamodel___partial_order___PartialOrder___count},
   {(bigint) metamodel___partial_order___PartialOrder___first},
-  {(bigint) 2 /* 74: PartialOrder < PartialOrder: superclass init_table position */},
+  {(bigint) standard___math___Collection___rand},
+  {(bigint) 2 /* 75: PartialOrder < PartialOrder: superclass init_table position */},
   {(bigint) metamodel___partial_order___PartialOrder___roots},
   {(bigint) metamodel___partial_order___PartialOrder_____bra},
   {(bigint) metamodel___partial_order___PartialOrder___to_dot},
@@ -130196,7 +129743,7 @@ val_t NEW_PartialOrder_metamodel___partial_order___PartialOrder___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[66] = {
+const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[64] = {
   {(bigint) 107 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PartialOrderElement" /* 2: Class Name */},
@@ -130213,11 +129760,9 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[66] =
   {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) 0 /* 20: PartialOrderElement < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: PartialOrderElement < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130246,7 +129791,7 @@ const classtable_elt_t VFT_metamodel___partial_order___PartialOrderElement[66] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: PartialOrderElement < PartialOrderElement: superclass init_table position */},
+  {(bigint) 1 /* 47: PartialOrderElement < PartialOrderElement: superclass init_table position */},
   {(bigint) metamodel___partial_order___PartialOrderElement___order},
   {(bigint) metamodel___partial_order___PartialOrderElement___value},
   {(bigint) metamodel___partial_order___PartialOrderElement___rank},
@@ -130382,14 +129927,12 @@ val_t NEW_PartialOrderElement_metamodel___partial_order___PartialOrderElement___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[57] = {
-  {(bigint) 179 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[56] = {
+  {(bigint) 187 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMContext < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 4: MMContext < MMContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 187 /* 4: MMContext < MMContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130403,7 +129946,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130432,7 +129975,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMContext[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: MMContext < MMContext: superclass init_table position */},
+  {(bigint) metamodel___inheritance___MMContext___handle_property_conflict},
+  {(bigint) 1 /* 48: MMContext < MMContext: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMContext___init},
   {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
@@ -130535,14 +130079,12 @@ val_t NEW_MMContext_metamodel___abstractmetamodel___MMContext___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[59] = {
-  {(bigint) 175 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[57] = {
+  {(bigint) 183 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMDirectory" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMDirectory < Object: superclass typecheck marker */},
-  {(bigint) 175 /* 4: MMDirectory < MMDirectory: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 183 /* 4: MMDirectory < MMDirectory: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130556,7 +130098,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMDirectory < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMDirectory < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130585,7 +130127,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMDirectory[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: MMDirectory < MMDirectory: superclass init_table position */},
+  {(bigint) 1 /* 47: MMDirectory < MMDirectory: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMDirectory___name},
   {(bigint) metamodel___abstractmetamodel___MMDirectory___path},
   {(bigint) metamodel___abstractmetamodel___MMDirectory___parent},
@@ -130686,14 +130228,12 @@ val_t NEW_MMDirectory_metamodel___abstractmetamodel___MMDirectory___init(val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[87] = {
-  {(bigint) 147 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[85] = {
+  {(bigint) 155 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMModule" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMModule < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 4: MMModule < MMModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 155 /* 4: MMModule < MMModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -130707,7 +130247,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMModule < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMModule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -130745,7 +130285,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMModule[87] = {
   {(bigint) metamodel___inheritance___MMModule___import_local_classes},
   {(bigint) metamodel___static_type___MMModule___type_none},
   {(bigint) metamodel___static_type___MMModule___type_bool},
-  {(bigint) 1 /* 58: MMModule < MMModule: superclass init_table position */},
+  {(bigint) 1 /* 56: MMModule < MMModule: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMModule___context},
   {(bigint) metamodel___abstractmetamodel___MMModule___name},
   {(bigint) metamodel___abstractmetamodel___MMModule___full_name},
@@ -130844,7 +130384,7 @@ void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMModule(val_t p0){
   /* ./metamodel//abstractmetamodel.nit:159 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:395 */
+  /* ./compiling//table_computation.nit:398 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -130984,14 +130524,12 @@ val_t NEW_MMModule_metamodel___abstractmetamodel___MMModule___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[4];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[74] = {
-  {(bigint) 167 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[72] = {
+  {(bigint) 175 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMGlobalClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMGlobalClass < Object: superclass typecheck marker */},
-  {(bigint) 167 /* 4: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 175 /* 4: MMGlobalClass < MMGlobalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131005,7 +130543,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMGlobalClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMGlobalClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131035,7 +130573,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalClass[74] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___syntax_base___MMGlobalClass___check_visibility},
-  {(bigint) 1 /* 50: MMGlobalClass < MMGlobalClass: superclass init_table position */},
+  {(bigint) 1 /* 48: MMGlobalClass < MMGlobalClass: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMGlobalClass___intro},
   {(bigint) metamodel___abstractmetamodel___MMGlobalClass___class_refinement_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMGlobalClass___init},
@@ -131191,14 +130729,12 @@ val_t NEW_MMGlobalClass_metamodel___abstractmetamodel___MMGlobalClass___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[119] = {
-  {(bigint) 155 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[117] = {
+  {(bigint) 163 /* 0: Identity */},
   {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMLocalClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMLocalClass < MMLocalClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 163 /* 4: MMLocalClass < MMLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131212,7 +130748,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[119] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMLocalClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMLocalClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131244,6 +130780,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[119] = {
   {(bigint) abstracttool___MMLocalClass___dump_properties},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) metamodel___genericity___MMLocalClass___get_formal},
   {(bigint) metamodel___genericity___MMLocalClass___register_formal},
   {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
@@ -131299,8 +130837,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[119] = {
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
   {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
   {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
   {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
   {(bigint) compiling___compiling_base___MMLocalClass___cname},
@@ -131314,26 +130850,26 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalClass[119] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMLocalClass::_types */
-/* 3: Attribute MMLocalClass::_formals_types */
-/* 4: Attribute MMLocalClass::_direct_parents */
-/* 5: Attribute MMLocalClass::_computing_super */
-/* 6: Attribute MMLocalClass::_are_global_properties_inherited */
-/* 7: Attribute MMLocalClass::_base_type_cache */
-/* 8: Attribute MMLocalClass::_ancestors */
-/* 9: Attribute MMLocalClass::_name */
-/* 10: Attribute MMLocalClass::_arity */
-/* 11: Attribute MMLocalClass::_mmmodule */
-/* 12: Attribute MMLocalClass::_global */
-/* 13: Attribute MMLocalClass::_crhe */
-/* 14: Attribute MMLocalClass::_cshe */
-/* 15: Attribute MMLocalClass::_che */
-/* 16: Attribute MMLocalClass::_local_property_by_global */
-/* 17: Attribute MMLocalClass::_global_properties */
-/* 18: Attribute MMLocalClass::_local_local_properties */
-/* 19: Attribute MMLocalClass::_properties_by_name */
-/* 20: Attribute MMLocalClass::_primitive_info_cache */
-/* 21: Attribute MMLocalClass::_primitive_info_b */
+/* 2: Attribute MMLocalClass::_primitive_info_cache */
+/* 3: Attribute MMLocalClass::_primitive_info_b */
+/* 4: Attribute MMLocalClass::_types */
+/* 5: Attribute MMLocalClass::_formals_types */
+/* 6: Attribute MMLocalClass::_direct_parents */
+/* 7: Attribute MMLocalClass::_computing_super */
+/* 8: Attribute MMLocalClass::_are_global_properties_inherited */
+/* 9: Attribute MMLocalClass::_base_type_cache */
+/* 10: Attribute MMLocalClass::_ancestors */
+/* 11: Attribute MMLocalClass::_name */
+/* 12: Attribute MMLocalClass::_arity */
+/* 13: Attribute MMLocalClass::_mmmodule */
+/* 14: Attribute MMLocalClass::_global */
+/* 15: Attribute MMLocalClass::_crhe */
+/* 16: Attribute MMLocalClass::_cshe */
+/* 17: Attribute MMLocalClass::_che */
+/* 18: Attribute MMLocalClass::_local_property_by_global */
+/* 19: Attribute MMLocalClass::_global_properties */
+/* 20: Attribute MMLocalClass::_local_local_properties */
+/* 21: Attribute MMLocalClass::_properties_by_name */
 /* 22: Attribute MMLocalClass::_init_var_iroutine */
 /* 23: Attribute MMLocalClass::_checknew_iroutine */
 /* 24: Attribute MMLocalClass::_new_instance_iroutine */
@@ -131350,19 +130886,25 @@ void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
   /* ./metamodel//genericity.nit:41 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
   /* ./metamodel//genericity.nit:55 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:65 */
+  /* ./metamodel//inheritance.nit:82 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:69 */
+  /* ./metamodel//inheritance.nit:86 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:116 */
+  /* ./metamodel//inheritance.nit:133 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
   /* ./metamodel//abstractmetamodel.nit:361 */
@@ -131377,12 +130919,6 @@ void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMLocalClass(val_t p0){
   /* ./metamodel//abstractmetamodel.nit:370 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./primitive_info.nit:25 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./primitive_info.nit:29 */
-  REGB0 = TAG_Bool(false);
-  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
   /* ./program.nit:227 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
@@ -131415,6 +130951,11 @@ void CHECKNEW_metamodel___abstractmetamodel___MMLocalClass(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -131475,11 +131016,6 @@ void CHECKNEW_metamodel___abstractmetamodel___MMLocalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
-  }
   REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -131513,13 +131049,11 @@ val_t NEW_MMLocalClass_metamodel___abstractmetamodel___MMLocalClass___init(val_t
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66] = {
-  {(bigint) 163 /* 0: Identity */},
+  {(bigint) 171 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMGlobalProperty" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMGlobalProperty < Object: superclass typecheck marker */},
-  {(bigint) 163 /* 4: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 171 /* 4: MMGlobalProperty < MMGlobalProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131533,7 +131067,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMGlobalProperty < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMGlobalProperty < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131564,7 +131098,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___syntax_base___MMGlobalProperty___check_visibility},
   {(bigint) metamodel___virtualtype___MMGlobalProperty___is_virtual_type},
-  {(bigint) 1 /* 51: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
+  {(bigint) 1 /* 49: MMGlobalProperty < MMGlobalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___intro},
   {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___property_hierarchy},
@@ -131579,6 +131113,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMGlobalProperty[66]
   {(bigint) metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq},
   {(bigint) compiling___compiling_base___MMGlobalProperty___meth_call},
   {(bigint) compiling___compiling_base___MMGlobalProperty___attr_access},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_color},
+  {(bigint) compiling___compiling_base___MMGlobalProperty___vt_class_id},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -131674,14 +131210,12 @@ val_t NEW_MMGlobalProperty_metamodel___abstractmetamodel___MMGlobalProperty___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[71] = {
-  {(bigint) 151 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[69] = {
+  {(bigint) 159 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMLocalProperty" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMLocalProperty < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMLocalProperty < MMLocalProperty: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMLocalProperty < MMLocalProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131695,7 +131229,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[71] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMLocalProperty < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMLocalProperty < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131731,7 +131265,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMLocalProperty[71] =
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMLocalProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMLocalProperty < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -131844,15 +131378,13 @@ val_t NEW_MMLocalProperty_metamodel___abstractmetamodel___MMLocalProperty___init
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[73] = {
-  {(bigint) 2179 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[71] = {
+  {(bigint) 2195 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMAttribute" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMAttribute < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMAttribute < MMAttribute: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMAttribute < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2195 /* 5: MMAttribute < MMAttribute: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -131865,7 +131397,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMAttribute < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMAttribute < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -131901,7 +131433,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[73] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMAttribute < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMAttribute < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -131917,7 +131449,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMAttribute[73] = {
   {(bigint) compiling___compiling_base___MMLocalProperty___cname},
   {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
   {(bigint) icode___icode_base___MMAttribute___iroutine},
-  {(bigint) 2 /* 72: MMAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) 2 /* 70: MMAttribute < MMAttribute: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -132016,14 +131548,12 @@ val_t NEW_MMAttribute_metamodel___abstractmetamodel___MMLocalProperty___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[59] = {
-  {(bigint) 171 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[57] = {
+  {(bigint) 179 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMExplicitImport" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMExplicitImport < Object: superclass typecheck marker */},
-  {(bigint) 171 /* 4: MMExplicitImport < MMExplicitImport: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 179 /* 4: MMExplicitImport < MMExplicitImport: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132037,7 +131567,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[59]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMExplicitImport < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: 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},
@@ -132070,7 +131600,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMExplicitImport[59]
   {(bigint) metamodel___static_type___MMExplicitImport___signature},
   {(bigint) metamodel___static_type___MMExplicitImport___signature__eq},
   {(bigint) metamodel___abstractmetamodel___MMExplicitImport___init},
-  {(bigint) 1 /* 53: MMExplicitImport < MMExplicitImport: superclass init_table position */},
+  {(bigint) 1 /* 51: MMExplicitImport < MMExplicitImport: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class},
   {(bigint) metamodel___abstractmetamodel___MMExplicitImport___local_class__eq},
   {(bigint) metamodel___abstractmetamodel___MMExplicitImport___method},
@@ -132154,15 +131684,13 @@ val_t NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[96] = {
-  {(bigint) 2163 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[94] = {
+  {(bigint) 2179 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMMethod < MMMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMMethod < MMMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132175,7 +131703,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[96] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132211,7 +131739,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[96] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -132240,10 +131768,10 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMMethod[96] = {
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMMethod < MMMethod: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMMethod___is_intern},
   {(bigint) metamodel___abstractmetamodel___MMMethod___is_abstract},
   {(bigint) metamodel___abstractmetamodel___MMMethod___is_extern},
@@ -132349,15 +131877,13 @@ val_t NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[124] = {
-  {(bigint) 2175 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[122] = {
+  {(bigint) 2191 /* 0: Identity */},
   {(bigint) 28 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMConcreteClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMConcreteClass < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMConcreteClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2175 /* 5: MMConcreteClass < MMConcreteClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 163 /* 4: MMConcreteClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 2191 /* 5: MMConcreteClass < MMConcreteClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132370,7 +131896,7 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[124]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMConcreteClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMConcreteClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132402,6 +131928,8 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[124]
   {(bigint) abstracttool___MMLocalClass___dump_properties},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) metamodel___genericity___MMLocalClass___get_formal},
   {(bigint) metamodel___genericity___MMLocalClass___register_formal},
   {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
@@ -132457,8 +131985,6 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[124]
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
   {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
   {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
   {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
   {(bigint) compiling___compiling_base___MMLocalClass___cname},
@@ -132473,30 +131999,30 @@ const classtable_elt_t VFT_metamodel___abstractmetamodel___MMConcreteClass[124]
   {(bigint) compiling___table_computation___MMConcreteClass___class_layout},
   {(bigint) compiling___table_computation___MMConcreteClass___instance_layout},
   {(bigint) compiling___table_computation___MMConcreteClass___build_layout_in},
-  {(bigint) 2 /* 123: MMConcreteClass < MMConcreteClass: superclass init_table position */},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute MMConcreteClass::_types */
-/* 3: Attribute MMConcreteClass::_formals_types */
-/* 4: Attribute MMConcreteClass::_direct_parents */
-/* 5: Attribute MMConcreteClass::_computing_super */
-/* 6: Attribute MMConcreteClass::_are_global_properties_inherited */
-/* 7: Attribute MMConcreteClass::_base_type_cache */
-/* 8: Attribute MMConcreteClass::_ancestors */
-/* 9: Attribute MMConcreteClass::_name */
-/* 10: Attribute MMConcreteClass::_arity */
-/* 11: Attribute MMConcreteClass::_mmmodule */
-/* 12: Attribute MMConcreteClass::_global */
-/* 13: Attribute MMConcreteClass::_crhe */
-/* 14: Attribute MMConcreteClass::_cshe */
-/* 15: Attribute MMConcreteClass::_che */
-/* 16: Attribute MMConcreteClass::_local_property_by_global */
-/* 17: Attribute MMConcreteClass::_global_properties */
-/* 18: Attribute MMConcreteClass::_local_local_properties */
-/* 19: Attribute MMConcreteClass::_properties_by_name */
-/* 20: Attribute MMConcreteClass::_primitive_info_cache */
-/* 21: Attribute MMConcreteClass::_primitive_info_b */
+  {(bigint) 2 /* 121: MMConcreteClass < MMConcreteClass: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute MMConcreteClass::_primitive_info_cache */
+/* 3: Attribute MMConcreteClass::_primitive_info_b */
+/* 4: Attribute MMConcreteClass::_types */
+/* 5: Attribute MMConcreteClass::_formals_types */
+/* 6: Attribute MMConcreteClass::_direct_parents */
+/* 7: Attribute MMConcreteClass::_computing_super */
+/* 8: Attribute MMConcreteClass::_are_global_properties_inherited */
+/* 9: Attribute MMConcreteClass::_base_type_cache */
+/* 10: Attribute MMConcreteClass::_ancestors */
+/* 11: Attribute MMConcreteClass::_name */
+/* 12: Attribute MMConcreteClass::_arity */
+/* 13: Attribute MMConcreteClass::_mmmodule */
+/* 14: Attribute MMConcreteClass::_global */
+/* 15: Attribute MMConcreteClass::_crhe */
+/* 16: Attribute MMConcreteClass::_cshe */
+/* 17: Attribute MMConcreteClass::_che */
+/* 18: Attribute MMConcreteClass::_local_property_by_global */
+/* 19: Attribute MMConcreteClass::_global_properties */
+/* 20: Attribute MMConcreteClass::_local_local_properties */
+/* 21: Attribute MMConcreteClass::_properties_by_name */
 /* 22: Attribute MMConcreteClass::_init_var_iroutine */
 /* 23: Attribute MMConcreteClass::_checknew_iroutine */
 /* 24: Attribute MMConcreteClass::_new_instance_iroutine */
@@ -132555,13 +132081,13 @@ void INIT_ATTRIBUTES__metamodel___abstractmetamodel___MMConcreteClass(val_t p0){
   /* ./metamodel//genericity.nit:55 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:65 */
+  /* ./metamodel//inheritance.nit:82 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:69 */
+  /* ./metamodel//inheritance.nit:86 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:116 */
+  /* ./metamodel//inheritance.nit:133 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -132694,14 +132220,12 @@ val_t NEW_MMConcreteClass_metamodel___abstractmetamodel___MMLocalClass___init(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMParam[53] = {
-  {(bigint) 143 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMParam[51] = {
+  {(bigint) 151 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMParam" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMParam < Object: superclass typecheck marker */},
-  {(bigint) 143 /* 4: MMParam < MMParam: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 151 /* 4: MMParam < MMParam: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132715,7 +132239,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[53] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMParam < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMParam < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132744,7 +132268,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMParam[53] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: MMParam < MMParam: superclass init_table position */},
+  {(bigint) 1 /* 47: MMParam < MMParam: superclass init_table position */},
   {(bigint) metamodel___static_type___MMParam___mmtype},
   {(bigint) metamodel___static_type___MMParam___name},
   {(bigint) metamodel___static_type___MMParam___init},
@@ -132820,14 +132344,12 @@ val_t NEW_MMParam_metamodel___static_type___MMParam___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMSignature[70] = {
-  {(bigint) 139 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMSignature[68] = {
+  {(bigint) 147 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSignature" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSignature < Object: superclass typecheck marker */},
-  {(bigint) 139 /* 4: MMSignature < MMSignature: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 147 /* 4: MMSignature < MMSignature: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -132841,7 +132363,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSignature < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSignature < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -132879,7 +132401,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMSignature[70] = {
   {(bigint) metamodel___static_type___MMSignature___adaptation_to},
   {(bigint) metamodel___static_type___MMSignature___not_for_self},
   {(bigint) metamodel___static_type___MMSignature___init},
-  {(bigint) 1 /* 58: MMSignature < MMSignature: superclass init_table position */},
+  {(bigint) 1 /* 56: MMSignature < MMSignature: superclass init_table position */},
   {(bigint) metamodel___static_type___MMSignature___recv},
   {(bigint) metamodel___static_type___MMSignature___params},
   {(bigint) metamodel___static_type___MMSignature___return_type},
@@ -132988,14 +132510,12 @@ val_t NEW_MMSignature_metamodel___static_type___MMSignature___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMClosure[58] = {
-  {(bigint) 183 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMClosure[56] = {
+  {(bigint) 191 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMClosure" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMClosure < Object: superclass typecheck marker */},
-  {(bigint) 183 /* 4: MMClosure < MMClosure: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 191 /* 4: MMClosure < MMClosure: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133009,7 +132529,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMClosure < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMClosure < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133038,7 +132558,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMClosure[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: MMClosure < MMClosure: superclass init_table position */},
+  {(bigint) 1 /* 47: MMClosure < MMClosure: superclass init_table position */},
   {(bigint) metamodel___static_type___MMClosure___name},
   {(bigint) metamodel___static_type___MMClosure___signature},
   {(bigint) metamodel___static_type___MMClosure___is_break},
@@ -133135,15 +132655,13 @@ val_t NEW_MMClosure_metamodel___static_type___MMClosure___init(val_t p0, val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMNullableType[79] = {
-  {(bigint) 2159 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMNullableType[77] = {
+  {(bigint) 2175 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMNullableType" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMNullableType < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMNullableType < MMType: superclass typecheck marker */},
-  {(bigint) 2159 /* 5: MMNullableType < MMNullableType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMNullableType < MMType: superclass typecheck marker */},
+  {(bigint) 2175 /* 5: MMNullableType < MMNullableType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133156,7 +132674,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMNullableType < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMNullableType < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133199,7 +132717,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[79] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMType___is_generic},
   {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 63: MMNullableType < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMNullableType < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMNullableType___mmmodule},
   {(bigint) metamodel___static_type___MMNullableType___local_class},
   {(bigint) metamodel___static_type___MMNullableType___is_valid},
@@ -133213,7 +132731,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMNullableType[79] = {
   {(bigint) metamodel___static_type___MMNullableType___as_nullable},
   {(bigint) metamodel___static_type___MMNullableType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMNullableType < MMNullableType: superclass init_table position */},
+  {(bigint) 2 /* 75: MMNullableType < MMNullableType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMNullableType___init},
 };
 /* 0: Pointer to the classtable */
@@ -133286,15 +132804,13 @@ val_t NEW_MMNullableType_metamodel___static_type___MMNullableType___init(val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[79] = {
-  {(bigint) 2139 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[77] = {
+  {(bigint) 2155 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeClass < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeClass < MMType: superclass typecheck marker */},
-  {(bigint) 2139 /* 5: MMTypeClass < MMTypeClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeClass < MMType: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: MMTypeClass < MMTypeClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133307,7 +132823,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133350,7 +132866,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[79] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMType___is_generic},
   {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 63: MMTypeClass < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeClass < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
   {(bigint) metamodel___static_type___MMTypeClass___local_class},
   {(bigint) metamodel___static_type___MMType___is_valid},
@@ -133364,7 +132880,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeClass[79] = {
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeClass < MMTypeClass: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeClass < MMTypeClass: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___init},
 };
 /* 0: Pointer to the classtable */
@@ -133437,16 +132953,14 @@ val_t NEW_MMTypeClass_metamodel___static_type___MMTypeClass___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[81] = {
-  {(bigint) 2803 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[79] = {
+  {(bigint) 2823 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeSimpleClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeSimpleClass < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeSimpleClass < MMType: superclass typecheck marker */},
-  {(bigint) 2139 /* 5: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 2803 /* 6: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeSimpleClass < MMType: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: MMTypeSimpleClass < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 2823 /* 6: MMTypeSimpleClass < MMTypeSimpleClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133458,7 +132972,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeSimpleClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeSimpleClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133501,7 +133015,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[81] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeSimpleClass___is_generic},
   {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 63: MMTypeSimpleClass < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeSimpleClass < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
   {(bigint) metamodel___static_type___MMTypeClass___local_class},
   {(bigint) metamodel___static_type___MMType___is_valid},
@@ -133515,9 +133029,9 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeSimpleClass[81] = {
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeSimpleClass < MMTypeClass: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___init},
-  {(bigint) 3 /* 79: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
+  {(bigint) 3 /* 77: MMTypeSimpleClass < MMTypeSimpleClass: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeSimpleClass___init},
 };
 /* 0: Pointer to the classtable */
@@ -133590,15 +133104,13 @@ val_t NEW_MMTypeSimpleClass_metamodel___static_type___MMTypeSimpleClass___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[79] = {
-  {(bigint) 2131 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[77] = {
+  {(bigint) 2147 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeNone" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeNone < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeNone < MMType: superclass typecheck marker */},
-  {(bigint) 2131 /* 5: MMTypeNone < MMTypeNone: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeNone < MMType: superclass typecheck marker */},
+  {(bigint) 2147 /* 5: MMTypeNone < MMTypeNone: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133611,7 +133123,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[79] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeNone < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeNone < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133654,7 +133166,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[79] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeNone___is_generic},
   {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 63: MMTypeNone < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeNone < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeNone___mmmodule},
   {(bigint) metamodel___static_type___MMTypeNone___local_class},
   {(bigint) metamodel___static_type___MMType___is_valid},
@@ -133668,7 +133180,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMTypeNone[79] = {
   {(bigint) metamodel___static_type___MMTypeNone___as_nullable},
   {(bigint) metamodel___static_type___MMTypeNone___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeNone < MMTypeNone: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeNone < MMTypeNone: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeNone___init},
 };
 /* 0: Pointer to the classtable */
@@ -133741,14 +133253,12 @@ val_t NEW_MMTypeNone_metamodel___static_type___MMTypeNone___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[70] = {
-  {(bigint) 159 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[68] = {
+  {(bigint) 167 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMImportedCast" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMImportedCast < Object: superclass typecheck marker */},
-  {(bigint) 159 /* 4: MMImportedCast < MMImportedCast: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 167 /* 4: MMImportedCast < MMImportedCast: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133762,7 +133272,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMImportedCast < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: 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},
@@ -133805,7 +133315,7 @@ const classtable_elt_t VFT_metamodel___static_type___MMImportedCast[70] = {
   {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_cname},
   {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_local_csignature},
   {(bigint) native_interface___ni_metamodel___MMImportedCast___is_a_friendly_csignature},
-  {(bigint) 1 /* 63: MMImportedCast < MMImportedCast: superclass init_table position */},
+  {(bigint) 1 /* 61: MMImportedCast < MMImportedCast: superclass init_table position */},
   {(bigint) metamodel___static_type___MMImportedCast___from},
   {(bigint) metamodel___static_type___MMImportedCast___to},
   {(bigint) metamodel___static_type___MMImportedCast___is_about_nullable_only},
@@ -133904,15 +133414,13 @@ val_t NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[121] = {
-  {(bigint) 2167 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[119] = {
+  {(bigint) 2183 /* 0: Identity */},
   {(bigint) 25 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMImplicitLocalClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMImplicitLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2167 /* 5: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 163 /* 4: MMImplicitLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 2183 /* 5: MMImplicitLocalClass < MMImplicitLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -133925,7 +133433,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[121] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMImplicitLocalClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMImplicitLocalClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -133957,6 +133465,8 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[121] =
   {(bigint) abstracttool___MMLocalClass___dump_properties},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_class_visitor},
   {(bigint) syntax___mmbuilder___MMLocalClass___accept_properties_visitor},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) metamodel___genericity___MMLocalClass___get_formal},
   {(bigint) metamodel___genericity___MMLocalClass___register_formal},
   {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
@@ -134012,8 +133522,6 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[121] =
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
   {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
   {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
   {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
   {(bigint) compiling___compiling_base___MMLocalClass___cname},
@@ -134024,31 +133532,31 @@ const classtable_elt_t VFT_metamodel___inheritance___MMImplicitLocalClass[121] =
   {(bigint) program___MMLocalClass___new_instance_iroutine},
   {(bigint) compiling___compiling_global___MMLocalClass___declare_tables_to_c},
   {(bigint) compiling___compiling_global___MMLocalClass___compile_tables_to_c},
-  {(bigint) 2 /* 119: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
+  {(bigint) 2 /* 117: MMImplicitLocalClass < MMImplicitLocalClass: superclass init_table position */},
   {(bigint) metamodel___inheritance___MMImplicitLocalClass___init},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMImplicitLocalClass::_types */
-/* 3: Attribute MMImplicitLocalClass::_formals_types */
-/* 4: Attribute MMImplicitLocalClass::_direct_parents */
-/* 5: Attribute MMImplicitLocalClass::_computing_super */
-/* 6: Attribute MMImplicitLocalClass::_are_global_properties_inherited */
-/* 7: Attribute MMImplicitLocalClass::_base_type_cache */
-/* 8: Attribute MMImplicitLocalClass::_ancestors */
-/* 9: Attribute MMImplicitLocalClass::_name */
-/* 10: Attribute MMImplicitLocalClass::_arity */
-/* 11: Attribute MMImplicitLocalClass::_mmmodule */
-/* 12: Attribute MMImplicitLocalClass::_global */
-/* 13: Attribute MMImplicitLocalClass::_crhe */
-/* 14: Attribute MMImplicitLocalClass::_cshe */
-/* 15: Attribute MMImplicitLocalClass::_che */
-/* 16: Attribute MMImplicitLocalClass::_local_property_by_global */
-/* 17: Attribute MMImplicitLocalClass::_global_properties */
-/* 18: Attribute MMImplicitLocalClass::_local_local_properties */
-/* 19: Attribute MMImplicitLocalClass::_properties_by_name */
-/* 20: Attribute MMImplicitLocalClass::_primitive_info_cache */
-/* 21: Attribute MMImplicitLocalClass::_primitive_info_b */
+/* 2: Attribute MMImplicitLocalClass::_primitive_info_cache */
+/* 3: Attribute MMImplicitLocalClass::_primitive_info_b */
+/* 4: Attribute MMImplicitLocalClass::_types */
+/* 5: Attribute MMImplicitLocalClass::_formals_types */
+/* 6: Attribute MMImplicitLocalClass::_direct_parents */
+/* 7: Attribute MMImplicitLocalClass::_computing_super */
+/* 8: Attribute MMImplicitLocalClass::_are_global_properties_inherited */
+/* 9: Attribute MMImplicitLocalClass::_base_type_cache */
+/* 10: Attribute MMImplicitLocalClass::_ancestors */
+/* 11: Attribute MMImplicitLocalClass::_name */
+/* 12: Attribute MMImplicitLocalClass::_arity */
+/* 13: Attribute MMImplicitLocalClass::_mmmodule */
+/* 14: Attribute MMImplicitLocalClass::_global */
+/* 15: Attribute MMImplicitLocalClass::_crhe */
+/* 16: Attribute MMImplicitLocalClass::_cshe */
+/* 17: Attribute MMImplicitLocalClass::_che */
+/* 18: Attribute MMImplicitLocalClass::_local_property_by_global */
+/* 19: Attribute MMImplicitLocalClass::_global_properties */
+/* 20: Attribute MMImplicitLocalClass::_local_local_properties */
+/* 21: Attribute MMImplicitLocalClass::_properties_by_name */
 /* 22: Attribute MMImplicitLocalClass::_init_var_iroutine */
 /* 23: Attribute MMImplicitLocalClass::_checknew_iroutine */
 /* 24: Attribute MMImplicitLocalClass::_new_instance_iroutine */
@@ -134065,13 +133573,13 @@ void INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./metamodel//inheritance.nit:65 */
+  /* ./metamodel//inheritance.nit:82 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:69 */
+  /* ./metamodel//inheritance.nit:86 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:116 */
+  /* ./metamodel//inheritance.nit:133 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
   /* ./metamodel//abstractmetamodel.nit:361 */
@@ -134086,18 +133594,18 @@ void INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(val_t p0){
   /* ./metamodel//abstractmetamodel.nit:370 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_metamodel___abstractmetamodel___MMLocalClass____properties_by_name(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:41 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//genericity.nit:55 */
-  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
   /* ./primitive_info.nit:25 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
   /* ./primitive_info.nit:29 */
   REGB0 = TAG_Bool(false);
   ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
+  /* ./metamodel//genericity.nit:41 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./metamodel//genericity.nit:55 */
+  fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
   /* ./program.nit:227 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_program___MMLocalClass____init_var_iroutine(fra.me.REG[0]) = fra.me.REG[1];
@@ -134180,6 +133688,11 @@ void CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_properties_by_name", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_metamodel___genericity___MMLocalClass____types(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -134190,11 +133703,6 @@ void CHECKNEW_metamodel___inheritance___MMImplicitLocalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_formals_types", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
-  }
   REGB0 = TAG_Bool(ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -134208,7 +133716,7 @@ val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 501;
+  fra.me.line = 517;
   fra.me.meth = LOCATE_NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -134217,7 +133725,7 @@ val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:501 */
+  /* ./metamodel//inheritance.nit:517 */
   fra.me.REG[2] = NEW_metamodel___inheritance___MMImplicitLocalClass();
   INIT_ATTRIBUTES__metamodel___inheritance___MMImplicitLocalClass(fra.me.REG[2]);
   metamodel___inheritance___MMImplicitLocalClass___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -134225,15 +133733,13 @@ val_t NEW_MMImplicitLocalClass_metamodel___inheritance___MMImplicitLocalClass___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[61] = {
-  {(bigint) 2155 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[59] = {
+  {(bigint) 2171 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMRefineAncestor" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMRefineAncestor < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2155 /* 5: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 195 /* 4: MMRefineAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 2171 /* 5: MMRefineAncestor < MMRefineAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134246,7 +133752,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMRefineAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMRefineAncestor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134276,7 +133782,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 50: MMRefineAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) 0 /* 48: MMRefineAncestor < MMAncestor: superclass init_table position */},
   {(bigint) metamodel___static_type___MMAncestor___stype__eq},
   {(bigint) metamodel___static_type___MMAncestor___stype},
   {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
@@ -134285,7 +133791,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMRefineAncestor[61] = {
   {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
   {(bigint) metamodel___inheritance___MMRefineAncestor___local_class},
   {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 59: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
+  {(bigint) 2 /* 57: MMRefineAncestor < MMRefineAncestor: superclass init_table position */},
   {(bigint) metamodel___inheritance___MMRefineAncestor___init},
 };
 /* 0: Pointer to the classtable */
@@ -134347,7 +133853,7 @@ val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 513;
+  fra.me.line = 529;
   fra.me.meth = LOCATE_NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -134356,7 +133862,7 @@ val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:513 */
+  /* ./metamodel//inheritance.nit:529 */
   fra.me.REG[2] = NEW_metamodel___inheritance___MMRefineAncestor();
   INIT_ATTRIBUTES__metamodel___inheritance___MMRefineAncestor(fra.me.REG[2]);
   metamodel___inheritance___MMRefineAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -134364,15 +133870,13 @@ val_t NEW_MMRefineAncestor_metamodel___inheritance___MMRefineAncestor___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[61] = {
-  {(bigint) 2151 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[59] = {
+  {(bigint) 2167 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSpecAncestor" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSpecAncestor < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2151 /* 5: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 195 /* 4: MMSpecAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 2167 /* 5: MMSpecAncestor < MMSpecAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134385,7 +133889,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMSpecAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMSpecAncestor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134415,7 +133919,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 50: MMSpecAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) 0 /* 48: MMSpecAncestor < MMAncestor: superclass init_table position */},
   {(bigint) metamodel___static_type___MMAncestor___stype__eq},
   {(bigint) metamodel___static_type___MMAncestor___stype},
   {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
@@ -134424,7 +133928,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMSpecAncestor[61] = {
   {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
   {(bigint) metamodel___inheritance___MMSpecAncestor___local_class},
   {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 59: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
+  {(bigint) 2 /* 57: MMSpecAncestor < MMSpecAncestor: superclass init_table position */},
   {(bigint) metamodel___inheritance___MMSpecAncestor___init},
 };
 /* 0: Pointer to the classtable */
@@ -134477,7 +133981,7 @@ val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 526;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -134486,7 +133990,7 @@ val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:526 */
+  /* ./metamodel//inheritance.nit:542 */
   fra.me.REG[2] = NEW_metamodel___inheritance___MMSpecAncestor();
   INIT_ATTRIBUTES__metamodel___inheritance___MMSpecAncestor(fra.me.REG[2]);
   metamodel___inheritance___MMSpecAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -134494,15 +133998,13 @@ val_t NEW_MMSpecAncestor_metamodel___inheritance___MMSpecAncestor___init(val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[61] = {
-  {(bigint) 2171 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[59] = {
+  {(bigint) 2187 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMDefaultAncestor" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMDefaultAncestor < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2171 /* 5: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 195 /* 4: MMDefaultAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 2187 /* 5: MMDefaultAncestor < MMDefaultAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134515,7 +134017,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMDefaultAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMDefaultAncestor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134545,7 +134047,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 50: MMDefaultAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) 0 /* 48: MMDefaultAncestor < MMAncestor: superclass init_table position */},
   {(bigint) metamodel___static_type___MMAncestor___stype__eq},
   {(bigint) metamodel___static_type___MMAncestor___stype},
   {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
@@ -134554,7 +134056,7 @@ const classtable_elt_t VFT_metamodel___inheritance___MMDefaultAncestor[61] = {
   {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
   {(bigint) metamodel___inheritance___MMDefaultAncestor___local_class},
   {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 59: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
+  {(bigint) 2 /* 57: MMDefaultAncestor < MMDefaultAncestor: superclass init_table position */},
   {(bigint) metamodel___inheritance___MMDefaultAncestor___init},
 };
 /* 0: Pointer to the classtable */
@@ -134607,7 +134109,7 @@ val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(v
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 537;
+  fra.me.line = 553;
   fra.me.meth = LOCATE_NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -134616,7 +134118,7 @@ val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(v
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./metamodel//inheritance.nit:537 */
+  /* ./metamodel//inheritance.nit:553 */
   fra.me.REG[2] = NEW_metamodel___inheritance___MMDefaultAncestor();
   INIT_ATTRIBUTES__metamodel___inheritance___MMDefaultAncestor(fra.me.REG[2]);
   metamodel___inheritance___MMDefaultAncestor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -134624,15 +134126,13 @@ val_t NEW_MMDefaultAncestor_metamodel___inheritance___MMDefaultAncestor___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[81] = {
-  {(bigint) 2135 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[79] = {
+  {(bigint) 2151 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeFormal" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeFormal < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeFormal < MMType: superclass typecheck marker */},
-  {(bigint) 2135 /* 5: MMTypeFormal < MMTypeFormal: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeFormal < MMType: superclass typecheck marker */},
+  {(bigint) 2151 /* 5: MMTypeFormal < MMTypeFormal: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134645,7 +134145,7 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[81] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeFormal < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeFormal < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134688,7 +134188,7 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[81] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeFormal___is_generic},
   {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 63: MMTypeFormal < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeFormal < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMType___mmmodule},
   {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
   {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
@@ -134702,7 +134202,7 @@ const classtable_elt_t VFT_metamodel___type_formal___MMTypeFormal[81] = {
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeFormal < MMTypeFormal: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeFormal < MMTypeFormal: superclass init_table position */},
   {(bigint) metamodel___type_formal___MMTypeFormal___name},
   {(bigint) metamodel___type_formal___MMTypeFormal___bound},
   {(bigint) metamodel___type_formal___MMTypeFormal___init},
@@ -134780,16 +134280,14 @@ val_t NEW_MMTypeFormal_metamodel___type_formal___MMTypeFormal___init(val_t p0, v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[86] = {
-  {(bigint) 2807 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[84] = {
+  {(bigint) 2827 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeGeneric" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeGeneric < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeGeneric < MMType: superclass typecheck marker */},
-  {(bigint) 2139 /* 5: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
-  {(bigint) 2807 /* 6: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeGeneric < MMType: superclass typecheck marker */},
+  {(bigint) 2155 /* 5: MMTypeGeneric < MMTypeClass: superclass typecheck marker */},
+  {(bigint) 2827 /* 6: MMTypeGeneric < MMTypeGeneric: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134801,7 +134299,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[86] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeGeneric < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeGeneric < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -134844,7 +134342,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[86] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeGeneric___is_generic},
   {(bigint) metamodel___type_formal___MMType___direct_type},
-  {(bigint) 0 /* 63: MMTypeGeneric < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeGeneric < MMType: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___mmmodule},
   {(bigint) metamodel___static_type___MMTypeClass___local_class},
   {(bigint) metamodel___static_type___MMType___is_valid},
@@ -134858,9 +134356,9 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeGeneric[86] = {
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeGeneric < MMTypeClass: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeGeneric < MMTypeClass: superclass init_table position */},
   {(bigint) metamodel___static_type___MMTypeClass___init},
-  {(bigint) 3 /* 79: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
+  {(bigint) 3 /* 77: MMTypeGeneric < MMTypeGeneric: superclass init_table position */},
   {(bigint) metamodel___genericity___MMTypeGeneric___params},
   {(bigint) metamodel___static_type___MMTypeClass___upcast_for},
   {(bigint) metamodel___genericity___MMTypeGeneric___params_equals},
@@ -134946,16 +134444,14 @@ val_t NEW_MMTypeGeneric_metamodel___genericity___MMTypeGeneric___init(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[87] = {
-  {(bigint) 2811 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[85] = {
+  {(bigint) 2831 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeFormalParameter" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeFormalParameter < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMTypeFormalParameter < MMType: superclass typecheck marker */},
-  {(bigint) 2135 /* 5: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 2811 /* 6: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMTypeFormalParameter < MMType: superclass typecheck marker */},
+  {(bigint) 2151 /* 5: MMTypeFormalParameter < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 2831 /* 6: MMTypeFormalParameter < MMTypeFormalParameter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -134967,7 +134463,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[87] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMTypeFormalParameter < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMTypeFormalParameter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135010,7 +134506,7 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[87] =
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeFormal___is_generic},
   {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 63: MMTypeFormalParameter < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMTypeFormalParameter < MMType: superclass init_table position */},
   {(bigint) metamodel___genericity___MMTypeFormalParameter___mmmodule},
   {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
   {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
@@ -135024,11 +134520,11 @@ const classtable_elt_t VFT_metamodel___genericity___MMTypeFormalParameter[87] =
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
+  {(bigint) 2 /* 75: MMTypeFormalParameter < MMTypeFormal: superclass init_table position */},
   {(bigint) metamodel___type_formal___MMTypeFormal___name},
   {(bigint) metamodel___type_formal___MMTypeFormal___bound},
   {(bigint) metamodel___type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 81: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
+  {(bigint) 3 /* 79: MMTypeFormalParameter < MMTypeFormalParameter: superclass init_table position */},
   {(bigint) metamodel___genericity___MMTypeFormalParameter___def_class},
   {(bigint) metamodel___genericity___MMTypeFormalParameter___position},
   {(bigint) metamodel___genericity___MMTypeFormalParameter___bound__eq},
@@ -135149,15 +134645,13 @@ val_t NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter__
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[74] = {
-  {(bigint) 2127 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[72] = {
+  {(bigint) 2143 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMTypeProperty" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2127 /* 5: MMTypeProperty < MMTypeProperty: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMTypeProperty < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2143 /* 5: MMTypeProperty < MMTypeProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135170,7 +134664,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMTypeProperty < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMTypeProperty < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135206,7 +134700,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[74] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMTypeProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMTypeProperty < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -135221,7 +134715,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMTypeProperty[74] = {
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
   {(bigint) compiling___compiling_base___MMLocalProperty___cname},
   {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) 2 /* 71: MMTypeProperty < MMTypeProperty: superclass init_table position */},
+  {(bigint) 2 /* 69: MMTypeProperty < MMTypeProperty: superclass init_table position */},
   {(bigint) metamodel___virtualtype___MMTypeProperty___stype_for},
   {(bigint) metamodel___virtualtype___MMTypeProperty___real_stype_for},
 };
@@ -135331,16 +134825,14 @@ val_t NEW_MMTypeProperty_metamodel___abstractmetamodel___MMLocalProperty___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[85] = {
-  {(bigint) 2799 /* 0: Identity */},
+const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[83] = {
+  {(bigint) 2819 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMVirtualType" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMVirtualType < Object: superclass typecheck marker */},
-  {(bigint) 135 /* 4: MMVirtualType < MMType: superclass typecheck marker */},
-  {(bigint) 2135 /* 5: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
-  {(bigint) 2799 /* 6: MMVirtualType < MMVirtualType: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 143 /* 4: MMVirtualType < MMType: superclass typecheck marker */},
+  {(bigint) 2151 /* 5: MMVirtualType < MMTypeFormal: superclass typecheck marker */},
+  {(bigint) 2819 /* 6: MMVirtualType < MMVirtualType: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135352,7 +134844,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMVirtualType < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMVirtualType < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135395,7 +134887,7 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[85] = {
   {(bigint) primitive_info___MMType___unboxtype},
   {(bigint) metamodel___genericity___MMTypeFormal___is_generic},
   {(bigint) metamodel___type_formal___MMTypeFormal___direct_type},
-  {(bigint) 0 /* 63: MMVirtualType < MMType: superclass init_table position */},
+  {(bigint) 0 /* 61: MMVirtualType < MMType: superclass init_table position */},
   {(bigint) metamodel___virtualtype___MMVirtualType___mmmodule},
   {(bigint) metamodel___type_formal___MMTypeFormal___local_class},
   {(bigint) metamodel___type_formal___MMTypeFormal___is_valid},
@@ -135409,11 +134901,11 @@ const classtable_elt_t VFT_metamodel___virtualtype___MMVirtualType[85] = {
   {(bigint) metamodel___static_type___MMType___as_nullable},
   {(bigint) metamodel___static_type___MMType___as_notnull},
   {(bigint) metamodel___static_type___MMType___init},
-  {(bigint) 2 /* 77: MMVirtualType < MMTypeFormal: superclass init_table position */},
+  {(bigint) 2 /* 75: MMVirtualType < MMTypeFormal: superclass init_table position */},
   {(bigint) metamodel___type_formal___MMTypeFormal___name},
   {(bigint) metamodel___type_formal___MMTypeFormal___bound},
   {(bigint) metamodel___type_formal___MMTypeFormal___init},
-  {(bigint) 3 /* 81: MMVirtualType < MMVirtualType: superclass init_table position */},
+  {(bigint) 3 /* 79: MMVirtualType < MMVirtualType: superclass init_table position */},
   {(bigint) metamodel___virtualtype___MMVirtualType___property},
   {(bigint) metamodel___virtualtype___MMVirtualType___recv},
   {(bigint) metamodel___virtualtype___MMVirtualType___init},
@@ -135520,11 +135012,9 @@ const classtable_elt_t VFT_opts___Option[63] = {
   {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) 0 /* 20: Option < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Option < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135553,8 +135043,10 @@ const classtable_elt_t VFT_opts___Option[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Option < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: Option < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) 3 /* 49: VT Option::VALUE : id of Object */},
+  {(bigint) 3 /* 50: VT Option::VALUE : color of Object */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -135630,7 +135122,7 @@ val_t NEW_Option_opts___Option___init_opt(val_t p0, val_t p1, val_t p2){
   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 = 37;
+  fra.me.line = 40;
   fra.me.meth = LOCATE_NEW_Option_opts___Option___init_opt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -135641,7 +135133,7 @@ val_t NEW_Option_opts___Option___init_opt(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/opts.nit:37 */
+  /* ./../lib/opts.nit:40 */
   fra.me.REG[3] = NEW_opts___Option();
   INIT_ATTRIBUTES__opts___Option(fra.me.REG[3]);
   opts___Option___init_opt(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -135650,14 +135142,12 @@ val_t NEW_Option_opts___Option___init_opt(val_t p0, val_t p1, val_t p2){
   return fra.me.REG[3];
 }
 const classtable_elt_t VFT_opts___OptionText[65] = {
-  {(bigint) 2079 /* 0: Identity */},
+  {(bigint) 2091 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionText" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionText < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionText < Option: superclass typecheck marker */},
-  {(bigint) 2079 /* 5: OptionText < OptionText: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2091 /* 5: OptionText < OptionText: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135670,7 +135160,7 @@ const classtable_elt_t VFT_opts___OptionText[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionText < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionText < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135699,8 +135189,10 @@ const classtable_elt_t VFT_opts___OptionText[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionText < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionText < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) 3 /* 49: VT OptionText::VALUE : id of Object */},
+  {(bigint) 3 /* 50: VT OptionText::VALUE : color of Object */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -135778,14 +135270,14 @@ val_t NEW_OptionText_opts___OptionText___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 83;
+  fra.me.line = 86;
   fra.me.meth = LOCATE_NEW_OptionText_opts___OptionText___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:83 */
+  /* ./../lib/opts.nit:86 */
   fra.me.REG[1] = NEW_opts___OptionText();
   INIT_ATTRIBUTES__opts___OptionText(fra.me.REG[1]);
   opts___OptionText___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -135794,14 +135286,12 @@ val_t NEW_OptionText_opts___OptionText___init(val_t p0){
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_opts___OptionBool[65] = {
-  {(bigint) 2091 /* 0: Identity */},
+  {(bigint) 2103 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionBool" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionBool < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionBool < Option: superclass typecheck marker */},
-  {(bigint) 2091 /* 5: OptionBool < OptionBool: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2103 /* 5: OptionBool < OptionBool: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135814,7 +135304,7 @@ const classtable_elt_t VFT_opts___OptionBool[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionBool < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionBool < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135843,8 +135333,10 @@ const classtable_elt_t VFT_opts___OptionBool[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionBool < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionBool < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) -13 /* 49: VT OptionBool::VALUE : id of Bool */},
+  {(bigint) 4 /* 50: VT OptionBool::VALUE : color of Bool */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -135922,7 +135414,7 @@ val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 94;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_NEW_OptionBool_opts___OptionBool___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -135931,7 +135423,7 @@ val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:94 */
+  /* ./../lib/opts.nit:97 */
   fra.me.REG[2] = NEW_opts___OptionBool();
   INIT_ATTRIBUTES__opts___OptionBool(fra.me.REG[2]);
   opts___OptionBool___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -135940,14 +135432,12 @@ val_t NEW_OptionBool_opts___OptionBool___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_opts___OptionCount[65] = {
-  {(bigint) 2087 /* 0: Identity */},
+  {(bigint) 2099 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionCount" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionCount < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionCount < Option: superclass typecheck marker */},
-  {(bigint) 2087 /* 5: OptionCount < OptionCount: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2099 /* 5: OptionCount < OptionCount: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -135960,7 +135450,7 @@ const classtable_elt_t VFT_opts___OptionCount[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionCount < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionCount < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -135989,8 +135479,10 @@ const classtable_elt_t VFT_opts___OptionCount[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionCount < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionCount < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) -29 /* 49: VT OptionCount::VALUE : id of Int */},
+  {(bigint) 7 /* 50: VT OptionCount::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136068,7 +135560,7 @@ val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 103;
+  fra.me.line = 106;
   fra.me.meth = LOCATE_NEW_OptionCount_opts___OptionCount___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -136077,7 +135569,7 @@ val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:103 */
+  /* ./../lib/opts.nit:106 */
   fra.me.REG[2] = NEW_opts___OptionCount();
   INIT_ATTRIBUTES__opts___OptionCount(fra.me.REG[2]);
   opts___OptionCount___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -136086,14 +135578,12 @@ val_t NEW_OptionCount_opts___OptionCount___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_opts___OptionParameter[66] = {
-  {(bigint) 2083 /* 0: Identity */},
+  {(bigint) 2095 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionParameter" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionParameter < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionParameter < Option: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: OptionParameter < OptionParameter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2095 /* 5: OptionParameter < OptionParameter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136106,7 +135596,7 @@ const classtable_elt_t VFT_opts___OptionParameter[66] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionParameter < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionParameter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136135,8 +135625,10 @@ const classtable_elt_t VFT_opts___OptionParameter[66] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionParameter < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionParameter < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) 3 /* 49: VT OptionParameter::VALUE : id of Object */},
+  {(bigint) 3 /* 50: VT OptionParameter::VALUE : color of Object */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136215,7 +135707,7 @@ val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1,
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 123;
+  fra.me.line = 126;
   fra.me.meth = LOCATE_NEW_OptionParameter_opts___OptionParameter___init_opt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -136226,7 +135718,7 @@ val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/opts.nit:123 */
+  /* ./../lib/opts.nit:126 */
   fra.me.REG[3] = NEW_opts___OptionParameter();
   INIT_ATTRIBUTES__opts___OptionParameter(fra.me.REG[3]);
   opts___OptionParameter___init_opt(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -136235,15 +135727,13 @@ val_t NEW_OptionParameter_opts___OptionParameter___init_opt(val_t p0, val_t p1,
   return fra.me.REG[3];
 }
 const classtable_elt_t VFT_opts___OptionString[68] = {
-  {(bigint) 2767 /* 0: Identity */},
+  {(bigint) 2791 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionString" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionString < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionString < Option: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: OptionString < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2767 /* 6: OptionString < OptionString: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2095 /* 5: OptionString < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2791 /* 6: OptionString < OptionString: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136255,7 +135745,7 @@ const classtable_elt_t VFT_opts___OptionString[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionString < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionString < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136284,8 +135774,10 @@ const classtable_elt_t VFT_opts___OptionString[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionString < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionString < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) 3535 /* 49: VT OptionString::VALUE : id of String */},
+  {(bigint) 8 /* 50: VT OptionString::VALUE : color of String */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136366,7 +135858,7 @@ val_t NEW_OptionString_opts___OptionString___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 = 130;
+  fra.me.line = 133;
   fra.me.meth = LOCATE_NEW_OptionString_opts___OptionString___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -136375,7 +135867,7 @@ val_t NEW_OptionString_opts___OptionString___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:130 */
+  /* ./../lib/opts.nit:133 */
   fra.me.REG[2] = NEW_opts___OptionString();
   INIT_ATTRIBUTES__opts___OptionString(fra.me.REG[2]);
   opts___OptionString___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -136384,15 +135876,13 @@ val_t NEW_OptionString_opts___OptionString___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_opts___OptionEnum[69] = {
-  {(bigint) 2775 /* 0: Identity */},
+  {(bigint) 2799 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionEnum" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionEnum < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionEnum < Option: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: OptionEnum < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2775 /* 6: OptionEnum < OptionEnum: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2095 /* 5: OptionEnum < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2799 /* 6: OptionEnum < OptionEnum: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136404,7 +135894,7 @@ const classtable_elt_t VFT_opts___OptionEnum[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionEnum < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionEnum < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136433,8 +135923,10 @@ const classtable_elt_t VFT_opts___OptionEnum[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionEnum < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionEnum < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) -29 /* 49: VT OptionEnum::VALUE : id of Int */},
+  {(bigint) 7 /* 50: VT OptionEnum::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136523,7 +136015,7 @@ val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, 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 = 140;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_NEW_OptionEnum_opts___OptionEnum___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -136535,7 +136027,7 @@ val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_
   fra.me.REG[1] = p1;
   REGB0 = p2;
   fra.me.REG[2] = p3;
-  /* ./../lib/opts.nit:140 */
+  /* ./../lib/opts.nit:143 */
   fra.me.REG[3] = NEW_opts___OptionEnum();
   INIT_ATTRIBUTES__opts___OptionEnum(fra.me.REG[3]);
   opts___OptionEnum___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
@@ -136544,15 +136036,13 @@ val_t NEW_OptionEnum_opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_
   return fra.me.REG[3];
 }
 const classtable_elt_t VFT_opts___OptionInt[68] = {
-  {(bigint) 2771 /* 0: Identity */},
+  {(bigint) 2795 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionInt" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionInt < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionInt < Option: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: OptionInt < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2771 /* 6: OptionInt < OptionInt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2095 /* 5: OptionInt < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2795 /* 6: OptionInt < OptionInt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136564,7 +136054,7 @@ const classtable_elt_t VFT_opts___OptionInt[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionInt < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionInt < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136593,8 +136083,10 @@ const classtable_elt_t VFT_opts___OptionInt[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionInt < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionInt < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) -29 /* 49: VT OptionInt::VALUE : id of Int */},
+  {(bigint) 7 /* 50: VT OptionInt::VALUE : color of Int */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136676,7 +136168,7 @@ val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2){
   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 = 172;
   fra.me.meth = LOCATE_NEW_OptionInt_opts___OptionInt___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -136686,7 +136178,7 @@ val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   REGB0 = p1;
   fra.me.REG[1] = p2;
-  /* ./../lib/opts.nit:169 */
+  /* ./../lib/opts.nit:172 */
   fra.me.REG[2] = NEW_opts___OptionInt();
   INIT_ATTRIBUTES__opts___OptionInt(fra.me.REG[2]);
   opts___OptionInt___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
@@ -136695,15 +136187,13 @@ val_t NEW_OptionInt_opts___OptionInt___init(val_t p0, val_t p1, val_t p2){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_opts___OptionArray[68] = {
-  {(bigint) 2779 /* 0: Identity */},
+  {(bigint) 2803 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionArray" /* 2: Class Name */},
   {(bigint) 3 /* 3: OptionArray < Object: superclass typecheck marker */},
   {(bigint) 115 /* 4: OptionArray < Option: superclass typecheck marker */},
-  {(bigint) 2083 /* 5: OptionArray < OptionParameter: superclass typecheck marker */},
-  {(bigint) 2779 /* 6: OptionArray < OptionArray: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2095 /* 5: OptionArray < OptionParameter: superclass typecheck marker */},
+  {(bigint) 2803 /* 6: OptionArray < OptionArray: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -136715,7 +136205,7 @@ const classtable_elt_t VFT_opts___OptionArray[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: OptionArray < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionArray < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136744,8 +136234,10 @@ const classtable_elt_t VFT_opts___OptionArray[68] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionArray < Option: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionArray < Option: superclass init_table position */},
   {(bigint) opts___Option___names},
+  {(bigint) 3747 /* 49: VT OptionArray::VALUE : id of Array */},
+  {(bigint) 4 /* 50: VT OptionArray::VALUE : color of Array */},
   {(bigint) opts___Option___helptext},
   {(bigint) opts___Option___mandatory},
   {(bigint) opts___Option___mandatory__eq},
@@ -136832,7 +136324,7 @@ val_t NEW_OptionArray_opts___OptionArray___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 = 178;
+  fra.me.line = 181;
   fra.me.meth = LOCATE_NEW_OptionArray_opts___OptionArray___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -136841,7 +136333,7 @@ val_t NEW_OptionArray_opts___OptionArray___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:178 */
+  /* ./../lib/opts.nit:181 */
   fra.me.REG[2] = NEW_opts___OptionArray();
   INIT_ATTRIBUTES__opts___OptionArray(fra.me.REG[2]);
   opts___OptionArray___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -136849,7 +136341,7 @@ val_t NEW_OptionArray_opts___OptionArray___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_opts___OptionContext[58] = {
+const classtable_elt_t VFT_opts___OptionContext[56] = {
   {(bigint) 111 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "OptionContext" /* 2: Class Name */},
@@ -136866,11 +136358,9 @@ const classtable_elt_t VFT_opts___OptionContext[58] = {
   {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) 0 /* 20: OptionContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: OptionContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -136899,7 +136389,7 @@ const classtable_elt_t VFT_opts___OptionContext[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: OptionContext < OptionContext: superclass init_table position */},
+  {(bigint) 1 /* 47: OptionContext < OptionContext: superclass init_table position */},
   {(bigint) opts___OptionContext___options},
   {(bigint) opts___OptionContext___rest},
   {(bigint) opts___OptionContext___usage},
@@ -136969,12 +136459,12 @@ val_t NEW_OptionContext_opts___OptionContext___init(void){
   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 = 253;
+  fra.me.line = 256;
   fra.me.meth = LOCATE_NEW_OptionContext_opts___OptionContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./../lib/opts.nit:253 */
+  /* ./../lib/opts.nit:256 */
   fra.me.REG[0] = NEW_opts___OptionContext();
   INIT_ATTRIBUTES__opts___OptionContext(fra.me.REG[0]);
   opts___OptionContext___init(fra.me.REG[0], init_table);
@@ -136983,15 +136473,13 @@ val_t NEW_OptionContext_opts___OptionContext___init(void){
   return fra.me.REG[0];
 }
 const classtable_elt_t VFT_mmloader___Message[68] = {
-  {(bigint) 2111 /* 0: Identity */},
+  {(bigint) 2123 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Message" /* 2: Class Name */},
   {(bigint) 3 /* 3: Message < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 267 /* 5: Message < Comparable: superclass typecheck marker */},
-  {(bigint) 2111 /* 6: Message < Message: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 275 /* 5: Message < Comparable: superclass typecheck marker */},
+  {(bigint) 2123 /* 6: Message < Message: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -137003,7 +136491,7 @@ const classtable_elt_t VFT_mmloader___Message[68] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: Message < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: Message < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -137037,7 +136525,9 @@ const classtable_elt_t VFT_mmloader___Message[68] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 0 /* 54: Message < Comparable: superclass init_table position */},
+  {(bigint) 0 /* 52: Message < Comparable: superclass init_table position */},
+  {(bigint) 2123 /* 53: VT Message::OTHER : id of Message */},
+  {(bigint) 6 /* 54: VT Message::OTHER : color of Message */},
   {(bigint) mmloader___Message_____l},
   {(bigint) standard___kernel___Comparable_____leq},
   {(bigint) standard___kernel___Comparable_____geq},
@@ -137117,15 +136607,13 @@ val_t NEW_Message_mmloader___Message___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_mmloader___ToolContext[135] = {
-  {(bigint) 319 /* 0: Identity */},
+const classtable_elt_t VFT_mmloader___ToolContext[134] = {
+  {(bigint) 327 /* 0: Identity */},
   {(bigint) 51 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ToolContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: ToolContext < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 4: ToolContext < MMContext: superclass typecheck marker */},
-  {(bigint) 319 /* 5: ToolContext < ToolContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 187 /* 4: ToolContext < MMContext: superclass typecheck marker */},
+  {(bigint) 327 /* 5: ToolContext < ToolContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -137138,7 +136626,7 @@ const classtable_elt_t VFT_mmloader___ToolContext[135] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ToolContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ToolContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -137167,7 +136655,8 @@ const classtable_elt_t VFT_mmloader___ToolContext[135] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ToolContext < MMContext: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
+  {(bigint) 1 /* 48: ToolContext < MMContext: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMContext___init},
   {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
@@ -137197,7 +136686,7 @@ const classtable_elt_t VFT_mmloader___ToolContext[135] = {
   {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
   {(bigint) syntax___ToolContext___keep_ast},
   {(bigint) syntax___ToolContext___keep_ast__eq},
-  {(bigint) 2 /* 79: ToolContext < ToolContext: superclass init_table position */},
+  {(bigint) 2 /* 78: ToolContext < ToolContext: superclass init_table position */},
   {(bigint) mmloader___ToolContext___error_count},
   {(bigint) mmloader___ToolContext___warning_count},
   {(bigint) mmloader___ToolContext___log_directory},
@@ -137450,13 +136939,13 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   /* ./syntax//syntax.nit:98 */
   REGB0 = TAG_Bool(false);
   ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:99 */
+  /* ./mmloader.nit:98 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:102 */
+  /* ./mmloader.nit:101 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:105 */
+  /* ./mmloader.nit:104 */
   if (!once_value_8) {
     fra.me.REG[2] = BOX_NativeString("logs");
     REGB0 = TAG_Int(4);
@@ -137466,22 +136955,22 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   } else fra.me.REG[2] = once_value_8;
   fra.me.REG[2] = fra.me.REG[2];
   ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:108 */
+  /* ./mmloader.nit:107 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:109 */
+  /* ./mmloader.nit:108 */
   fra.me.REG[2] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
   ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:167 */
+  /* ./mmloader.nit:166 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:170 */
+  /* ./mmloader.nit:169 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:173 */
+  /* ./mmloader.nit:172 */
   fra.me.REG[2] = NEW_OptionContext_opts___OptionContext___init();
   ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:176 */
+  /* ./mmloader.nit:175 */
   if (!once_value_9) {
     fra.me.REG[2] = BOX_NativeString("Show warnings");
     REGB0 = TAG_Int(13);
@@ -137512,7 +137001,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:179 */
+  /* ./mmloader.nit:178 */
   if (!once_value_12) {
     fra.me.REG[1] = BOX_NativeString("Set include path for loaders (may be used more than once)");
     REGB0 = TAG_Int(57);
@@ -137543,7 +137032,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:182 */
+  /* ./mmloader.nit:181 */
   if (!once_value_15) {
     fra.me.REG[2] = BOX_NativeString("Generate various log files");
     REGB0 = TAG_Int(26);
@@ -137565,7 +137054,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:185 */
+  /* ./mmloader.nit:184 */
   if (!once_value_17) {
     fra.me.REG[1] = BOX_NativeString("Directory where to generate log files");
     REGB0 = TAG_Int(37);
@@ -137587,7 +137076,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionString_opts___OptionString___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:188 */
+  /* ./mmloader.nit:187 */
   if (!once_value_19) {
     fra.me.REG[2] = BOX_NativeString("Stop after meta-model processing");
     REGB0 = TAG_Int(32);
@@ -137609,7 +137098,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:191 */
+  /* ./mmloader.nit:190 */
   if (!once_value_21) {
     fra.me.REG[1] = BOX_NativeString("Only proceed to parse step of loaders");
     REGB0 = TAG_Int(37);
@@ -137631,7 +137120,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:194 */
+  /* ./mmloader.nit:193 */
   if (!once_value_23) {
     fra.me.REG[2] = BOX_NativeString("Show Help (This screen)");
     REGB0 = TAG_Int(23);
@@ -137671,7 +137160,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:197 */
+  /* ./mmloader.nit:196 */
   if (!once_value_27) {
     fra.me.REG[1] = BOX_NativeString("Show version and exit");
     REGB0 = TAG_Int(21);
@@ -137693,7 +137182,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:200 */
+  /* ./mmloader.nit:199 */
   if (!once_value_29) {
     fra.me.REG[2] = BOX_NativeString("Verbose");
     REGB0 = TAG_Int(7);
@@ -137724,7 +137213,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:203 */
+  /* ./mmloader.nit:202 */
   if (!once_value_32) {
     fra.me.REG[1] = BOX_NativeString("Stop on first error");
     REGB0 = TAG_Int(19);
@@ -137746,7 +137235,7 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:206 */
+  /* ./mmloader.nit:205 */
   if (!once_value_34) {
     fra.me.REG[2] = BOX_NativeString("Do not use color to display errors and warnings");
     REGB0 = TAG_Int(47);
@@ -137768,13 +137257,13 @@ void INIT_ATTRIBUTES__mmloader___ToolContext(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:209 */
+  /* ./mmloader.nit:208 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:292 */
+  /* ./mmloader.nit:291 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:359 */
+  /* ./mmloader.nit:358 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[1];
   /* ./metamodel//abstractmetamodel.nit:30 */
@@ -138121,11 +137610,9 @@ const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
   {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) 0 /* 20: ModuleLoader < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ModuleLoader < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138154,7 +137641,9 @@ const classtable_elt_t VFT_mmloader___ModuleLoader[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) 1 /* 47: ModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) 155 /* 48: VT ModuleLoader::MODULE : id of MMModule */},
+  {(bigint) 4 /* 49: VT ModuleLoader::MODULE : color of MMModule */},
   {(bigint) mmloader___ModuleLoader___file_type},
   {(bigint) mmloader___ModuleLoader___try_to_load_dir},
   {(bigint) mmloader___ModuleLoader___can_handle},
@@ -138215,15 +137704,13 @@ val_t NEW_ModuleLoader_mmloader___ModuleLoader___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[101] = {
-  {(bigint) 2143 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[99] = {
+  {(bigint) 2159 /* 0: Identity */},
   {(bigint) 23 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcModule" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcModule < Object: superclass typecheck marker */},
-  {(bigint) 147 /* 4: MMSrcModule < MMModule: superclass typecheck marker */},
-  {(bigint) 2143 /* 5: MMSrcModule < MMSrcModule: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 155 /* 4: MMSrcModule < MMModule: superclass typecheck marker */},
+  {(bigint) 2159 /* 5: MMSrcModule < MMSrcModule: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138236,7 +137723,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[101] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSrcModule < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSrcModule < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138274,7 +137761,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[101] = {
   {(bigint) metamodel___inheritance___MMModule___import_local_classes},
   {(bigint) metamodel___static_type___MMModule___type_none},
   {(bigint) metamodel___static_type___MMModule___type_bool},
-  {(bigint) 1 /* 58: MMSrcModule < MMModule: superclass init_table position */},
+  {(bigint) 1 /* 56: MMSrcModule < MMModule: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMModule___context},
   {(bigint) metamodel___abstractmetamodel___MMModule___name},
   {(bigint) metamodel___abstractmetamodel___MMModule___full_name},
@@ -138310,7 +137797,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcModule[101] = {
   {(bigint) syntax___MMSrcModule___process_syntax},
   {(bigint) syntax___mmbuilder___MMSrcModule___do_mmbuilder},
   {(bigint) syntax___mmbuilder___MMSrcModule___process_default_classes},
-  {(bigint) 2 /* 94: MMSrcModule < MMSrcModule: superclass init_table position */},
+  {(bigint) 2 /* 92: MMSrcModule < MMSrcModule: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcModule___clear_ast},
   {(bigint) syntax___syntax_base___MMSrcModule___node},
   {(bigint) syntax___syntax_base___MMSrcModule___src_local_classes},
@@ -138392,7 +137879,7 @@ void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcModule(val_t p0){
   /* ./metamodel//abstractmetamodel.nit:159 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___abstractmetamodel___MMModule_____atis_extern_hybrid(fra.me.REG[0]) = REGB0;
-  /* ./compiling//table_computation.nit:395 */
+  /* ./compiling//table_computation.nit:398 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___MMModule____local_table(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -138539,16 +138026,14 @@ val_t NEW_MMSrcModule_syntax___syntax_base___MMSrcModule___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[5];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
-  {(bigint) 2823 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[129] = {
+  {(bigint) 2843 /* 0: Identity */},
   {(bigint) 30 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcLocalClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcLocalClass < Object: superclass typecheck marker */},
-  {(bigint) 155 /* 4: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
-  {(bigint) 2175 /* 5: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
-  {(bigint) 2823 /* 6: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 163 /* 4: MMSrcLocalClass < MMLocalClass: superclass typecheck marker */},
+  {(bigint) 2191 /* 5: MMSrcLocalClass < MMConcreteClass: superclass typecheck marker */},
+  {(bigint) 2843 /* 6: MMSrcLocalClass < MMSrcLocalClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138560,7 +138045,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSrcLocalClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSrcLocalClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138592,6 +138077,8 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
   {(bigint) abstracttool___MMLocalClass___dump_properties},
   {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor},
   {(bigint) syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor},
+  {(bigint) primitive_info___MMLocalClass___primitive_info},
+  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) metamodel___genericity___MMLocalClass___get_formal},
   {(bigint) metamodel___genericity___MMLocalClass___register_formal},
   {(bigint) metamodel___genericity___MMLocalClass___get_instantiate_type},
@@ -138647,8 +138134,6 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
   {(bigint) metamodel___abstractmetamodel___MMLocalClass___total_order_compare},
   {(bigint) metamodel___virtualtype___MMLocalClass___virtual_type},
   {(bigint) metamodel___virtualtype___MMLocalClass___select_virtual_type},
-  {(bigint) primitive_info___MMLocalClass___primitive_info},
-  {(bigint) primitive_info___MMLocalClass___primitive_ctypes},
   {(bigint) native_interface___frontier___MMLocalClass___compile_defaut_extern_type},
   {(bigint) compiling___icode_generator___MMLocalClass___generate_icode_file},
   {(bigint) compiling___compiling_base___MMLocalClass___cname},
@@ -138663,10 +138148,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
   {(bigint) compiling___table_computation___MMConcreteClass___class_layout},
   {(bigint) compiling___table_computation___MMConcreteClass___instance_layout},
   {(bigint) compiling___table_computation___MMConcreteClass___build_layout_in},
-  {(bigint) 2 /* 123: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
+  {(bigint) 2 /* 121: MMSrcLocalClass < MMConcreteClass: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MMSrcLocalClass___process_default_constructors},
   {(bigint) syntax___mmbuilder___MMSrcLocalClass___add_src_local_property},
-  {(bigint) 3 /* 126: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
+  {(bigint) 3 /* 124: MMSrcLocalClass < MMSrcLocalClass: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcLocalClass___node},
   {(bigint) syntax___syntax_base___MMSrcLocalClass___formal_dict},
   {(bigint) syntax___syntax_base___MMSrcLocalClass___src_local_properties},
@@ -138674,26 +138159,26 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcLocalClass[131] = {
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute MMSrcLocalClass::_types */
-/* 3: Attribute MMSrcLocalClass::_formals_types */
-/* 4: Attribute MMSrcLocalClass::_direct_parents */
-/* 5: Attribute MMSrcLocalClass::_computing_super */
-/* 6: Attribute MMSrcLocalClass::_are_global_properties_inherited */
-/* 7: Attribute MMSrcLocalClass::_base_type_cache */
-/* 8: Attribute MMSrcLocalClass::_ancestors */
-/* 9: Attribute MMSrcLocalClass::_name */
-/* 10: Attribute MMSrcLocalClass::_arity */
-/* 11: Attribute MMSrcLocalClass::_mmmodule */
-/* 12: Attribute MMSrcLocalClass::_global */
-/* 13: Attribute MMSrcLocalClass::_crhe */
-/* 14: Attribute MMSrcLocalClass::_cshe */
-/* 15: Attribute MMSrcLocalClass::_che */
-/* 16: Attribute MMSrcLocalClass::_local_property_by_global */
-/* 17: Attribute MMSrcLocalClass::_global_properties */
-/* 18: Attribute MMSrcLocalClass::_local_local_properties */
-/* 19: Attribute MMSrcLocalClass::_properties_by_name */
-/* 20: Attribute MMSrcLocalClass::_primitive_info_cache */
-/* 21: Attribute MMSrcLocalClass::_primitive_info_b */
+/* 2: Attribute MMSrcLocalClass::_primitive_info_cache */
+/* 3: Attribute MMSrcLocalClass::_primitive_info_b */
+/* 4: Attribute MMSrcLocalClass::_types */
+/* 5: Attribute MMSrcLocalClass::_formals_types */
+/* 6: Attribute MMSrcLocalClass::_direct_parents */
+/* 7: Attribute MMSrcLocalClass::_computing_super */
+/* 8: Attribute MMSrcLocalClass::_are_global_properties_inherited */
+/* 9: Attribute MMSrcLocalClass::_base_type_cache */
+/* 10: Attribute MMSrcLocalClass::_ancestors */
+/* 11: Attribute MMSrcLocalClass::_name */
+/* 12: Attribute MMSrcLocalClass::_arity */
+/* 13: Attribute MMSrcLocalClass::_mmmodule */
+/* 14: Attribute MMSrcLocalClass::_global */
+/* 15: Attribute MMSrcLocalClass::_crhe */
+/* 16: Attribute MMSrcLocalClass::_cshe */
+/* 17: Attribute MMSrcLocalClass::_che */
+/* 18: Attribute MMSrcLocalClass::_local_property_by_global */
+/* 19: Attribute MMSrcLocalClass::_global_properties */
+/* 20: Attribute MMSrcLocalClass::_local_local_properties */
+/* 21: Attribute MMSrcLocalClass::_properties_by_name */
 /* 22: Attribute MMSrcLocalClass::_init_var_iroutine */
 /* 23: Attribute MMSrcLocalClass::_checknew_iroutine */
 /* 24: Attribute MMSrcLocalClass::_new_instance_iroutine */
@@ -138736,15 +138221,21 @@ void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass(val_t p0){
   /* ./metamodel//genericity.nit:55 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___genericity___MMLocalClass____formals_types(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:65 */
+  /* ./metamodel//inheritance.nit:82 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_metamodel___inheritance___MMLocalClass____direct_parents(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./metamodel//inheritance.nit:69 */
+  /* ./metamodel//inheritance.nit:86 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____computing_super(fra.me.REG[0]) = REGB0;
-  /* ./metamodel//inheritance.nit:116 */
+  /* ./metamodel//inheritance.nit:133 */
   REGB0 = TAG_Bool(false);
   ATTR_metamodel___inheritance___MMLocalClass____are_global_properties_inherited(fra.me.REG[0]) = REGB0;
+  /* ./primitive_info.nit:25 */
+  fra.me.REG[1] = NIT_NULL;
+  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./primitive_info.nit:29 */
+  REGB0 = TAG_Bool(false);
+  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
   /* ./compiling//table_computation.nit:90 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___MMConcreteClass____class_layout(fra.me.REG[0]) = fra.me.REG[1];
@@ -138760,12 +138251,6 @@ void INIT_ATTRIBUTES__syntax___syntax_base___MMSrcLocalClass(val_t p0){
   /* ./program.nit:234 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_program___MMLocalClass____new_instance_iroutine(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./primitive_info.nit:25 */
-  fra.me.REG[1] = NIT_NULL;
-  ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./primitive_info.nit:29 */
-  REGB0 = TAG_Bool(false);
-  ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_syntax___syntax_base___MMSrcLocalClass(void)
@@ -138859,6 +138344,11 @@ void CHECKNEW_syntax___syntax_base___MMSrcLocalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_are_global_properties_inherited", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_compiling___table_computation___MMConcreteClass____class_layout(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -138874,11 +138364,6 @@ void CHECKNEW_syntax___syntax_base___MMSrcLocalClass(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_new_instance_iroutine", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_primitive_info___MMLocalClass____primitive_info_b(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_primitive_info_b", LOCATE_nitc, 0);
-  }
   stack_frame_head = fra.me.prev;
 }
 val_t NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(val_t p0, val_t p1, val_t p2, val_t p3){
@@ -138908,16 +138393,14 @@ val_t NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[77] = {
-  {(bigint) 2827 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[75] = {
+  {(bigint) 2847 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcAttribute" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcAttribute < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2179 /* 5: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
-  {(bigint) 2827 /* 6: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMSrcAttribute < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2195 /* 5: MMSrcAttribute < MMAttribute: superclass typecheck marker */},
+  {(bigint) 2847 /* 6: MMSrcAttribute < MMSrcAttribute: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -138929,7 +138412,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSrcAttribute < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSrcAttribute < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -138965,7 +138448,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[77] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMSrcAttribute < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -138981,10 +138464,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcAttribute[77] = {
   {(bigint) compiling___compiling_base___MMLocalProperty___cname},
   {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
   {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine},
-  {(bigint) 2 /* 72: MMSrcAttribute < MMAttribute: superclass init_table position */},
+  {(bigint) 2 /* 70: MMSrcAttribute < MMAttribute: superclass init_table position */},
   {(bigint) syntax___icode_generation___MMSrcAttribute___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcAttribute___generate_iroutine},
-  {(bigint) 3 /* 75: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
+  {(bigint) 3 /* 73: MMSrcAttribute < MMSrcAttribute: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcAttribute___init},
 };
 /* 0: Pointer to the classtable */
@@ -139087,16 +138570,14 @@ val_t NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[103] = {
-  {(bigint) 2819 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[101] = {
+  {(bigint) 2839 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMSrcMethod < MMSrcMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMSrcMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMSrcMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMSrcMethod < MMSrcMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139108,7 +138589,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[103] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSrcMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSrcMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139144,7 +138625,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[103] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMSrcMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMSrcMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -139173,10 +138654,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[103] = {
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMSrcMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMSrcMethod < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
@@ -139190,7 +138671,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcMethod[103] = {
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMSrcMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMSrcMethod < MMSrcMethod: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -139290,17 +138771,15 @@ val_t NEW_MMSrcMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[105] = {
-  {(bigint) 3147 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[103] = {
+  {(bigint) 3199 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMAttrImplementationMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMAttrImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMAttrImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMAttrImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMAttrImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3147 /* 7: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMAttrImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMAttrImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMAttrImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 3199 /* 7: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139311,7 +138790,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[105
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMAttrImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMAttrImplementationMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139347,7 +138826,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[105
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMAttrImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMAttrImplementationMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -139376,10 +138855,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[105
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMAttrImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMAttrImplementationMethod < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
@@ -139393,8 +138872,8 @@ const classtable_elt_t VFT_syntax___syntax_base___MMAttrImplementationMethod[105
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMAttrImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 103: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMAttrImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 101: MMAttrImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
@@ -139497,18 +138976,16 @@ val_t NEW_MMAttrImplementationMethod_syntax___syntax_base___MMAttrImplementation
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[107] = {
-  {(bigint) 3503 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[105] = {
+  {(bigint) 3547 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMReadImplementationMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMReadImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3147 /* 7: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 3503 /* 8: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMReadImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMReadImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMReadImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 3199 /* 7: MMReadImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 3547 /* 8: MMReadImplementationMethod < MMReadImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139518,7 +138995,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[107
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMReadImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMReadImplementationMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139554,7 +139031,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[107
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMReadImplementationMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -139583,10 +139060,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[107
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMReadImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMReadImplementationMethod < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
@@ -139600,10 +139077,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMReadImplementationMethod[107
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 103: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMReadImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 101: MMReadImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 105: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
+  {(bigint) 5 /* 103: MMReadImplementationMethod < MMReadImplementationMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMReadImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
@@ -139706,18 +139183,16 @@ val_t NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementation
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[107] = {
-  {(bigint) 3499 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[105] = {
+  {(bigint) 3543 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMWriteImplementationMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMWriteImplementationMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3147 /* 7: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
-  {(bigint) 3499 /* 8: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMWriteImplementationMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMWriteImplementationMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMWriteImplementationMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 3199 /* 7: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass typecheck marker */},
+  {(bigint) 3543 /* 8: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139727,7 +139202,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMWriteImplementationMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMWriteImplementationMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139763,7 +139238,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMWriteImplementationMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -139792,10 +139267,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) metamodel___static_type___MMMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMWriteImplementationMethod < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMSrcMethod___is_extern},
@@ -139809,10 +139284,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMWriteImplementationMethod[10
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 103: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMWriteImplementationMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 101: MMWriteImplementationMethod < MMAttrImplementationMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMAttrImplementationMethod___init},
-  {(bigint) 5 /* 105: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
+  {(bigint) 5 /* 103: MMWriteImplementationMethod < MMWriteImplementationMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMWriteImplementationMethod___init},
 };
 /* 0: Pointer to the classtable */
@@ -139915,17 +139390,15 @@ val_t NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementati
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[106] = {
-  {(bigint) 3143 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[104] = {
+  {(bigint) 3195 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMMethSrcMethod" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMMethSrcMethod < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3143 /* 7: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMMethSrcMethod < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMMethSrcMethod < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMMethSrcMethod < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 3195 /* 7: MMMethSrcMethod < MMMethSrcMethod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -139936,7 +139409,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[106] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMMethSrcMethod < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMMethSrcMethod < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -139972,7 +139445,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[106] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMMethSrcMethod < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -140001,10 +139474,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[106] = {
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMMethSrcMethod < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMMethSrcMethod < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
@@ -140018,8 +139491,8 @@ const classtable_elt_t VFT_syntax___syntax_base___MMMethSrcMethod[106] = {
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 103: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMMethSrcMethod < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 101: MMMethSrcMethod < MMMethSrcMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
 };
@@ -140166,16 +139639,14 @@ val_t NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[76] = {
-  {(bigint) 2815 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[74] = {
+  {(bigint) 2835 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcTypeProperty" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcTypeProperty < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2127 /* 5: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
-  {(bigint) 2815 /* 6: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMSrcTypeProperty < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2143 /* 5: MMSrcTypeProperty < MMTypeProperty: superclass typecheck marker */},
+  {(bigint) 2835 /* 6: MMSrcTypeProperty < MMSrcTypeProperty: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140187,7 +139658,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[76] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMSrcTypeProperty < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMSrcTypeProperty < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140223,7 +139694,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[76] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMSrcTypeProperty < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -140238,10 +139709,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMSrcTypeProperty[76] = {
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___init},
   {(bigint) compiling___compiling_base___MMLocalProperty___cname},
   {(bigint) compiling___compiling_base___MMLocalProperty___super_meth_call},
-  {(bigint) 2 /* 71: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
+  {(bigint) 2 /* 69: MMSrcTypeProperty < MMTypeProperty: superclass init_table position */},
   {(bigint) metamodel___virtualtype___MMTypeProperty___stype_for},
   {(bigint) metamodel___virtualtype___MMTypeProperty___real_stype_for},
-  {(bigint) 3 /* 74: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
+  {(bigint) 3 /* 72: MMSrcTypeProperty < MMSrcTypeProperty: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMSrcTypeProperty___init},
 };
 /* 0: Pointer to the classtable */
@@ -140352,18 +139823,16 @@ val_t NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[111] = {
-  {(bigint) 3507 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[109] = {
+  {(bigint) 3551 /* 0: Identity */},
   {(bigint) 21 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMImplicitInit" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMImplicitInit < Object: superclass typecheck marker */},
-  {(bigint) 151 /* 4: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
-  {(bigint) 2163 /* 5: MMImplicitInit < MMMethod: superclass typecheck marker */},
-  {(bigint) 2819 /* 6: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
-  {(bigint) 3143 /* 7: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
-  {(bigint) 3507 /* 8: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 159 /* 4: MMImplicitInit < MMLocalProperty: superclass typecheck marker */},
+  {(bigint) 2179 /* 5: MMImplicitInit < MMMethod: superclass typecheck marker */},
+  {(bigint) 2839 /* 6: MMImplicitInit < MMSrcMethod: superclass typecheck marker */},
+  {(bigint) 3195 /* 7: MMImplicitInit < MMMethSrcMethod: superclass typecheck marker */},
+  {(bigint) 3551 /* 8: MMImplicitInit < MMImplicitInit: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140373,7 +139842,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[111] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MMImplicitInit < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MMImplicitInit < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140409,7 +139878,7 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[111] = {
   {(bigint) metamodel___static_type___MMLocalProperty___signature},
   {(bigint) metamodel___static_type___MMLocalProperty___signature__eq},
   {(bigint) metamodel___static_type___MMLocalProperty___signature_for},
-  {(bigint) 1 /* 56: MMImplicitInit < MMLocalProperty: superclass init_table position */},
+  {(bigint) 1 /* 54: MMImplicitInit < MMLocalProperty: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___name},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___local_class},
   {(bigint) metamodel___abstractmetamodel___MMLocalProperty___global},
@@ -140438,10 +139907,10 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[111] = {
   {(bigint) native_interface___ni_metamodel___MMMethod___cparams},
   {(bigint) native_interface___ni_metamodel___MMMethod___out_csignature},
   {(bigint) compiling___icode_generator___MMMethod___generate_icode},
-  {(bigint) syntax___mmbuilder___MMMethod___default_extern_name},
-  {(bigint) syntax___mmbuilder___MMMethod___friendly_extern_name},
+  {(bigint) primitive_info___MMMethod___default_extern_name},
+  {(bigint) primitive_info___MMMethod___friendly_extern_name},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___explicit_casts},
-  {(bigint) 2 /* 88: MMImplicitInit < MMMethod: superclass init_table position */},
+  {(bigint) 2 /* 86: MMImplicitInit < MMMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_intern},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_abstract},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___is_extern},
@@ -140455,11 +139924,11 @@ const classtable_elt_t VFT_syntax___syntax_base___MMImplicitInit[111] = {
   {(bigint) syntax___icode_generation___MMSrcMethod___iroutine__eq},
   {(bigint) syntax___icode_generation___MMSrcMethod___generate_iroutine},
   {(bigint) syntax___icode_generation___MMImplicitInit___inner_generate_iroutine},
-  {(bigint) 3 /* 102: MMImplicitInit < MMSrcMethod: superclass init_table position */},
-  {(bigint) 4 /* 103: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
+  {(bigint) 3 /* 100: MMImplicitInit < MMSrcMethod: superclass init_table position */},
+  {(bigint) 4 /* 101: MMImplicitInit < MMMethSrcMethod: superclass init_table position */},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___extern_name__eq},
   {(bigint) syntax___syntax_base___MMMethSrcMethod___init},
-  {(bigint) 5 /* 106: MMImplicitInit < MMImplicitInit: superclass init_table position */},
+  {(bigint) 5 /* 104: MMImplicitInit < MMImplicitInit: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MMImplicitInit___super_init},
   {(bigint) syntax___syntax_base___MMImplicitInit___unassigned_attributes},
   {(bigint) syntax___syntax_base___MMImplicitInit___super_inits},
@@ -140499,7 +139968,7 @@ void INIT_ATTRIBUTES__syntax___syntax_base___MMImplicitInit(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:279 */
+  /* ./syntax//mmbuilder.nit:297 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[1];
   /* ./syntax//syntax_base.nit:192 */
@@ -140624,15 +140093,13 @@ val_t NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___VarVariable[59] = {
-  {(bigint) 315 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___VarVariable[57] = {
+  {(bigint) 323 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "VarVariable" /* 2: Class Name */},
   {(bigint) 3 /* 3: VarVariable < Object: superclass typecheck marker */},
   {(bigint) 19 /* 4: VarVariable < Variable: superclass typecheck marker */},
-  {(bigint) 315 /* 5: VarVariable < VarVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 323 /* 5: VarVariable < VarVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140645,7 +140112,7 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: VarVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: VarVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140675,14 +140142,14 @@ const classtable_elt_t VFT_syntax___syntax_base___VarVariable[59] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___flow___VarVariable___must_be_set},
-  {(bigint) 0 /* 50: VarVariable < Variable: superclass init_table position */},
+  {(bigint) 0 /* 48: VarVariable < Variable: superclass init_table position */},
   {(bigint) syntax___syntax_base___Variable___name},
   {(bigint) syntax___syntax_base___Variable___decl},
   {(bigint) syntax___syntax_base___Variable___stype},
   {(bigint) syntax___syntax_base___Variable___stype__eq},
   {(bigint) syntax___syntax_base___VarVariable___kind},
   {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 57: VarVariable < VarVariable: superclass init_table position */},
+  {(bigint) 2 /* 55: VarVariable < VarVariable: superclass init_table position */},
   {(bigint) syntax___syntax_base___VarVariable___init},
 };
 /* 0: Pointer to the classtable */
@@ -140752,15 +140219,13 @@ val_t NEW_VarVariable_syntax___syntax_base___VarVariable___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[59] = {
-  {(bigint) 2075 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[57] = {
+  {(bigint) 2087 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ParamVariable" /* 2: Class Name */},
   {(bigint) 3 /* 3: ParamVariable < Object: superclass typecheck marker */},
   {(bigint) 19 /* 4: ParamVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2075 /* 5: ParamVariable < ParamVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2087 /* 5: ParamVariable < ParamVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140773,7 +140238,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ParamVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ParamVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140803,14 +140268,14 @@ const classtable_elt_t VFT_syntax___syntax_base___ParamVariable[59] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 50: ParamVariable < Variable: superclass init_table position */},
+  {(bigint) 0 /* 48: ParamVariable < Variable: superclass init_table position */},
   {(bigint) syntax___syntax_base___Variable___name},
   {(bigint) syntax___syntax_base___Variable___decl},
   {(bigint) syntax___syntax_base___Variable___stype},
   {(bigint) syntax___syntax_base___Variable___stype__eq},
   {(bigint) syntax___syntax_base___ParamVariable___kind},
   {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 57: ParamVariable < ParamVariable: superclass init_table position */},
+  {(bigint) 2 /* 55: ParamVariable < ParamVariable: superclass init_table position */},
   {(bigint) syntax___syntax_base___ParamVariable___init},
 };
 /* 0: Pointer to the classtable */
@@ -140880,15 +140345,13 @@ val_t NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[59] = {
-  {(bigint) 2331 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[57] = {
+  {(bigint) 2359 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AutoVariable" /* 2: Class Name */},
   {(bigint) 3 /* 3: AutoVariable < Object: superclass typecheck marker */},
   {(bigint) 19 /* 4: AutoVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2331 /* 5: AutoVariable < AutoVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2359 /* 5: AutoVariable < AutoVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -140901,7 +140364,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[59] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: AutoVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: AutoVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -140931,14 +140394,14 @@ const classtable_elt_t VFT_syntax___syntax_base___AutoVariable[59] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 50: AutoVariable < Variable: superclass init_table position */},
+  {(bigint) 0 /* 48: AutoVariable < Variable: superclass init_table position */},
   {(bigint) syntax___syntax_base___Variable___name},
   {(bigint) syntax___syntax_base___Variable___decl},
   {(bigint) syntax___syntax_base___Variable___stype},
   {(bigint) syntax___syntax_base___Variable___stype__eq},
   {(bigint) syntax___syntax_base___AutoVariable___kind},
   {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 57: AutoVariable < AutoVariable: superclass init_table position */},
+  {(bigint) 2 /* 55: AutoVariable < AutoVariable: superclass init_table position */},
   {(bigint) syntax___syntax_base___AutoVariable___init},
 };
 /* 0: Pointer to the classtable */
@@ -141008,15 +140471,13 @@ val_t NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(val_t p0, val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[60] = {
-  {(bigint) 2311 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[58] = {
+  {(bigint) 2339 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClosureVariable" /* 2: Class Name */},
   {(bigint) 3 /* 3: ClosureVariable < Object: superclass typecheck marker */},
   {(bigint) 19 /* 4: ClosureVariable < Variable: superclass typecheck marker */},
-  {(bigint) 2311 /* 5: ClosureVariable < ClosureVariable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2339 /* 5: ClosureVariable < ClosureVariable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141029,7 +140490,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: ClosureVariable < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: ClosureVariable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141059,14 +140520,14 @@ const classtable_elt_t VFT_syntax___syntax_base___ClosureVariable[60] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) syntax___flow___Variable___must_be_set},
-  {(bigint) 0 /* 50: ClosureVariable < Variable: superclass init_table position */},
+  {(bigint) 0 /* 48: ClosureVariable < Variable: superclass init_table position */},
   {(bigint) syntax___syntax_base___Variable___name},
   {(bigint) syntax___syntax_base___Variable___decl},
   {(bigint) syntax___syntax_base___Variable___stype},
   {(bigint) syntax___syntax_base___Variable___stype__eq},
   {(bigint) syntax___syntax_base___ClosureVariable___kind},
   {(bigint) syntax___syntax_base___Variable___init},
-  {(bigint) 2 /* 57: ClosureVariable < ClosureVariable: superclass init_table position */},
+  {(bigint) 2 /* 55: ClosureVariable < ClosureVariable: superclass init_table position */},
   {(bigint) syntax___syntax_base___ClosureVariable___closure},
   {(bigint) syntax___syntax_base___ClosureVariable___init},
 };
@@ -141145,15 +140606,13 @@ val_t NEW_ClosureVariable_syntax___syntax_base___ClosureVariable___init(val_t p0
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[83] = {
-  {(bigint) 2343 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[81] = {
+  {(bigint) 2371 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbsSyntaxVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbsSyntaxVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: AbsSyntaxVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141166,7 +140625,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[83] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: AbsSyntaxVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: AbsSyntaxVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141195,12 +140654,12 @@ const classtable_elt_t VFT_syntax___syntax_base___AbsSyntaxVisitor[83] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: AbsSyntaxVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: AbsSyntaxVisitor < Visitor: superclass init_table position */},
   {(bigint) parser___parser_prod___Visitor___visit},
   {(bigint) parser___parser_prod___Visitor___enter_visit},
   {(bigint) parser___parser_prod___Visitor___current_node},
   {(bigint) parser___parser_prod___Visitor___init},
-  {(bigint) 2 /* 54: AbsSyntaxVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: AbsSyntaxVisitor < 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},
@@ -141310,17 +140769,15 @@ val_t NEW_AbsSyntaxVisitor_syntax___syntax_base___AbsSyntaxVisitor___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[99] = {
-  {(bigint) 3487 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[97] = {
+  {(bigint) 3527 /* 0: Identity */},
   {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbsAbsSendExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAbsAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAbsAbsSendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAbsAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAbsAbsSendExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAbsAbsSendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAbsAbsSendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAbsAbsSendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141331,7 +140788,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[99] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAbsAbsSendExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAbsAbsSendExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141373,7 +140830,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[99] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAbsAbsSendExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAbsAbsSendExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -141383,12 +140840,12 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[99] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAbsAbsSendExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAbsAbsSendExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAbsAbsSendExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AAbsAbsSendExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -141407,7 +140864,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsAbsSendExpr[99] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 96: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: AAbsAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsAbsSendExpr___prop_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___raw_arguments},
 };
@@ -141493,19 +140950,17 @@ val_t NEW_AAbsAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[105] = {
-  {(bigint) 3703 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[103] = {
+  {(bigint) 3739 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbsSendExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAbsSendExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAbsSendExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: AAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AAbsSendExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAbsSendExpr < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: AAbsSendExpr < AAbsSendExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAbsSendExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: AAbsSendExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AAbsSendExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAbsSendExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: AAbsSendExpr < AAbsSendExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141514,7 +140969,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[105] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAbsSendExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAbsSendExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141556,7 +141011,7 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[105] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAbsSendExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAbsSendExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -141566,12 +141021,12 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[105] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAbsSendExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAbsSendExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAbsSendExpr < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AAbsSendExpr < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -141590,13 +141045,13 @@ const classtable_elt_t VFT_syntax___syntax_base___AAbsSendExpr[105] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 96: AAbsSendExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: AAbsSendExpr < 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) 5 /* 102: AAbsSendExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 5 /* 100: AAbsSendExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
 };
@@ -141687,20 +141142,18 @@ val_t NEW_AAbsSendExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[105] = {
-  {(bigint) 3719 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[103] = {
+  {(bigint) 3751 /* 0: Identity */},
   {(bigint) 18 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASuperInitCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASuperInitCall < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASuperInitCall < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ASuperInitCall < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ASuperInitCall < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASuperInitCall < AExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3703 /* 9: ASuperInitCall < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ASuperInitCall < ASuperInitCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASuperInitCall < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ASuperInitCall < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ASuperInitCall < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASuperInitCall < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3739 /* 9: ASuperInitCall < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ASuperInitCall < ASuperInitCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -141708,7 +141161,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[105] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ASuperInitCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ASuperInitCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141750,7 +141203,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[105] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: ASuperInitCall < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: ASuperInitCall < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -141758,14 +141211,14 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[105] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___AExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 6 /* 70: ASuperInitCall < ASuperInitCall: superclass init_table position */},
+  {(bigint) 6 /* 68: ASuperInitCall < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ASuperInitCall < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: ASuperInitCall < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ASuperInitCall < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: ASuperInitCall < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
@@ -141784,13 +141237,13 @@ const classtable_elt_t VFT_syntax___syntax_base___ASuperInitCall[105] = {
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 4 /* 96: ASuperInitCall < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 4 /* 94: ASuperInitCall < 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) 5 /* 102: ASuperInitCall < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 5 /* 100: ASuperInitCall < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
 };
@@ -141881,28 +141334,26 @@ val_t NEW_ASuperInitCall_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[113] = {
-  {(bigint) 3755 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[111] = {
+  {(bigint) 3787 /* 0: Identity */},
   {(bigint) 20 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ASendReassignExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ASendReassignExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ASendReassignExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3487 /* 5: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ASendReassignExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ASendReassignExpr < AExpr: superclass typecheck marker */},
-  {(bigint) 3271 /* 8: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
-  {(bigint) 3703 /* 9: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
-  {(bigint) 3719 /* 10: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
-  {(bigint) 3747 /* 11: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
-  {(bigint) 3755 /* 12: ASendReassignExpr < ASendReassignExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ASendReassignExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3527 /* 5: ASendReassignExpr < AAbsAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ASendReassignExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ASendReassignExpr < AExpr: superclass typecheck marker */},
+  {(bigint) 3311 /* 8: ASendReassignExpr < AReassignFormExpr: superclass typecheck marker */},
+  {(bigint) 3739 /* 9: ASendReassignExpr < AAbsSendExpr: superclass typecheck marker */},
+  {(bigint) 3751 /* 10: ASendReassignExpr < ASuperInitCall: superclass typecheck marker */},
+  {(bigint) 3779 /* 11: ASendReassignExpr < ASendExpr: superclass typecheck marker */},
+  {(bigint) 3787 /* 12: ASendReassignExpr < ASendReassignExpr: 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) 5 /* 20: ASendReassignExpr < Object: superclass init_table position */},
+  {(bigint) 5 /* 18: ASendReassignExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -141944,7 +141395,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[113] = {
   {(bigint) parser___parser_prod___ASendExpr___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ASendExpr___visit_all},
-  {(bigint) 4 /* 62: ASendReassignExpr < ANode: superclass init_table position */},
+  {(bigint) 4 /* 60: ASendReassignExpr < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -141952,39 +141403,39 @@ const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[113] = {
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ASendExpr___after_typing},
   {(bigint) syntax___typing___ASuperInitCall___register_super_init_call},
-  {(bigint) 0 /* 70: ASendReassignExpr < ASuperInitCall: superclass init_table position */},
+  {(bigint) 0 /* 68: ASendReassignExpr < ASuperInitCall: superclass init_table position */},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 3 /* 72: ASendReassignExpr < Prod: superclass init_table position */},
+  {(bigint) 3 /* 70: ASendReassignExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 6 /* 77: ASendReassignExpr < AExpr: superclass init_table position */},
+  {(bigint) 6 /* 75: ASendReassignExpr < 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},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 9 /* 84: ASendReassignExpr < ASendReassignExpr: superclass init_table position */},
+  {(bigint) 9 /* 82: ASendReassignExpr < ASendReassignExpr: superclass init_table position */},
   {(bigint) syntax___typing___ASendReassignExpr___read_prop},
   {0} /* Class Hole :( */,
   {(bigint) syntax___typing___AReassignFormExpr___do_rvalue_typing},
   {(bigint) syntax___typing___AReassignFormExpr___assign_method},
-  {(bigint) 8 /* 89: ASendReassignExpr < AReassignFormExpr: superclass init_table position */},
+  {(bigint) 8 /* 87: ASendReassignExpr < AReassignFormExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_assign_op},
   {(bigint) parser___parser_nodes___AReassignFormExpr___n_value},
   {(bigint) syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in},
   {(bigint) syntax___typing___AAbsAbsSendExpr___compute_raw_arguments},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_signature},
   {(bigint) syntax___typing___AAbsAbsSendExpr___process_closures},
-  {(bigint) 2 /* 96: ASendReassignExpr < AAbsAbsSendExpr: superclass init_table position */},
+  {(bigint) 2 /* 94: ASendReassignExpr < 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 /* 102: ASendReassignExpr < AAbsSendExpr: superclass init_table position */},
+  {(bigint) 1 /* 100: ASendReassignExpr < AAbsSendExpr: superclass init_table position */},
   {(bigint) syntax___typing___AAbsSendExpr___prop},
   {(bigint) syntax___typing___AAbsSendExpr___return_type},
   {(bigint) syntax___typing___ASendExpr___name},
@@ -141992,7 +141443,7 @@ const classtable_elt_t VFT_syntax___syntax_base___ASendReassignExpr[113] = {
   {(bigint) syntax___typing___ASendExpr___closure_defs},
   {(bigint) parser___parser_prod___ASendExpr___empty_init},
   {(bigint) parser___parser_prod___ASendExpr___init_asendexpr},
-  {(bigint) 7 /* 110: ASendReassignExpr < ASendExpr: superclass init_table position */},
+  {(bigint) 7 /* 108: ASendReassignExpr < ASendExpr: superclass init_table position */},
   {(bigint) parser___parser_nodes___ASendExpr___n_expr},
   {(bigint) parser___parser_nodes___ASendExpr___n_closure_defs},
 };
@@ -142148,15 +141599,146 @@ val_t NEW_ASendReassignExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
-  {(bigint) 2323 /* 0: Identity */},
+const classtable_elt_t VFT_primitive_info___PrimitiveInfo[52] = {
+  {(bigint) 99 /* 0: Identity */},
+  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "PrimitiveInfo" /* 2: Class Name */},
+  {(bigint) 3 /* 3: PrimitiveInfo < Object: superclass typecheck marker */},
+  {(bigint) 99 /* 4: PrimitiveInfo < PrimitiveInfo: 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___time___Object___get_time},
+  {(bigint) 0 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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 /* 47: PrimitiveInfo < PrimitiveInfo: superclass init_table position */},
+  {(bigint) primitive_info___PrimitiveInfo___name},
+  {(bigint) primitive_info___PrimitiveInfo___tagged},
+  {(bigint) primitive_info___PrimitiveInfo___cname},
+  {(bigint) primitive_info___PrimitiveInfo___init},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute PrimitiveInfo::_name */
+/* 3: Attribute PrimitiveInfo::_tagged */
+/* 4: Attribute PrimitiveInfo::_cname */
+void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_primitive_info___PrimitiveInfo(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 5);
+  obj->vft = (classtable_elt_t*)VFT_primitive_info___PrimitiveInfo;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_primitive_info___PrimitiveInfo(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_primitive_info___PrimitiveInfo;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_tagged", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(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;
+  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 = 87;
+  fra.me.meth = LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  fra.me.REG[1] = p2;
+  /* ./primitive_info.nit:87 */
+  fra.me.REG[2] = NEW_primitive_info___PrimitiveInfo();
+  INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(fra.me.REG[2]);
+  primitive_info___PrimitiveInfo___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
+  CHECKNEW_primitive_info___PrimitiveInfo(fra.me.REG[2]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[56] = {
+  {(bigint) 2351 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CSHSorter" /* 2: Class Name */},
   {(bigint) 3 /* 3: CSHSorter < Object: superclass typecheck marker */},
-  {(bigint) 291 /* 4: CSHSorter < AbstractSorter: superclass typecheck marker */},
-  {(bigint) 2323 /* 5: CSHSorter < CSHSorter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 299 /* 4: CSHSorter < AbstractSorter: superclass typecheck marker */},
+  {(bigint) 2351 /* 5: CSHSorter < CSHSorter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142169,7 +141751,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: CSHSorter < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: CSHSorter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142198,14 +141780,14 @@ const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[58] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: CSHSorter < AbstractSorter: superclass init_table position */},
+  {(bigint) 1 /* 47: CSHSorter < AbstractSorter: superclass init_table position */},
   {(bigint) syntax___mmbuilder___CSHSorter___compare},
   {(bigint) standard___collection___sorter___AbstractSorter___sort},
   {(bigint) standard___collection___sorter___AbstractSorter___sub_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___quick_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___bubble_sort},
   {(bigint) standard___collection___sorter___AbstractSorter___init},
-  {(bigint) 2 /* 56: CSHSorter < CSHSorter: superclass init_table position */},
+  {(bigint) 2 /* 54: CSHSorter < CSHSorter: superclass init_table position */},
   {(bigint) syntax___mmbuilder___CSHSorter___init},
 };
 /* 0: Pointer to the classtable */
@@ -142247,12 +141829,12 @@ val_t NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init(void){
   int init_table[3] = {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 = 50;
   fra.me.meth = LOCATE_NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:32 */
+  /* ./syntax//mmbuilder.nit:50 */
   fra.me.REG[0] = NEW_syntax___mmbuilder___CSHSorter();
   INIT_ATTRIBUTES__syntax___mmbuilder___CSHSorter(fra.me.REG[0]);
   syntax___mmbuilder___CSHSorter___init(fra.me.REG[0], init_table);
@@ -142260,15 +141842,13 @@ val_t NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[61] = {
-  {(bigint) 2147 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[59] = {
+  {(bigint) 2163 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MMSrcAncestor" /* 2: Class Name */},
   {(bigint) 3 /* 3: MMSrcAncestor < Object: superclass typecheck marker */},
-  {(bigint) 187 /* 4: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
-  {(bigint) 2147 /* 5: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 195 /* 4: MMSrcAncestor < MMAncestor: superclass typecheck marker */},
+  {(bigint) 2163 /* 5: MMSrcAncestor < MMSrcAncestor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142281,7 +141861,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MMSrcAncestor < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MMSrcAncestor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142311,7 +141891,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) metamodel___inheritance___MMAncestor___add_in},
-  {(bigint) 0 /* 50: MMSrcAncestor < MMAncestor: superclass init_table position */},
+  {(bigint) 0 /* 48: MMSrcAncestor < MMAncestor: superclass init_table position */},
   {(bigint) metamodel___static_type___MMAncestor___stype__eq},
   {(bigint) metamodel___static_type___MMAncestor___stype},
   {(bigint) metamodel___static_type___MMAncestor___inheriter__eq},
@@ -142320,7 +141900,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MMSrcAncestor[61] = {
   {(bigint) metamodel___static_type___MMAncestor___is_specialisation},
   {(bigint) syntax___mmbuilder___MMSrcAncestor___local_class},
   {(bigint) metamodel___static_type___MMAncestor___init},
-  {(bigint) 2 /* 59: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
+  {(bigint) 2 /* 57: MMSrcAncestor < MMSrcAncestor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MMSrcAncestor___init},
 };
 /* 0: Pointer to the classtable */
@@ -142382,14 +141962,14 @@ val_t NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(val_t p0){
   int init_table[3] = {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 = 339;
   fra.me.meth = LOCATE_NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:317 */
+  /* ./syntax//mmbuilder.nit:339 */
   fra.me.REG[1] = NEW_syntax___mmbuilder___MMSrcAncestor();
   INIT_ATTRIBUTES__syntax___mmbuilder___MMSrcAncestor(fra.me.REG[1]);
   syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -142397,16 +141977,14 @@ 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[89] = {
-  {(bigint) 2975 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[87] = {
+  {(bigint) 3003 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassBuilderVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ClassBuilderVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: ClassBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2975 /* 6: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: ClassBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3003 /* 6: ClassBuilderVisitor < ClassBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142418,7 +141996,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ClassBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ClassBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142447,12 +142025,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[89] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ClassBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: ClassBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -142481,7 +142059,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassBuilderVisitor[89] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: ClassBuilderVisitor < ClassBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: 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},
@@ -142510,7 +142088,7 @@ 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;
-  /* ./syntax//mmbuilder.nit:331 */
+  /* ./syntax//mmbuilder.nit:353 */
   REGB0 = TAG_Int(0);
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
   /* ./parser//parser_prod.nit:66 */
@@ -142562,7 +142140,7 @@ val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(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 = 337;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -142571,7 +142149,7 @@ val_t NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:337 */
+  /* ./syntax//mmbuilder.nit:359 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___ClassBuilderVisitor();
   INIT_ATTRIBUTES__syntax___mmbuilder___ClassBuilderVisitor(fra.me.REG[2]);
   syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -142579,16 +142157,14 @@ 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[85] = {
-  {(bigint) 2971 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisitor[83] = {
+  {(bigint) 2999 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassSpecializationBuilderVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ClassSpecializationBuilderVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: ClassSpecializationBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2971 /* 6: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2999 /* 6: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142600,7 +142176,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ClassSpecializationBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142629,12 +142205,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassSpecializationBuilderVisito
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ClassSpecializationBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: ClassSpecializationBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -142663,7 +142239,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 /* 83: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: ClassSpecializationBuilderVisitor < ClassSpecializationBuilderVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassSpecializationBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -142729,7 +142305,7 @@ val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializa
   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 = 345;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -142738,7 +142314,7 @@ val_t NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializa
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:345 */
+  /* ./syntax//mmbuilder.nit:367 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___ClassSpecializationBuilderVisitor();
   INIT_ATTRIBUTES__syntax___mmbuilder___ClassSpecializationBuilderVisitor(fra.me.REG[2]);
   syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -142746,16 +142322,14 @@ 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[85] = {
-  {(bigint) 2979 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[83] = {
+  {(bigint) 3007 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassAncestorBuilder" /* 2: Class Name */},
   {(bigint) 3 /* 3: ClassAncestorBuilder < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: ClassAncestorBuilder < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2979 /* 6: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: ClassAncestorBuilder < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3007 /* 6: ClassAncestorBuilder < ClassAncestorBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142767,7 +142341,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ClassAncestorBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ClassAncestorBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142796,12 +142370,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ClassAncestorBuilder < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: ClassAncestorBuilder < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -142830,7 +142404,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassAncestorBuilder[85] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
+  {(bigint) 3 /* 81: ClassAncestorBuilder < ClassAncestorBuilder: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassAncestorBuilder___init},
 };
 /* 0: Pointer to the classtable */
@@ -142896,7 +142470,7 @@ val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___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 = 353;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -142905,7 +142479,7 @@ val_t NEW_ClassAncestorBuilder_syntax___mmbuilder___ClassAncestorBuilder___init(
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:353 */
+  /* ./syntax//mmbuilder.nit:375 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___ClassAncestorBuilder();
   INIT_ATTRIBUTES__syntax___mmbuilder___ClassAncestorBuilder(fra.me.REG[2]);
   syntax___mmbuilder___ClassAncestorBuilder___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -142913,16 +142487,14 @@ 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[85] = {
-  {(bigint) 2967 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[83] = {
+  {(bigint) 2995 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ClassVerifierVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ClassVerifierVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: ClassVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2967 /* 6: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: ClassVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2995 /* 6: ClassVerifierVisitor < ClassVerifierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -142934,7 +142506,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ClassVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ClassVerifierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -142963,12 +142535,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ClassVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: ClassVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -142997,7 +142569,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___ClassVerifierVisitor[85] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: ClassVerifierVisitor < ClassVerifierVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___ClassVerifierVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -143063,7 +142635,7 @@ val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___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 = 361;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -143072,7 +142644,7 @@ val_t NEW_ClassVerifierVisitor_syntax___mmbuilder___ClassVerifierVisitor___init(
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:361 */
+  /* ./syntax//mmbuilder.nit:383 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___ClassVerifierVisitor();
   INIT_ATTRIBUTES__syntax___mmbuilder___ClassVerifierVisitor(fra.me.REG[2]);
   syntax___mmbuilder___ClassVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -143080,16 +142652,14 @@ 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[85] = {
-  {(bigint) 2763 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[83] = {
+  {(bigint) 2787 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PropertyBuilderVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: PropertyBuilderVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: PropertyBuilderVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2763 /* 6: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2787 /* 6: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143101,7 +142671,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[85] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: PropertyBuilderVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: PropertyBuilderVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143130,12 +142700,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[85] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: PropertyBuilderVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: PropertyBuilderVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -143164,7 +142734,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyBuilderVisitor[85] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: PropertyBuilderVisitor < PropertyBuilderVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyBuilderVisitor___init},
 };
 /* 0: Pointer to the classtable */
@@ -143230,7 +142800,7 @@ val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___i
   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 = 372;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -143239,7 +142809,7 @@ val_t NEW_PropertyBuilderVisitor_syntax___mmbuilder___PropertyBuilderVisitor___i
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:372 */
+  /* ./syntax//mmbuilder.nit:394 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyBuilderVisitor();
   INIT_ATTRIBUTES__syntax___mmbuilder___PropertyBuilderVisitor(fra.me.REG[2]);
   syntax___mmbuilder___PropertyBuilderVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -143247,16 +142817,14 @@ 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[87] = {
-  {(bigint) 2759 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[85] = {
+  {(bigint) 2783 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "PropertyVerifierVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: PropertyVerifierVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: PropertyVerifierVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2759 /* 6: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2783 /* 6: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143268,7 +142836,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: PropertyVerifierVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: PropertyVerifierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143297,12 +142865,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: PropertyVerifierVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: PropertyVerifierVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -143331,7 +142899,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___PropertyVerifierVisitor[87] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: PropertyVerifierVisitor < PropertyVerifierVisitor: superclass init_table position */},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq},
   {(bigint) syntax___mmbuilder___PropertyVerifierVisitor___init},
@@ -143405,7 +142973,7 @@ val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor__
   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 = 385;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -143414,7 +142982,7 @@ val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor__
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:385 */
+  /* ./syntax//mmbuilder.nit:407 */
   fra.me.REG[2] = NEW_syntax___mmbuilder___PropertyVerifierVisitor();
   INIT_ATTRIBUTES__syntax___mmbuilder___PropertyVerifierVisitor(fra.me.REG[2]);
   syntax___mmbuilder___PropertyVerifierVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -143422,7 +142990,7 @@ val_t NEW_PropertyVerifierVisitor_syntax___mmbuilder___PropertyVerifierVisitor__
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[63] = {
+const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[61] = {
   {(bigint) 51 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SignatureBuilder" /* 2: Class Name */},
@@ -143439,11 +143007,9 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[63] = {
   {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) 0 /* 20: SignatureBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: SignatureBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143472,7 +143038,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___SignatureBuilder[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: SignatureBuilder < SignatureBuilder: superclass init_table position */},
+  {(bigint) 1 /* 47: SignatureBuilder < SignatureBuilder: superclass init_table position */},
   {(bigint) syntax___mmbuilder___SignatureBuilder___params},
   {(bigint) syntax___mmbuilder___SignatureBuilder___params__eq},
   {(bigint) syntax___mmbuilder___SignatureBuilder___untyped_params},
@@ -143508,24 +143074,24 @@ void INIT_ATTRIBUTES__syntax___mmbuilder___SignatureBuilder(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:395 */
+  /* ./syntax//mmbuilder.nit:417 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:398 */
+  /* ./syntax//mmbuilder.nit:420 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:401 */
+  /* ./syntax//mmbuilder.nit:423 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
-  /* ./syntax//mmbuilder.nit:404 */
+  /* ./syntax//mmbuilder.nit:426 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:407 */
+  /* ./syntax//mmbuilder.nit:429 */
   REGB0 = TAG_Bool(false);
   ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
-  /* ./syntax//mmbuilder.nit:409 */
+  /* ./syntax//mmbuilder.nit:431 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -143596,15 +143162,13 @@ 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[56] = {
-  {(bigint) 2107 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[54] = {
+  {(bigint) 2119 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MethidAccumulator" /* 2: Class Name */},
   {(bigint) 3 /* 3: MethidAccumulator < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: MethidAccumulator < Visitor: superclass typecheck marker */},
-  {(bigint) 2107 /* 5: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2119 /* 5: MethidAccumulator < MethidAccumulator: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143617,7 +143181,7 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: MethidAccumulator < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: MethidAccumulator < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143646,12 +143210,12 @@ const classtable_elt_t VFT_syntax___mmbuilder___MethidAccumulator[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: MethidAccumulator < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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 /* 54: MethidAccumulator < MethidAccumulator: superclass init_table position */},
+  {(bigint) 2 /* 52: MethidAccumulator < MethidAccumulator: superclass init_table position */},
   {(bigint) syntax___mmbuilder___MethidAccumulator___name},
 };
 /* 0: Pointer to the classtable */
@@ -143670,7 +143234,7 @@ 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;
-  /* ./syntax//mmbuilder.nit:1289 */
+  /* ./syntax//mmbuilder.nit:1249 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
   ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:66 */
@@ -143724,14 +143288,12 @@ val_t NEW_MethidAccumulator_parser___parser_prod___Visitor___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IRegister[60] = {
-  {(bigint) 203 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IRegister[58] = {
+  {(bigint) 211 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IRegister" /* 2: Class Name */},
   {(bigint) 3 /* 3: IRegister < Object: superclass typecheck marker */},
-  {(bigint) 203 /* 4: IRegister < IRegister: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 211 /* 4: IRegister < IRegister: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143745,7 +143307,7 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IRegister < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IRegister < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143782,7 +143344,7 @@ const classtable_elt_t VFT_icode___icode_base___IRegister[60] = {
   {(bigint) analysis___allocate_iregister_slots___IRegister___local_iroutine__eq},
   {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots},
   {(bigint) analysis___allocate_iregister_slots___IRegister___in_tag_slots__eq},
-  {(bigint) 1 /* 57: IRegister < IRegister: superclass init_table position */},
+  {(bigint) 1 /* 55: IRegister < IRegister: superclass init_table position */},
   {(bigint) icode___icode_base___IRegister___stype},
   {(bigint) icode___icode_base___IRegister___init},
 };
@@ -143875,14 +143437,14 @@ val_t NEW_IRegister_icode___icode_base___IRegister___init(val_t p0){
   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 = 29;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_NEW_IRegister_icode___icode_base___IRegister___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:29 */
+  /* ./icode//icode_base.nit:28 */
   fra.me.REG[1] = NEW_icode___icode_base___IRegister();
   INIT_ATTRIBUTES__icode___icode_base___IRegister(fra.me.REG[1]);
   icode___icode_base___IRegister___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -143890,14 +143452,12 @@ val_t NEW_IRegister_icode___icode_base___IRegister___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IEscapeMark[51] = {
-  {(bigint) 211 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IEscapeMark[49] = {
+  {(bigint) 219 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IEscapeMark" /* 2: Class Name */},
   {(bigint) 3 /* 3: IEscapeMark < Object: superclass typecheck marker */},
-  {(bigint) 211 /* 4: IEscapeMark < IEscapeMark: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 219 /* 4: IEscapeMark < IEscapeMark: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -143911,7 +143471,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[51] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IEscapeMark < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IEscapeMark < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -143940,7 +143500,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscapeMark[51] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: IEscapeMark < IEscapeMark: superclass init_table position */},
+  {(bigint) 1 /* 47: IEscapeMark < IEscapeMark: superclass init_table position */},
   {(bigint) icode___icode_base___IEscapeMark___init},
 };
 /* 0: Pointer to the classtable */
@@ -143994,14 +143554,12 @@ val_t NEW_IEscapeMark_icode___icode_base___IEscapeMark___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosureDecl[55] = {
-  {(bigint) 235 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IClosureDecl[53] = {
+  {(bigint) 243 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IClosureDecl" /* 2: Class Name */},
   {(bigint) 3 /* 3: IClosureDecl < Object: superclass typecheck marker */},
-  {(bigint) 235 /* 4: IClosureDecl < IClosureDecl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 243 /* 4: IClosureDecl < IClosureDecl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144015,7 +143573,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[55] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IClosureDecl < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IClosureDecl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144045,7 +143603,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDecl[55] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) analysis___icode_dump___IClosureDecl___dump},
-  {(bigint) 1 /* 50: IClosureDecl < IClosureDecl: superclass init_table position */},
+  {(bigint) 1 /* 48: IClosureDecl < IClosureDecl: superclass init_table position */},
   {(bigint) icode___icode_base___IClosureDecl___closure},
   {(bigint) icode___icode_base___IClosureDecl___default},
   {(bigint) icode___icode_base___IClosureDecl___default__eq},
@@ -144100,14 +143658,14 @@ val_t NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(val_t p0){
   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 = 47;
+  fra.me.line = 46;
   fra.me.meth = LOCATE_NEW_IClosureDecl_icode___icode_base___IClosureDecl___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:47 */
+  /* ./icode//icode_base.nit:46 */
   fra.me.REG[1] = NEW_icode___icode_base___IClosureDecl();
   INIT_ATTRIBUTES__icode___icode_base___IClosureDecl(fra.me.REG[1]);
   icode___icode_base___IClosureDecl___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -144115,14 +143673,12 @@ val_t NEW_IClosureDecl_icode___icode_base___IClosureDecl___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IRoutine[70] = {
-  {(bigint) 199 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IRoutine[68] = {
+  {(bigint) 207 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IRoutine" /* 2: Class Name */},
   {(bigint) 3 /* 3: IRoutine < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: IRoutine < IRoutine: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 207 /* 4: IRoutine < IRoutine: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144136,7 +143692,7 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IRoutine < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IRoutine < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144173,7 +143729,7 @@ const classtable_elt_t VFT_icode___icode_base___IRoutine[70] = {
   {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
   {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
   {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
-  {(bigint) 1 /* 57: IRoutine < IRoutine: superclass init_table position */},
+  {(bigint) 1 /* 55: IRoutine < IRoutine: superclass init_table position */},
   {(bigint) icode___icode_base___IRoutine___params},
   {(bigint) icode___icode_base___IRoutine___closure_decls},
   {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
@@ -144217,19 +143773,19 @@ void INIT_ATTRIBUTES__icode___icode_base___IRoutine(val_t p0){
   /* ./analysis//allocate_iregister_slots.nit:271 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___allocate_iregister_slots___IRoutine____tag_slots_nb(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:55 */
+  /* ./icode//icode_base.nit:54 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:59 */
+  /* ./icode//icode_base.nit:58 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:65 */
+  /* ./icode//icode_base.nit:64 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:68 */
+  /* ./icode//icode_base.nit:67 */
   fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
   ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:70 */
+  /* ./icode//icode_base.nit:69 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -144293,7 +143849,7 @@ val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1){
   int init_table[2] = {0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 73;
+  fra.me.line = 72;
   fra.me.meth = LOCATE_NEW_IRoutine_icode___icode_base___IRoutine___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -144302,7 +143858,7 @@ val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:73 */
+  /* ./icode//icode_base.nit:72 */
   fra.me.REG[2] = NEW_icode___icode_base___IRoutine();
   INIT_ATTRIBUTES__icode___icode_base___IRoutine(fra.me.REG[2]);
   icode___icode_base___IRoutine___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -144310,15 +143866,13 @@ val_t NEW_IRoutine_icode___icode_base___IRoutine___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosureDef[73] = {
-  {(bigint) 2231 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IClosureDef[71] = {
+  {(bigint) 2251 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IClosureDef" /* 2: Class Name */},
   {(bigint) 3 /* 3: IClosureDef < Object: superclass typecheck marker */},
-  {(bigint) 199 /* 4: IClosureDef < IRoutine: superclass typecheck marker */},
-  {(bigint) 2231 /* 5: IClosureDef < IClosureDef: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 207 /* 4: IClosureDef < IRoutine: superclass typecheck marker */},
+  {(bigint) 2251 /* 5: IClosureDef < IClosureDef: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144331,7 +143885,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IClosureDef < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IClosureDef < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144368,7 +143922,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[73] = {
   {(bigint) analysis___allocate_iregister_slots___IRoutine___std_slots_nb},
   {(bigint) analysis___allocate_iregister_slots___IRoutine___tag_slots_nb},
   {(bigint) analysis___allocate_iregister_slots___IRoutine___allocate_iregister_slots},
-  {(bigint) 1 /* 57: IClosureDef < IRoutine: superclass init_table position */},
+  {(bigint) 1 /* 55: IClosureDef < IRoutine: superclass init_table position */},
   {(bigint) icode___icode_base___IRoutine___params},
   {(bigint) icode___icode_base___IRoutine___closure_decls},
   {(bigint) icode___icode_base___IRoutine___closure_decls__eq},
@@ -144382,7 +143936,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosureDef[73] = {
   {(bigint) analysis___inline_methods___IRoutine___inline_methods},
   {(bigint) analysis___dead_method_removal___IRoutine___set_not_reachable},
   {(bigint) compiling___compiling_icode___IClosureDef___compile_closure},
-  {(bigint) 2 /* 71: IClosureDef < IClosureDef: superclass init_table position */},
+  {(bigint) 2 /* 69: IClosureDef < IClosureDef: superclass init_table position */},
   {(bigint) icode___icode_base___IClosureDef___init},
 };
 /* 0: Pointer to the classtable */
@@ -144409,19 +143963,19 @@ void INIT_ATTRIBUTES__icode___icode_base___IClosureDef(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:55 */
+  /* ./icode//icode_base.nit:54 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___IRoutine____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:59 */
+  /* ./icode//icode_base.nit:58 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_icode___icode_base___IRoutine____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:65 */
+  /* ./icode//icode_base.nit:64 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_icode___icode_base___IRoutine____escape_marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:68 */
+  /* ./icode//icode_base.nit:67 */
   fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
   ATTR_icode___icode_base___IRoutine____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:70 */
+  /* ./icode//icode_base.nit:69 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___IRoutine____location(fra.me.REG[0]) = fra.me.REG[1];
   /* ./analysis//allocate_iregister_slots.nit:268 */
@@ -144491,7 +144045,7 @@ val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 83;
+  fra.me.line = 82;
   fra.me.meth = LOCATE_NEW_IClosureDef_icode___icode_base___IClosureDef___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -144500,7 +144054,7 @@ val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:83 */
+  /* ./icode//icode_base.nit:82 */
   fra.me.REG[2] = NEW_icode___icode_base___IClosureDef();
   INIT_ATTRIBUTES__icode___icode_base___IClosureDef(fra.me.REG[2]);
   icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -144508,16 +144062,14 @@ val_t NEW_IClosureDef_icode___icode_base___IClosureDef___init(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___ISeq[72] = {
-  {(bigint) 2847 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___ISeq[70] = {
+  {(bigint) 2867 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ISeq" /* 2: Class Name */},
   {(bigint) 3 /* 3: ISeq < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ISeq < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: ISeq < ICode0: superclass typecheck marker */},
-  {(bigint) 2847 /* 6: ISeq < ISeq: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ISeq < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: ISeq < ICode0: superclass typecheck marker */},
+  {(bigint) 2867 /* 6: ISeq < ISeq: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144529,7 +144081,7 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ISeq < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ISeq < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144566,7 +144118,7 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[72] = {
   {(bigint) analysis___icode_dump___ICode___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ISeq___inner_dup_with},
-  {(bigint) 1 /* 57: ISeq < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: ISeq < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -144574,9 +144126,9 @@ const classtable_elt_t VFT_icode___icode_base___ISeq[72] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: ISeq < ICode0: superclass init_table position */},
+  {(bigint) 0 /* 63: ISeq < ICode0: superclass init_table position */},
   {(bigint) icode___icode_tools___ISeq___dup_seq_to},
-  {(bigint) 3 /* 67: ISeq < ISeq: superclass init_table position */},
+  {(bigint) 3 /* 65: ISeq < ISeq: superclass init_table position */},
   {(bigint) icode___icode_base___ISeq___icodes},
   {(bigint) icode___icode_base___ISeq___iescape_mark},
   {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
@@ -144600,13 +144152,13 @@ void INIT_ATTRIBUTES__icode___icode_base___ISeq(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:168 */
+  /* ./icode//icode_base.nit:167 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
   ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -144645,12 +144197,12 @@ val_t NEW_ISeq_icode___icode_base___ISeq___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 = 173;
+  fra.me.line = 172;
   fra.me.meth = LOCATE_NEW_ISeq_icode___icode_base___ISeq___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:173 */
+  /* ./icode//icode_base.nit:172 */
   fra.me.REG[0] = NEW_icode___icode_base___ISeq();
   INIT_ATTRIBUTES__icode___icode_base___ISeq(fra.me.REG[0]);
   icode___icode_base___ISeq___init(fra.me.REG[0], init_table);
@@ -144658,17 +144210,15 @@ val_t NEW_ISeq_icode___icode_base___ISeq___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___ILoop[74] = {
-  {(bigint) 3171 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___ILoop[72] = {
+  {(bigint) 3219 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ILoop" /* 2: Class Name */},
   {(bigint) 3 /* 3: ILoop < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ILoop < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: ILoop < ICode0: superclass typecheck marker */},
-  {(bigint) 2847 /* 6: ILoop < ISeq: superclass typecheck marker */},
-  {(bigint) 3171 /* 7: ILoop < ILoop: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ILoop < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: ILoop < ICode0: superclass typecheck marker */},
+  {(bigint) 2867 /* 6: ILoop < ISeq: superclass typecheck marker */},
+  {(bigint) 3219 /* 7: ILoop < ILoop: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144679,7 +144229,7 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ILoop < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ILoop < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144716,7 +144266,7 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[74] = {
   {(bigint) analysis___icode_dump___ICode___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ILoop___inner_dup_with},
-  {(bigint) 1 /* 57: ILoop < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: ILoop < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -144724,14 +144274,14 @@ const classtable_elt_t VFT_icode___icode_base___ILoop[74] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: ILoop < ICode0: superclass init_table position */},
+  {(bigint) 0 /* 63: ILoop < ICode0: superclass init_table position */},
   {(bigint) icode___icode_tools___ISeq___dup_seq_to},
-  {(bigint) 3 /* 67: ILoop < ISeq: superclass init_table position */},
+  {(bigint) 3 /* 65: ILoop < ISeq: superclass init_table position */},
   {(bigint) icode___icode_base___ISeq___icodes},
   {(bigint) icode___icode_base___ISeq___iescape_mark},
   {(bigint) icode___icode_base___ISeq___iescape_mark__eq},
   {(bigint) icode___icode_base___ISeq___init},
-  {(bigint) 4 /* 72: ILoop < ILoop: superclass init_table position */},
+  {(bigint) 4 /* 70: ILoop < ILoop: superclass init_table position */},
   {(bigint) icode___icode_base___ILoop___init},
 };
 /* 0: Pointer to the classtable */
@@ -144752,13 +144302,13 @@ void INIT_ATTRIBUTES__icode___icode_base___ILoop(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:168 */
+  /* ./icode//icode_base.nit:167 */
   fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
   ATTR_icode___icode_base___ISeq____icodes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -144797,12 +144347,12 @@ val_t NEW_ILoop_icode___icode_base___ILoop___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 = 180;
+  fra.me.line = 179;
   fra.me.meth = LOCATE_NEW_ILoop_icode___icode_base___ILoop___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:180 */
+  /* ./icode//icode_base.nit:179 */
   fra.me.REG[0] = NEW_icode___icode_base___ILoop();
   INIT_ATTRIBUTES__icode___icode_base___ILoop(fra.me.REG[0]);
   icode___icode_base___ILoop___init(fra.me.REG[0], init_table);
@@ -144810,16 +144360,14 @@ val_t NEW_ILoop_icode___icode_base___ILoop___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IIf[72] = {
-  {(bigint) 2887 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IIf[70] = {
+  {(bigint) 2907 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IIf" /* 2: Class Name */},
   {(bigint) 3 /* 3: IIf < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IIf < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: IIf < ICode1: superclass typecheck marker */},
-  {(bigint) 2887 /* 6: IIf < IIf: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IIf < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: IIf < ICode1: superclass typecheck marker */},
+  {(bigint) 2907 /* 6: IIf < IIf: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144831,7 +144379,7 @@ const classtable_elt_t VFT_icode___icode_base___IIf[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IIf < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IIf < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -144868,7 +144416,7 @@ const classtable_elt_t VFT_icode___icode_base___IIf[72] = {
   {(bigint) analysis___icode_dump___ICode___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IIf___inner_dup_with},
-  {(bigint) 1 /* 57: IIf < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IIf < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -144876,10 +144424,10 @@ const classtable_elt_t VFT_icode___icode_base___IIf[72] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IIf < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: IIf < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: IIf < IIf: superclass init_table position */},
+  {(bigint) 3 /* 66: IIf < IIf: superclass init_table position */},
   {(bigint) icode___icode_base___IIf___then_seq},
   {(bigint) icode___icode_base___IIf___else_seq},
   {(bigint) icode___icode_base___IIf___init},
@@ -144903,16 +144451,16 @@ void INIT_ATTRIBUTES__icode___icode_base___IIf(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:188 */
+  /* ./icode//icode_base.nit:187 */
   fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
   ATTR_icode___icode_base___IIf____then_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:190 */
+  /* ./icode//icode_base.nit:189 */
   fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
   ATTR_icode___icode_base___IIf____else_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -144961,14 +144509,14 @@ val_t NEW_IIf_icode___icode_base___IIf___init(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 = 191;
+  fra.me.line = 190;
   fra.me.meth = LOCATE_NEW_IIf_icode___icode_base___IIf___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:191 */
+  /* ./icode//icode_base.nit:190 */
   fra.me.REG[1] = NEW_icode___icode_base___IIf();
   INIT_ATTRIBUTES__icode___icode_base___IIf(fra.me.REG[1]);
   icode___icode_base___IIf___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -144976,16 +144524,14 @@ val_t NEW_IIf_icode___icode_base___IIf___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IEscape[69] = {
-  {(bigint) 2899 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IEscape[67] = {
+  {(bigint) 2919 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IEscape" /* 2: Class Name */},
   {(bigint) 3 /* 3: IEscape < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IEscape < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IEscape < ICode0: superclass typecheck marker */},
-  {(bigint) 2899 /* 6: IEscape < IEscape: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IEscape < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IEscape < ICode0: superclass typecheck marker */},
+  {(bigint) 2919 /* 6: IEscape < IEscape: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -144997,7 +144543,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IEscape < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IEscape < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145034,7 +144580,7 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[69] = {
   {(bigint) analysis___icode_dump___IEscape___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IEscape___inner_dup_with},
-  {(bigint) 1 /* 57: IEscape < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IEscape < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145042,8 +144588,8 @@ const classtable_elt_t VFT_icode___icode_base___IEscape[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IEscape < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IEscape < IEscape: superclass init_table position */},
+  {(bigint) 0 /* 63: IEscape < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IEscape < IEscape: superclass init_table position */},
   {(bigint) icode___icode_base___IEscape___iescape_mark},
   {(bigint) icode___icode_base___IEscape___init},
 };
@@ -145064,10 +144610,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IEscape(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145106,14 +144652,14 @@ val_t NEW_IEscape_icode___icode_base___IEscape___init(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 = 200;
+  fra.me.line = 199;
   fra.me.meth = LOCATE_NEW_IEscape_icode___icode_base___IEscape___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:200 */
+  /* ./icode//icode_base.nit:199 */
   fra.me.REG[1] = NEW_icode___icode_base___IEscape();
   INIT_ATTRIBUTES__icode___icode_base___IEscape(fra.me.REG[1]);
   icode___icode_base___IEscape___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -145121,16 +144667,14 @@ val_t NEW_IEscape_icode___icode_base___IEscape___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IAbort[70] = {
-  {(bigint) 2939 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IAbort[68] = {
+  {(bigint) 2959 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IAbort" /* 2: Class Name */},
   {(bigint) 3 /* 3: IAbort < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IAbort < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IAbort < ICode0: superclass typecheck marker */},
-  {(bigint) 2939 /* 6: IAbort < IAbort: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IAbort < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IAbort < ICode0: superclass typecheck marker */},
+  {(bigint) 2959 /* 6: IAbort < IAbort: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145142,7 +144686,7 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IAbort < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IAbort < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145179,7 +144723,7 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[70] = {
   {(bigint) analysis___icode_dump___IAbort___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IAbort___inner_dup_with},
-  {(bigint) 1 /* 57: IAbort < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IAbort < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145187,8 +144731,8 @@ const classtable_elt_t VFT_icode___icode_base___IAbort[70] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IAbort < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IAbort < IAbort: superclass init_table position */},
+  {(bigint) 0 /* 63: IAbort < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IAbort < IAbort: superclass init_table position */},
   {(bigint) icode___icode_base___IAbort___texts},
   {(bigint) icode___icode_base___IAbort___module_location},
   {(bigint) icode___icode_base___IAbort___init},
@@ -145211,10 +144755,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IAbort(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145258,7 +144802,7 @@ val_t NEW_IAbort_icode___icode_base___IAbort___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 = 211;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_NEW_IAbort_icode___icode_base___IAbort___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -145267,7 +144811,7 @@ val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:211 */
+  /* ./icode//icode_base.nit:210 */
   fra.me.REG[2] = NEW_icode___icode_base___IAbort();
   INIT_ATTRIBUTES__icode___icode_base___IAbort(fra.me.REG[2]);
   icode___icode_base___IAbort___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -145276,16 +144820,14 @@ val_t NEW_IAbort_icode___icode_base___IAbort___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
-  {(bigint) 3179 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3227 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICall" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICall < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ICall < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: ICall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2935 /* 6: ICall < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3179 /* 7: ICall < ICall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ICall < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: ICall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2955 /* 6: ICall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 3227 /* 7: ICall < ICall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145296,7 +144838,7 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ICall < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ICall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145333,7 +144875,7 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {(bigint) analysis___icode_dump___ICall___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ICall___inner_dup_with},
-  {(bigint) 2 /* 57: ICall < ICode: superclass init_table position */},
+  {(bigint) 2 /* 55: ICall < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145342,14 +144884,16 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 66: ICall < ICodeN: superclass init_table position */},
+  {(bigint) 1 /* 64: ICall < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) compiling___compiling_icode___ICall___compile_call_to_c},
-  {(bigint) 0 /* 72: ICall < IAbsCall: superclass init_table position */},
+  {(bigint) 0 /* 70: ICall < IAbsCall: superclass init_table position */},
   {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
   {(bigint) icode___icode_base___IAbsCall___init},
   {(bigint) 4 /* 75: ICall < ICall: superclass init_table position */},
   {(bigint) icode___icode_base___ICall___init},
@@ -145362,8 +144906,10 @@ const classtable_elt_t VFT_icode___icode_base___ICall[78] = {
 /* 4: Attribute ICall::_exprs */
 /* 5: Attribute ICall::_closure_defs */
 /* 6: Attribute ICall::_property */
+/* 7: Attribute ICall::@is_explicit_from_extern */
 void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0){
   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_nitc;
@@ -145374,10 +144920,13 @@ void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:226 */
+  REGB0 = TAG_Bool(false);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145385,7 +144934,7 @@ void INIT_ATTRIBUTES__icode___icode_base___ICall(val_t p0){
 val_t NEW_icode___icode_base___ICall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
+  obj = alloc(sizeof(val_t) * 8);
   obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ICall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -145408,6 +144957,11 @@ void CHECKNEW_icode___icode_base___ICall(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -145421,7 +144975,7 @@ val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1){
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 237;
+  fra.me.line = 239;
   fra.me.meth = LOCATE_NEW_ICall_icode___icode_base___ICall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -145430,7 +144984,7 @@ val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:237 */
+  /* ./icode//icode_base.nit:239 */
   fra.me.REG[2] = NEW_icode___icode_base___ICall();
   INIT_ATTRIBUTES__icode___icode_base___ICall(fra.me.REG[2]);
   icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -145439,16 +144993,14 @@ val_t NEW_ICall_icode___icode_base___ICall___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
-  {(bigint) 3155 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3203 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ISuper" /* 2: Class Name */},
   {(bigint) 3 /* 3: ISuper < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ISuper < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: ISuper < ICodeN: superclass typecheck marker */},
-  {(bigint) 2935 /* 6: ISuper < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3155 /* 7: ISuper < ISuper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ISuper < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: ISuper < ICodeN: superclass typecheck marker */},
+  {(bigint) 2955 /* 6: ISuper < IAbsCall: superclass typecheck marker */},
+  {(bigint) 3203 /* 7: ISuper < ISuper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145459,7 +145011,7 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: ISuper < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: ISuper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145496,7 +145048,7 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {(bigint) analysis___icode_dump___ISuper___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ISuper___inner_dup_with},
-  {(bigint) 2 /* 57: ISuper < ICode: superclass init_table position */},
+  {(bigint) 2 /* 55: ISuper < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145505,14 +145057,16 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 66: ISuper < ICodeN: superclass init_table position */},
+  {(bigint) 1 /* 64: ISuper < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) compiling___compiling_icode___ISuper___compile_call_to_c},
-  {(bigint) 0 /* 72: ISuper < IAbsCall: superclass init_table position */},
+  {(bigint) 0 /* 70: ISuper < IAbsCall: superclass init_table position */},
   {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
   {(bigint) icode___icode_base___IAbsCall___init},
   {(bigint) 4 /* 75: ISuper < ISuper: superclass init_table position */},
   {(bigint) icode___icode_base___ISuper___init},
@@ -145524,8 +145078,10 @@ const classtable_elt_t VFT_icode___icode_base___ISuper[77] = {
 /* 4: Attribute ISuper::_exprs */
 /* 5: Attribute ISuper::_closure_defs */
 /* 6: Attribute ISuper::_property */
+/* 7: Attribute ISuper::@is_explicit_from_extern */
 void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0){
   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_nitc;
@@ -145536,10 +145092,13 @@ void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:226 */
+  REGB0 = TAG_Bool(false);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145547,7 +145106,7 @@ void INIT_ATTRIBUTES__icode___icode_base___ISuper(val_t p0){
 val_t NEW_icode___icode_base___ISuper(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
+  obj = alloc(sizeof(val_t) * 8);
   obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ISuper;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -145570,6 +145129,11 @@ void CHECKNEW_icode___icode_base___ISuper(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -145583,7 +145147,7 @@ val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1){
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 244;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_NEW_ISuper_icode___icode_base___ISuper___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -145592,7 +145156,7 @@ val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:244 */
+  /* ./icode//icode_base.nit:246 */
   fra.me.REG[2] = NEW_icode___icode_base___ISuper();
   INIT_ATTRIBUTES__icode___icode_base___ISuper(fra.me.REG[2]);
   icode___icode_base___ISuper___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -145601,16 +145165,14 @@ val_t NEW_ISuper_icode___icode_base___ISuper___init(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_icode___icode_base___INew[78] = {
-  {(bigint) 3167 /* 0: Identity */},
-  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3215 /* 0: Identity */},
+  {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "INew" /* 2: Class Name */},
   {(bigint) 3 /* 3: INew < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: INew < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: INew < ICodeN: superclass typecheck marker */},
-  {(bigint) 2935 /* 6: INew < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3167 /* 7: INew < INew: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: INew < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: INew < ICodeN: superclass typecheck marker */},
+  {(bigint) 2955 /* 6: INew < IAbsCall: superclass typecheck marker */},
+  {(bigint) 3215 /* 7: INew < INew: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145621,7 +145183,7 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: INew < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: INew < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145658,7 +145220,7 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {(bigint) analysis___icode_dump___INew___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___INew___inner_dup_with},
-  {(bigint) 2 /* 57: INew < ICode: superclass init_table position */},
+  {(bigint) 2 /* 55: INew < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145667,14 +145229,16 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 66: INew < ICodeN: superclass init_table position */},
+  {(bigint) 1 /* 64: INew < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) compiling___compiling_icode___INew___compile_call_to_c},
-  {(bigint) 0 /* 72: INew < IAbsCall: superclass init_table position */},
+  {(bigint) 0 /* 70: INew < IAbsCall: superclass init_table position */},
   {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
   {(bigint) icode___icode_base___IAbsCall___init},
   {(bigint) 4 /* 75: INew < INew: superclass init_table position */},
   {(bigint) icode___icode_base___INew___stype},
@@ -145687,9 +145251,11 @@ const classtable_elt_t VFT_icode___icode_base___INew[78] = {
 /* 4: Attribute INew::_exprs */
 /* 5: Attribute INew::_closure_defs */
 /* 6: Attribute INew::_property */
-/* 7: Attribute INew::_stype */
+/* 7: Attribute INew::@is_explicit_from_extern */
+/* 8: Attribute INew::_stype */
 void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0){
   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_nitc;
@@ -145700,10 +145266,13 @@ void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:226 */
+  REGB0 = TAG_Bool(false);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145711,7 +145280,7 @@ void INIT_ATTRIBUTES__icode___icode_base___INew(val_t p0){
 val_t NEW_icode___icode_base___INew(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 8);
+  obj = alloc(sizeof(val_t) * 9);
   obj->vft = (classtable_elt_t*)VFT_icode___icode_base___INew;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -145739,6 +145308,11 @@ void CHECKNEW_icode___icode_base___INew(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -145752,7 +145326,7 @@ val_t NEW_INew_icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2){
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 258;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_NEW_INew_icode___icode_base___INew___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -145763,7 +145337,7 @@ val_t NEW_INew_icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:258 */
+  /* ./icode//icode_base.nit:260 */
   fra.me.REG[3] = NEW_icode___icode_base___INew();
   INIT_ATTRIBUTES__icode___icode_base___INew(fra.me.REG[3]);
   icode___icode_base___INew___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -145771,16 +145345,14 @@ val_t NEW_INew_icode___icode_base___INew___init(val_t p0, val_t p1, val_t p2){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[69] = {
-  {(bigint) 2931 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[67] = {
+  {(bigint) 2951 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IAllocateInstance" /* 2: Class Name */},
   {(bigint) 3 /* 3: IAllocateInstance < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IAllocateInstance < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IAllocateInstance < ICode0: superclass typecheck marker */},
-  {(bigint) 2931 /* 6: IAllocateInstance < IAllocateInstance: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IAllocateInstance < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IAllocateInstance < ICode0: superclass typecheck marker */},
+  {(bigint) 2951 /* 6: IAllocateInstance < IAllocateInstance: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145792,7 +145364,7 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IAllocateInstance < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IAllocateInstance < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145829,7 +145401,7 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[69] = {
   {(bigint) analysis___icode_dump___IAllocateInstance___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IAllocateInstance___inner_dup_with},
-  {(bigint) 1 /* 57: IAllocateInstance < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IAllocateInstance < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145837,8 +145409,8 @@ const classtable_elt_t VFT_icode___icode_base___IAllocateInstance[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IAllocateInstance < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IAllocateInstance < IAllocateInstance: superclass init_table position */},
+  {(bigint) 0 /* 63: IAllocateInstance < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IAllocateInstance < IAllocateInstance: superclass init_table position */},
   {(bigint) icode___icode_base___IAllocateInstance___stype},
   {(bigint) icode___icode_base___IAllocateInstance___init},
 };
@@ -145859,10 +145431,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -145901,14 +145473,14 @@ val_t NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(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 = 272;
+  fra.me.line = 274;
   fra.me.meth = LOCATE_NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:272 */
+  /* ./icode//icode_base.nit:274 */
   fra.me.REG[1] = NEW_icode___icode_base___IAllocateInstance();
   INIT_ATTRIBUTES__icode___icode_base___IAllocateInstance(fra.me.REG[1]);
   icode___icode_base___IAllocateInstance___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -145917,16 +145489,14 @@ val_t NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(val_t
   return fra.me.REG[1];
 }
 const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
-  {(bigint) 3159 /* 0: Identity */},
-  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 3207 /* 0: Identity */},
+  {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IStaticCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: IStaticCall < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IStaticCall < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: IStaticCall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2935 /* 6: IStaticCall < IAbsCall: superclass typecheck marker */},
-  {(bigint) 3159 /* 7: IStaticCall < IStaticCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IStaticCall < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: IStaticCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2955 /* 6: IStaticCall < IAbsCall: superclass typecheck marker */},
+  {(bigint) 3207 /* 7: IStaticCall < IStaticCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -145937,7 +145507,7 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: IStaticCall < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: IStaticCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -145974,7 +145544,7 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {(bigint) analysis___icode_dump___IStaticCall___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IStaticCall___inner_dup_with},
-  {(bigint) 2 /* 57: IStaticCall < ICode: superclass init_table position */},
+  {(bigint) 2 /* 55: IStaticCall < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -145983,14 +145553,16 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 1 /* 66: IStaticCall < ICodeN: superclass init_table position */},
+  {(bigint) 1 /* 64: IStaticCall < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) compiling___compiling_icode___IStaticCall___compile_call_to_c},
-  {(bigint) 0 /* 72: IStaticCall < IAbsCall: superclass init_table position */},
+  {(bigint) 0 /* 70: IStaticCall < IAbsCall: superclass init_table position */},
   {(bigint) icode___icode_base___IAbsCall___property},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern},
+  {(bigint) icode___icode_base___IAbsCall___is_explicit_from_extern__eq},
   {(bigint) icode___icode_base___IAbsCall___init},
   {(bigint) 4 /* 75: IStaticCall < IStaticCall: superclass init_table position */},
   {(bigint) icode___icode_base___IStaticCall___init},
@@ -146002,8 +145574,10 @@ const classtable_elt_t VFT_icode___icode_base___IStaticCall[77] = {
 /* 4: Attribute IStaticCall::_exprs */
 /* 5: Attribute IStaticCall::_closure_defs */
 /* 6: Attribute IStaticCall::_property */
+/* 7: Attribute IStaticCall::@is_explicit_from_extern */
 void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0){
   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_nitc;
@@ -146014,10 +145588,13 @@ void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:226 */
+  REGB0 = TAG_Bool(false);
+  ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0]) = REGB0;
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146025,7 +145602,7 @@ void INIT_ATTRIBUTES__icode___icode_base___IStaticCall(val_t p0){
 val_t NEW_icode___icode_base___IStaticCall(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 7);
+  obj = alloc(sizeof(val_t) * 8);
   obj->vft = (classtable_elt_t*)VFT_icode___icode_base___IStaticCall;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -146048,6 +145625,11 @@ void CHECKNEW_icode___icode_base___IStaticCall(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
   }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___IAbsCall_____atis_explicit_from_extern(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@is_explicit_from_extern", LOCATE_nitc, 0);
+  }
   REGB0 = TAG_Bool(ATTR_icode___icode_base___ICodeN____exprs(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -146061,7 +145643,7 @@ val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1
   int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 281;
+  fra.me.line = 283;
   fra.me.meth = LOCATE_NEW_IStaticCall_icode___icode_base___IStaticCall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -146070,7 +145652,7 @@ val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:281 */
+  /* ./icode//icode_base.nit:283 */
   fra.me.REG[2] = NEW_icode___icode_base___IStaticCall();
   INIT_ATTRIBUTES__icode___icode_base___IStaticCall(fra.me.REG[2]);
   icode___icode_base___IStaticCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -146078,16 +145660,14 @@ val_t NEW_IStaticCall_icode___icode_base___IStaticCall___init(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___ICheckInstance[71] = {
-  {(bigint) 2907 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___ICheckInstance[69] = {
+  {(bigint) 2927 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICheckInstance" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICheckInstance < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ICheckInstance < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: ICheckInstance < ICode1: superclass typecheck marker */},
-  {(bigint) 2907 /* 6: ICheckInstance < ICheckInstance: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ICheckInstance < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: ICheckInstance < ICode1: superclass typecheck marker */},
+  {(bigint) 2927 /* 6: ICheckInstance < ICheckInstance: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146099,7 +145679,7 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ICheckInstance < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ICheckInstance < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146136,7 +145716,7 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[71] = {
   {(bigint) analysis___icode_dump___ICheckInstance___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ICheckInstance___inner_dup_with},
-  {(bigint) 1 /* 57: ICheckInstance < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: ICheckInstance < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146144,10 +145724,10 @@ const classtable_elt_t VFT_icode___icode_base___ICheckInstance[71] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: ICheckInstance < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: ICheckInstance < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: ICheckInstance < ICheckInstance: superclass init_table position */},
+  {(bigint) 3 /* 66: ICheckInstance < ICheckInstance: superclass init_table position */},
   {(bigint) icode___icode_base___ICheckInstance___stype},
   {(bigint) icode___icode_base___ICheckInstance___init},
 };
@@ -146169,10 +145749,10 @@ void INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146216,7 +145796,7 @@ val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, 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 = 289;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_NEW_ICheckInstance_icode___icode_base___ICheckInstance___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -146225,7 +145805,7 @@ val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, va
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:289 */
+  /* ./icode//icode_base.nit:291 */
   fra.me.REG[2] = NEW_icode___icode_base___ICheckInstance();
   INIT_ATTRIBUTES__icode___icode_base___ICheckInstance(fra.me.REG[2]);
   icode___icode_base___ICheckInstance___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -146233,16 +145813,14 @@ val_t NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IInitAttributes[71] = {
-  {(bigint) 2883 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IInitAttributes[69] = {
+  {(bigint) 2903 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IInitAttributes" /* 2: Class Name */},
   {(bigint) 3 /* 3: IInitAttributes < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IInitAttributes < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: IInitAttributes < ICode1: superclass typecheck marker */},
-  {(bigint) 2883 /* 6: IInitAttributes < IInitAttributes: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IInitAttributes < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: IInitAttributes < ICode1: superclass typecheck marker */},
+  {(bigint) 2903 /* 6: IInitAttributes < IInitAttributes: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146254,7 +145832,7 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IInitAttributes < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IInitAttributes < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146291,7 +145869,7 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[71] = {
   {(bigint) analysis___icode_dump___IInitAttributes___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IInitAttributes___inner_dup_with},
-  {(bigint) 1 /* 57: IInitAttributes < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IInitAttributes < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146299,10 +145877,10 @@ const classtable_elt_t VFT_icode___icode_base___IInitAttributes[71] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IInitAttributes < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: IInitAttributes < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: IInitAttributes < IInitAttributes: superclass init_table position */},
+  {(bigint) 3 /* 66: IInitAttributes < IInitAttributes: superclass init_table position */},
   {(bigint) icode___icode_base___IInitAttributes___stype},
   {(bigint) icode___icode_base___IInitAttributes___init},
 };
@@ -146324,10 +145902,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146371,7 +145949,7 @@ val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(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 = 301;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_NEW_IInitAttributes_icode___icode_base___IInitAttributes___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -146380,7 +145958,7 @@ val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(val_t p0,
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:301 */
+  /* ./icode//icode_base.nit:303 */
   fra.me.REG[2] = NEW_icode___icode_base___IInitAttributes();
   INIT_ATTRIBUTES__icode___icode_base___IInitAttributes(fra.me.REG[2]);
   icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -146388,16 +145966,14 @@ val_t NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IClosCall[77] = {
-  {(bigint) 2903 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IClosCall[75] = {
+  {(bigint) 2923 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IClosCall" /* 2: Class Name */},
   {(bigint) 3 /* 3: IClosCall < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IClosCall < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: IClosCall < ICodeN: superclass typecheck marker */},
-  {(bigint) 2903 /* 6: IClosCall < IClosCall: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IClosCall < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: IClosCall < ICodeN: superclass typecheck marker */},
+  {(bigint) 2923 /* 6: IClosCall < IClosCall: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146409,7 +145985,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IClosCall < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IClosCall < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146446,7 +146022,7 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[77] = {
   {(bigint) analysis___icode_dump___IClosCall___dump_intern},
   {(bigint) icode___icode_tools___IClosCall___dup_with},
   {(bigint) icode___icode_tools___IClosCall___inner_dup_with},
-  {(bigint) 1 /* 57: IClosCall < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IClosCall < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146455,13 +146031,13 @@ const classtable_elt_t VFT_icode___icode_base___IClosCall[77] = {
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 0 /* 66: IClosCall < ICodeN: superclass init_table position */},
+  {(bigint) 0 /* 64: IClosCall < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) icode___icode_tools___ICode___dup_with},
-  {(bigint) 3 /* 72: IClosCall < IClosCall: superclass init_table position */},
+  {(bigint) 3 /* 70: IClosCall < IClosCall: superclass init_table position */},
   {(bigint) icode___icode_base___IClosCall___closure_decl},
   {(bigint) icode___icode_base___IClosCall___break_seq},
   {(bigint) icode___icode_base___IClosCall___break_seq__eq},
@@ -146487,13 +146063,13 @@ void INIT_ATTRIBUTES__icode___icode_base___IClosCall(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:315 */
+  /* ./icode//icode_base.nit:317 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___IClosCall____break_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146537,7 +146113,7 @@ val_t NEW_IClosCall_icode___icode_base___IClosCall___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 = 318;
+  fra.me.line = 320;
   fra.me.meth = LOCATE_NEW_IClosCall_icode___icode_base___IClosCall___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -146546,7 +146122,7 @@ val_t NEW_IClosCall_icode___icode_base___IClosCall___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:318 */
+  /* ./icode//icode_base.nit:320 */
   fra.me.REG[2] = NEW_icode___icode_base___IClosCall();
   INIT_ATTRIBUTES__icode___icode_base___IClosCall(fra.me.REG[2]);
   icode___icode_base___IClosCall___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -146554,16 +146130,14 @@ val_t NEW_IClosCall_icode___icode_base___IClosCall___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___INative[77] = {
-  {(bigint) 2867 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___INative[75] = {
+  {(bigint) 2887 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "INative" /* 2: Class Name */},
   {(bigint) 3 /* 3: INative < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: INative < ICode: superclass typecheck marker */},
-  {(bigint) 2215 /* 5: INative < ICodeN: superclass typecheck marker */},
-  {(bigint) 2867 /* 6: INative < INative: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: INative < ICode: superclass typecheck marker */},
+  {(bigint) 2235 /* 5: INative < ICodeN: superclass typecheck marker */},
+  {(bigint) 2887 /* 6: INative < INative: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146575,7 +146149,7 @@ const classtable_elt_t VFT_icode___icode_base___INative[77] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: INative < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: INative < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146612,7 +146186,7 @@ const classtable_elt_t VFT_icode___icode_base___INative[77] = {
   {(bigint) analysis___icode_dump___INative___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___INative___inner_dup_with},
-  {(bigint) 1 /* 57: INative < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: INative < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146621,14 +146195,14 @@ const classtable_elt_t VFT_icode___icode_base___INative[77] = {
   {(bigint) icode___icode_base___INative___is_pure},
   {(bigint) icode___icode_base___ICode___init},
   {(bigint) analysis___icode_dump___ICode___dump},
-  {(bigint) 0 /* 66: INative < ICodeN: superclass init_table position */},
+  {(bigint) 0 /* 64: INative < ICodeN: superclass init_table position */},
   {(bigint) icode___icode_base___ICodeN___exprs},
   {(bigint) icode___icode_base___ICodeN___closure_defs},
   {(bigint) icode___icode_base___ICodeN___closure_defs__eq},
   {(bigint) icode___icode_base___ICodeN___init},
   {(bigint) compiling___compiling_icode___INative___compile_extern_method_to_c},
   {(bigint) compiling___compiling_icode___INative___compile_intern_method_to_c},
-  {(bigint) 3 /* 73: INative < INative: superclass init_table position */},
+  {(bigint) 3 /* 71: INative < INative: superclass init_table position */},
   {(bigint) icode___icode_base___INative___method},
   {(bigint) icode___icode_base___INative___init},
   {(bigint) icode___icode_base___INative___is_pure__eq},
@@ -146654,13 +146228,13 @@ void INIT_ATTRIBUTES__icode___icode_base___INative(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:342 */
+  /* ./icode//icode_base.nit:344 */
   REGB0 = TAG_Bool(false);
   ATTR_icode___icode_base___INative____is_pure(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146709,7 +146283,7 @@ val_t NEW_INative_icode___icode_base___INative___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 = 333;
+  fra.me.line = 335;
   fra.me.meth = LOCATE_NEW_INative_icode___icode_base___INative___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -146718,7 +146292,7 @@ val_t NEW_INative_icode___icode_base___INative___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:333 */
+  /* ./icode//icode_base.nit:335 */
   fra.me.REG[2] = NEW_icode___icode_base___INative();
   INIT_ATTRIBUTES__icode___icode_base___INative(fra.me.REG[2]);
   icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -146726,16 +146300,14 @@ val_t NEW_INative_icode___icode_base___INative___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IIntValue[69] = {
-  {(bigint) 2879 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IIntValue[67] = {
+  {(bigint) 2899 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IIntValue" /* 2: Class Name */},
   {(bigint) 3 /* 3: IIntValue < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IIntValue < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IIntValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2879 /* 6: IIntValue < IIntValue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IIntValue < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IIntValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2899 /* 6: IIntValue < IIntValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146747,7 +146319,7 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IIntValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IIntValue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146784,7 +146356,7 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[69] = {
   {(bigint) analysis___icode_dump___IIntValue___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IIntValue___inner_dup_with},
-  {(bigint) 1 /* 57: IIntValue < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IIntValue < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146792,8 +146364,8 @@ const classtable_elt_t VFT_icode___icode_base___IIntValue[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IIntValue___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IIntValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IIntValue < IIntValue: superclass init_table position */},
+  {(bigint) 0 /* 63: IIntValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IIntValue < IIntValue: superclass init_table position */},
   {(bigint) icode___icode_base___IIntValue___value},
   {(bigint) icode___icode_base___IIntValue___init},
 };
@@ -146814,10 +146386,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IIntValue(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -146856,14 +146428,14 @@ val_t NEW_IIntValue_icode___icode_base___IIntValue___init(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 = 351;
+  fra.me.line = 353;
   fra.me.meth = LOCATE_NEW_IIntValue_icode___icode_base___IIntValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:351 */
+  /* ./icode//icode_base.nit:353 */
   fra.me.REG[1] = NEW_icode___icode_base___IIntValue();
   INIT_ATTRIBUTES__icode___icode_base___IIntValue(fra.me.REG[1]);
   icode___icode_base___IIntValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -146871,16 +146443,14 @@ val_t NEW_IIntValue_icode___icode_base___IIntValue___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IBoolValue[69] = {
-  {(bigint) 2915 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IBoolValue[67] = {
+  {(bigint) 2935 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IBoolValue" /* 2: Class Name */},
   {(bigint) 3 /* 3: IBoolValue < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IBoolValue < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IBoolValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2915 /* 6: IBoolValue < IBoolValue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IBoolValue < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IBoolValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2935 /* 6: IBoolValue < IBoolValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -146892,7 +146462,7 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IBoolValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IBoolValue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -146929,7 +146499,7 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[69] = {
   {(bigint) analysis___icode_dump___IBoolValue___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IBoolValue___inner_dup_with},
-  {(bigint) 1 /* 57: IBoolValue < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IBoolValue < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -146937,8 +146507,8 @@ const classtable_elt_t VFT_icode___icode_base___IBoolValue[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IBoolValue___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IBoolValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IBoolValue < IBoolValue: superclass init_table position */},
+  {(bigint) 0 /* 63: IBoolValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IBoolValue < IBoolValue: superclass init_table position */},
   {(bigint) icode___icode_base___IBoolValue___value},
   {(bigint) icode___icode_base___IBoolValue___init},
 };
@@ -146959,10 +146529,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IBoolValue(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147002,13 +146572,13 @@ val_t NEW_IBoolValue_icode___icode_base___IBoolValue___init(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 = 362;
+  fra.me.line = 364;
   fra.me.meth = LOCATE_NEW_IBoolValue_icode___icode_base___IBoolValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./icode//icode_base.nit:362 */
+  /* ./icode//icode_base.nit:364 */
   fra.me.REG[0] = NEW_icode___icode_base___IBoolValue();
   INIT_ATTRIBUTES__icode___icode_base___IBoolValue(fra.me.REG[0]);
   icode___icode_base___IBoolValue___init(fra.me.REG[0], REGB0, init_table);
@@ -147016,16 +146586,14 @@ val_t NEW_IBoolValue_icode___icode_base___IBoolValue___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IStringValue[69] = {
-  {(bigint) 2843 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IStringValue[67] = {
+  {(bigint) 2863 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IStringValue" /* 2: Class Name */},
   {(bigint) 3 /* 3: IStringValue < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IStringValue < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IStringValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2843 /* 6: IStringValue < IStringValue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IStringValue < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IStringValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2863 /* 6: IStringValue < IStringValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147037,7 +146605,7 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IStringValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IStringValue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147074,7 +146642,7 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[69] = {
   {(bigint) analysis___icode_dump___IStringValue___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IStringValue___inner_dup_with},
-  {(bigint) 1 /* 57: IStringValue < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IStringValue < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147082,8 +146650,8 @@ const classtable_elt_t VFT_icode___icode_base___IStringValue[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IStringValue___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IStringValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IStringValue < IStringValue: superclass init_table position */},
+  {(bigint) 0 /* 63: IStringValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IStringValue < IStringValue: superclass init_table position */},
   {(bigint) icode___icode_base___IStringValue___value},
   {(bigint) icode___icode_base___IStringValue___init},
 };
@@ -147104,10 +146672,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IStringValue(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147146,14 +146714,14 @@ val_t NEW_IStringValue_icode___icode_base___IStringValue___init(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 = 373;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_NEW_IStringValue_icode___icode_base___IStringValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:373 */
+  /* ./icode//icode_base.nit:375 */
   fra.me.REG[1] = NEW_icode___icode_base___IStringValue();
   INIT_ATTRIBUTES__icode___icode_base___IStringValue(fra.me.REG[1]);
   icode___icode_base___IStringValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -147161,16 +146729,14 @@ val_t NEW_IStringValue_icode___icode_base___IStringValue___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IFloatValue[69] = {
-  {(bigint) 2895 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IFloatValue[67] = {
+  {(bigint) 2915 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IFloatValue" /* 2: Class Name */},
   {(bigint) 3 /* 3: IFloatValue < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IFloatValue < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IFloatValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2895 /* 6: IFloatValue < IFloatValue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IFloatValue < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IFloatValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2915 /* 6: IFloatValue < IFloatValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147182,7 +146748,7 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IFloatValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IFloatValue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147219,7 +146785,7 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[69] = {
   {(bigint) analysis___icode_dump___IFloatValue___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IFloatValue___inner_dup_with},
-  {(bigint) 1 /* 57: IFloatValue < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IFloatValue < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147227,8 +146793,8 @@ const classtable_elt_t VFT_icode___icode_base___IFloatValue[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IFloatValue___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IFloatValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IFloatValue < IFloatValue: superclass init_table position */},
+  {(bigint) 0 /* 63: IFloatValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IFloatValue < IFloatValue: superclass init_table position */},
   {(bigint) icode___icode_base___IFloatValue___value},
   {(bigint) icode___icode_base___IFloatValue___init},
 };
@@ -147249,10 +146815,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IFloatValue(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147291,14 +146857,14 @@ val_t NEW_IFloatValue_icode___icode_base___IFloatValue___init(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 = 384;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_NEW_IFloatValue_icode___icode_base___IFloatValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:384 */
+  /* ./icode//icode_base.nit:386 */
   fra.me.REG[1] = NEW_icode___icode_base___IFloatValue();
   INIT_ATTRIBUTES__icode___icode_base___IFloatValue(fra.me.REG[1]);
   icode___icode_base___IFloatValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -147306,16 +146872,14 @@ val_t NEW_IFloatValue_icode___icode_base___IFloatValue___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___ICharValue[69] = {
-  {(bigint) 2911 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___ICharValue[67] = {
+  {(bigint) 2931 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICharValue" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICharValue < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ICharValue < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: ICharValue < ICode0: superclass typecheck marker */},
-  {(bigint) 2911 /* 6: ICharValue < ICharValue: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ICharValue < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: ICharValue < ICode0: superclass typecheck marker */},
+  {(bigint) 2931 /* 6: ICharValue < ICharValue: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147327,7 +146891,7 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ICharValue < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ICharValue < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147364,7 +146928,7 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[69] = {
   {(bigint) analysis___icode_dump___ICharValue___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ICharValue___inner_dup_with},
-  {(bigint) 1 /* 57: ICharValue < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: ICharValue < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147372,8 +146936,8 @@ const classtable_elt_t VFT_icode___icode_base___ICharValue[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICharValue___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: ICharValue < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: ICharValue < ICharValue: superclass init_table position */},
+  {(bigint) 0 /* 63: ICharValue < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: ICharValue < ICharValue: superclass init_table position */},
   {(bigint) icode___icode_base___ICharValue___value},
   {(bigint) icode___icode_base___ICharValue___init},
 };
@@ -147394,10 +146958,10 @@ void INIT_ATTRIBUTES__icode___icode_base___ICharValue(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147436,14 +147000,14 @@ val_t NEW_ICharValue_icode___icode_base___ICharValue___init(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 = 395;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_NEW_ICharValue_icode___icode_base___ICharValue___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:395 */
+  /* ./icode//icode_base.nit:397 */
   fra.me.REG[1] = NEW_icode___icode_base___ICharValue();
   INIT_ATTRIBUTES__icode___icode_base___ICharValue(fra.me.REG[1]);
   icode___icode_base___ICharValue___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -147451,16 +147015,14 @@ val_t NEW_ICharValue_icode___icode_base___ICharValue___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IMove[70] = {
-  {(bigint) 2871 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IMove[68] = {
+  {(bigint) 2891 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IMove" /* 2: Class Name */},
   {(bigint) 3 /* 3: IMove < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IMove < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: IMove < ICode1: superclass typecheck marker */},
-  {(bigint) 2871 /* 6: IMove < IMove: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IMove < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: IMove < ICode1: superclass typecheck marker */},
+  {(bigint) 2891 /* 6: IMove < IMove: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147472,7 +147034,7 @@ const classtable_elt_t VFT_icode___icode_base___IMove[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IMove < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IMove < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147509,7 +147071,7 @@ const classtable_elt_t VFT_icode___icode_base___IMove[70] = {
   {(bigint) analysis___icode_dump___IMove___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IMove___inner_dup_with},
-  {(bigint) 1 /* 57: IMove < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IMove < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147517,10 +147079,10 @@ const classtable_elt_t VFT_icode___icode_base___IMove[70] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IMove___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IMove < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: IMove < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: IMove < IMove: superclass init_table position */},
+  {(bigint) 3 /* 66: IMove < IMove: superclass init_table position */},
   {(bigint) icode___icode_base___IMove___init},
 };
 /* 0: Pointer to the classtable */
@@ -147540,10 +147102,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IMove(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147582,7 +147144,7 @@ val_t NEW_IMove_icode___icode_base___IMove___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 = 405;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_NEW_IMove_icode___icode_base___IMove___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -147591,7 +147153,7 @@ val_t NEW_IMove_icode___icode_base___IMove___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:405 */
+  /* ./icode//icode_base.nit:407 */
   fra.me.REG[2] = NEW_icode___icode_base___IMove();
   INIT_ATTRIBUTES__icode___icode_base___IMove(fra.me.REG[2]);
   icode___icode_base___IMove___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -147599,16 +147161,14 @@ val_t NEW_IMove_icode___icode_base___IMove___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrRead[71] = {
-  {(bigint) 2923 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IAttrRead[69] = {
+  {(bigint) 2943 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IAttrRead" /* 2: Class Name */},
   {(bigint) 3 /* 3: IAttrRead < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IAttrRead < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: IAttrRead < ICode1: superclass typecheck marker */},
-  {(bigint) 2923 /* 6: IAttrRead < IAttrRead: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IAttrRead < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: IAttrRead < ICode1: superclass typecheck marker */},
+  {(bigint) 2943 /* 6: IAttrRead < IAttrRead: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147620,7 +147180,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IAttrRead < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IAttrRead < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147657,7 +147217,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[71] = {
   {(bigint) analysis___icode_dump___IAttrRead___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IAttrRead___inner_dup_with},
-  {(bigint) 1 /* 57: IAttrRead < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IAttrRead < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147665,10 +147225,10 @@ const classtable_elt_t VFT_icode___icode_base___IAttrRead[71] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IAttrRead___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IAttrRead < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: IAttrRead < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: IAttrRead < IAttrRead: superclass init_table position */},
+  {(bigint) 3 /* 66: IAttrRead < IAttrRead: superclass init_table position */},
   {(bigint) icode___icode_base___IAttrRead___property},
   {(bigint) icode___icode_base___IAttrRead___init},
 };
@@ -147690,10 +147250,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IAttrRead(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147737,7 +147297,7 @@ val_t NEW_IAttrRead_icode___icode_base___IAttrRead___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 = 421;
+  fra.me.line = 423;
   fra.me.meth = LOCATE_NEW_IAttrRead_icode___icode_base___IAttrRead___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -147746,7 +147306,7 @@ val_t NEW_IAttrRead_icode___icode_base___IAttrRead___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:421 */
+  /* ./icode//icode_base.nit:423 */
   fra.me.REG[2] = NEW_icode___icode_base___IAttrRead();
   INIT_ATTRIBUTES__icode___icode_base___IAttrRead(fra.me.REG[2]);
   icode___icode_base___IAttrRead___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -147754,16 +147314,14 @@ val_t NEW_IAttrRead_icode___icode_base___IAttrRead___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrWrite[72] = {
-  {(bigint) 2919 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IAttrWrite[70] = {
+  {(bigint) 2939 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IAttrWrite" /* 2: Class Name */},
   {(bigint) 3 /* 3: IAttrWrite < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IAttrWrite < ICode: superclass typecheck marker */},
-  {(bigint) 2219 /* 5: IAttrWrite < ICode2: superclass typecheck marker */},
-  {(bigint) 2919 /* 6: IAttrWrite < IAttrWrite: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IAttrWrite < ICode: superclass typecheck marker */},
+  {(bigint) 2239 /* 5: IAttrWrite < ICode2: superclass typecheck marker */},
+  {(bigint) 2939 /* 6: IAttrWrite < IAttrWrite: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147775,7 +147333,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IAttrWrite < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IAttrWrite < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147812,7 +147370,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[72] = {
   {(bigint) analysis___icode_dump___IAttrWrite___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IAttrWrite___inner_dup_with},
-  {(bigint) 1 /* 57: IAttrWrite < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IAttrWrite < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode2___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147820,11 +147378,11 @@ const classtable_elt_t VFT_icode___icode_base___IAttrWrite[72] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IAttrWrite < ICode2: superclass init_table position */},
+  {(bigint) 0 /* 63: IAttrWrite < ICode2: superclass init_table position */},
   {(bigint) icode___icode_base___ICode2___expr1},
   {(bigint) icode___icode_base___ICode2___expr2},
   {(bigint) icode___icode_base___ICode2___init},
-  {(bigint) 3 /* 69: IAttrWrite < IAttrWrite: superclass init_table position */},
+  {(bigint) 3 /* 67: IAttrWrite < IAttrWrite: superclass init_table position */},
   {(bigint) icode___icode_base___IAttrWrite___property},
   {(bigint) icode___icode_base___IAttrWrite___init},
 };
@@ -147847,10 +147405,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -147899,7 +147457,7 @@ val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___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 = 437;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_NEW_IAttrWrite_icode___icode_base___IAttrWrite___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -147910,7 +147468,7 @@ val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./icode//icode_base.nit:437 */
+  /* ./icode//icode_base.nit:439 */
   fra.me.REG[3] = NEW_icode___icode_base___IAttrWrite();
   INIT_ATTRIBUTES__icode___icode_base___IAttrWrite(fra.me.REG[3]);
   icode___icode_base___IAttrWrite___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -147918,16 +147476,14 @@ val_t NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(val_t p0, val_t p1,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IAttrIsset[71] = {
-  {(bigint) 2927 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IAttrIsset[69] = {
+  {(bigint) 2947 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IAttrIsset" /* 2: Class Name */},
   {(bigint) 3 /* 3: IAttrIsset < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IAttrIsset < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: IAttrIsset < ICode1: superclass typecheck marker */},
-  {(bigint) 2927 /* 6: IAttrIsset < IAttrIsset: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IAttrIsset < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: IAttrIsset < ICode1: superclass typecheck marker */},
+  {(bigint) 2947 /* 6: IAttrIsset < IAttrIsset: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -147939,7 +147495,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IAttrIsset < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IAttrIsset < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -147976,7 +147532,7 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[71] = {
   {(bigint) analysis___icode_dump___IAttrIsset___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IAttrIsset___inner_dup_with},
-  {(bigint) 1 /* 57: IAttrIsset < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IAttrIsset < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -147984,10 +147540,10 @@ const classtable_elt_t VFT_icode___icode_base___IAttrIsset[71] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IAttrIsset___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IAttrIsset < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: IAttrIsset < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: IAttrIsset < IAttrIsset: superclass init_table position */},
+  {(bigint) 3 /* 66: IAttrIsset < IAttrIsset: superclass init_table position */},
   {(bigint) icode___icode_base___IAttrIsset___property},
   {(bigint) icode___icode_base___IAttrIsset___init},
 };
@@ -148009,10 +147565,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148056,7 +147612,7 @@ val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___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 = 452;
+  fra.me.line = 454;
   fra.me.meth = LOCATE_NEW_IAttrIsset_icode___icode_base___IAttrIsset___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -148065,7 +147621,7 @@ val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:452 */
+  /* ./icode//icode_base.nit:454 */
   fra.me.REG[2] = NEW_icode___icode_base___IAttrIsset();
   INIT_ATTRIBUTES__icode___icode_base___IAttrIsset(fra.me.REG[2]);
   icode___icode_base___IAttrIsset___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -148073,16 +147629,14 @@ val_t NEW_IAttrIsset_icode___icode_base___IAttrIsset___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___ITypeCheck[71] = {
-  {(bigint) 2839 /* 0: Identity */},
-  {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
+const classtable_elt_t VFT_icode___icode_base___ITypeCheck[70] = {
+  {(bigint) 2859 /* 0: Identity */},
+  {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ITypeCheck" /* 2: Class Name */},
   {(bigint) 3 /* 3: ITypeCheck < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: ITypeCheck < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: ITypeCheck < ICode1: superclass typecheck marker */},
-  {(bigint) 2839 /* 6: ITypeCheck < ITypeCheck: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: ITypeCheck < ICode: superclass typecheck marker */},
+  {(bigint) 2239 /* 5: ITypeCheck < ICode2: superclass typecheck marker */},
+  {(bigint) 2859 /* 6: ITypeCheck < ITypeCheck: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148094,7 +147648,7 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ITypeCheck < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ITypeCheck < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148131,18 +147685,19 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[71] = {
   {(bigint) analysis___icode_dump___ITypeCheck___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___ITypeCheck___inner_dup_with},
-  {(bigint) 1 /* 57: ITypeCheck < ICode: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___arity},
+  {(bigint) 1 /* 55: ITypeCheck < ICode: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
   {(bigint) icode___icode_base___ICode___location},
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ITypeCheck___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: ITypeCheck < ICode1: superclass init_table position */},
-  {(bigint) icode___icode_base___ICode1___expr},
-  {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: ITypeCheck < ITypeCheck: superclass init_table position */},
+  {(bigint) 0 /* 63: ITypeCheck < ICode2: superclass init_table position */},
+  {(bigint) icode___icode_base___ICode2___expr1},
+  {(bigint) icode___icode_base___ICode2___expr2},
+  {(bigint) icode___icode_base___ICode2___init},
+  {(bigint) 3 /* 67: ITypeCheck < ITypeCheck: superclass init_table position */},
   {(bigint) icode___icode_base___ITypeCheck___stype},
   {(bigint) icode___icode_base___ITypeCheck___init},
 };
@@ -148150,8 +147705,9 @@ const classtable_elt_t VFT_icode___icode_base___ITypeCheck[71] = {
 /* 1: Object_id */
 /* 2: Attribute ITypeCheck::_result */
 /* 3: Attribute ITypeCheck::_location */
-/* 4: Attribute ITypeCheck::_expr */
-/* 5: Attribute ITypeCheck::_stype */
+/* 4: Attribute ITypeCheck::_expr1 */
+/* 5: Attribute ITypeCheck::_expr2 */
+/* 6: Attribute ITypeCheck::_stype */
 void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -148164,10 +147720,10 @@ void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148175,7 +147731,7 @@ void INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(val_t p0){
 val_t NEW_icode___icode_base___ITypeCheck(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 6);
+  obj = alloc(sizeof(val_t) * 7);
   obj->vft = (classtable_elt_t*)VFT_icode___icode_base___ITypeCheck;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -148198,46 +147754,51 @@ void CHECKNEW_icode___icode_base___ITypeCheck(val_t p0){
   } else {
     nit_abort("Uninitialized attribute %s", "_stype", LOCATE_nitc, 0);
   }
-  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode1____expr(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr1(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_expr", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_expr1", LOCATE_nitc, 0);
+  }
+  REGB0 = TAG_Bool(ATTR_icode___icode_base___ICode2____expr2(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_expr2", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+val_t NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
   int init_table[4] = {0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 468;
+  fra.me.line = 471;
   fra.me.meth = LOCATE_NEW_ITypeCheck_icode___icode_base___ITypeCheck___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:468 */
-  fra.me.REG[2] = NEW_icode___icode_base___ITypeCheck();
-  INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(fra.me.REG[2]);
-  icode___icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
-  CHECKNEW_icode___icode_base___ITypeCheck(fra.me.REG[2]);
+  fra.me.REG[2] = p2;
+  /* ./icode//icode_base.nit:471 */
+  fra.me.REG[3] = NEW_icode___icode_base___ITypeCheck();
+  INIT_ATTRIBUTES__icode___icode_base___ITypeCheck(fra.me.REG[3]);
+  icode___icode_base___ITypeCheck___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
+  CHECKNEW_icode___icode_base___ITypeCheck(fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
-const classtable_elt_t VFT_icode___icode_base___IIs[71] = {
-  {(bigint) 2875 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IIs[69] = {
+  {(bigint) 2895 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IIs" /* 2: Class Name */},
   {(bigint) 3 /* 3: IIs < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IIs < ICode: superclass typecheck marker */},
-  {(bigint) 2219 /* 5: IIs < ICode2: superclass typecheck marker */},
-  {(bigint) 2875 /* 6: IIs < IIs: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IIs < ICode: superclass typecheck marker */},
+  {(bigint) 2239 /* 5: IIs < ICode2: superclass typecheck marker */},
+  {(bigint) 2895 /* 6: IIs < IIs: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148249,7 +147810,7 @@ const classtable_elt_t VFT_icode___icode_base___IIs[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IIs < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IIs < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148286,7 +147847,7 @@ const classtable_elt_t VFT_icode___icode_base___IIs[71] = {
   {(bigint) analysis___icode_dump___IIs___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IIs___inner_dup_with},
-  {(bigint) 1 /* 57: IIs < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IIs < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode2___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -148294,11 +147855,11 @@ const classtable_elt_t VFT_icode___icode_base___IIs[71] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IIs___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IIs < ICode2: superclass init_table position */},
+  {(bigint) 0 /* 63: IIs < ICode2: superclass init_table position */},
   {(bigint) icode___icode_base___ICode2___expr1},
   {(bigint) icode___icode_base___ICode2___expr2},
   {(bigint) icode___icode_base___ICode2___init},
-  {(bigint) 3 /* 69: IIs < IIs: superclass init_table position */},
+  {(bigint) 3 /* 67: IIs < IIs: superclass init_table position */},
   {(bigint) icode___icode_base___IIs___init},
 };
 /* 0: Pointer to the classtable */
@@ -148319,10 +147880,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IIs(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148366,7 +147927,7 @@ val_t NEW_IIs_icode___icode_base___IIs___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 = 481;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_NEW_IIs_icode___icode_base___IIs___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -148375,7 +147936,7 @@ val_t NEW_IIs_icode___icode_base___IIs___init(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./icode//icode_base.nit:481 */
+  /* ./icode//icode_base.nit:484 */
   fra.me.REG[2] = NEW_icode___icode_base___IIs();
   INIT_ATTRIBUTES__icode___icode_base___IIs(fra.me.REG[2]);
   icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -148383,16 +147944,14 @@ val_t NEW_IIs_icode___icode_base___IIs___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_base___INot[70] = {
-  {(bigint) 2863 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___INot[68] = {
+  {(bigint) 2883 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "INot" /* 2: Class Name */},
   {(bigint) 3 /* 3: INot < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: INot < ICode: superclass typecheck marker */},
-  {(bigint) 2223 /* 5: INot < ICode1: superclass typecheck marker */},
-  {(bigint) 2863 /* 6: INot < INot: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: INot < ICode: superclass typecheck marker */},
+  {(bigint) 2243 /* 5: INot < ICode1: superclass typecheck marker */},
+  {(bigint) 2883 /* 6: INot < INot: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148404,7 +147963,7 @@ const classtable_elt_t VFT_icode___icode_base___INot[70] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: INot < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: INot < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148441,7 +148000,7 @@ const classtable_elt_t VFT_icode___icode_base___INot[70] = {
   {(bigint) analysis___icode_dump___INot___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___INot___inner_dup_with},
-  {(bigint) 1 /* 57: INot < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: INot < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -148449,10 +148008,10 @@ const classtable_elt_t VFT_icode___icode_base___INot[70] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___INot___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: INot < ICode1: superclass init_table position */},
+  {(bigint) 0 /* 63: INot < ICode1: superclass init_table position */},
   {(bigint) icode___icode_base___ICode1___expr},
   {(bigint) icode___icode_base___ICode1___init},
-  {(bigint) 3 /* 68: INot < INot: superclass init_table position */},
+  {(bigint) 3 /* 66: INot < INot: superclass init_table position */},
   {(bigint) icode___icode_base___INot___init},
 };
 /* 0: Pointer to the classtable */
@@ -148472,10 +148031,10 @@ void INIT_ATTRIBUTES__icode___icode_base___INot(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148514,14 +148073,14 @@ val_t NEW_INot_icode___icode_base___INot___init(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 = 493;
+  fra.me.line = 496;
   fra.me.meth = LOCATE_NEW_INot_icode___icode_base___INot___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:493 */
+  /* ./icode//icode_base.nit:496 */
   fra.me.REG[1] = NEW_icode___icode_base___INot();
   INIT_ATTRIBUTES__icode___icode_base___INot(fra.me.REG[1]);
   icode___icode_base___INot___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -148529,16 +148088,14 @@ val_t NEW_INot_icode___icode_base___INot___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_base___IOnce[69] = {
-  {(bigint) 2855 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IOnce[67] = {
+  {(bigint) 2875 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IOnce" /* 2: Class Name */},
   {(bigint) 3 /* 3: IOnce < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IOnce < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IOnce < ICode0: superclass typecheck marker */},
-  {(bigint) 2855 /* 6: IOnce < IOnce: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IOnce < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IOnce < ICode0: superclass typecheck marker */},
+  {(bigint) 2875 /* 6: IOnce < IOnce: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148550,7 +148107,7 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IOnce < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IOnce < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148587,7 +148144,7 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[69] = {
   {(bigint) analysis___icode_dump___ICode___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IOnce___inner_dup_with},
-  {(bigint) 1 /* 57: IOnce < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IOnce < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -148595,8 +148152,8 @@ const classtable_elt_t VFT_icode___icode_base___IOnce[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___ICode___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IOnce < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IOnce < IOnce: superclass init_table position */},
+  {(bigint) 0 /* 63: IOnce < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IOnce < IOnce: superclass init_table position */},
   {(bigint) icode___icode_base___IOnce___body},
   {(bigint) icode___icode_base___IOnce___init},
 };
@@ -148617,13 +148174,13 @@ void INIT_ATTRIBUTES__icode___icode_base___IOnce(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:505 */
+  /* ./icode//icode_base.nit:508 */
   fra.me.REG[1] = NEW_ISeq_icode___icode_base___ISeq___init();
   ATTR_icode___icode_base___IOnce____body(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148662,12 +148219,12 @@ val_t NEW_IOnce_icode___icode_base___IOnce___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 = 506;
+  fra.me.line = 509;
   fra.me.meth = LOCATE_NEW_IOnce_icode___icode_base___IOnce___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
-  /* ./icode//icode_base.nit:506 */
+  /* ./icode//icode_base.nit:509 */
   fra.me.REG[0] = NEW_icode___icode_base___IOnce();
   INIT_ATTRIBUTES__icode___icode_base___IOnce(fra.me.REG[0]);
   icode___icode_base___IOnce___init(fra.me.REG[0], init_table);
@@ -148675,16 +148232,14 @@ val_t NEW_IOnce_icode___icode_base___IOnce___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_base___IHasClos[69] = {
-  {(bigint) 2891 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_base___IHasClos[67] = {
+  {(bigint) 2911 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IHasClos" /* 2: Class Name */},
   {(bigint) 3 /* 3: IHasClos < Object: superclass typecheck marker */},
-  {(bigint) 231 /* 4: IHasClos < ICode: superclass typecheck marker */},
-  {(bigint) 2227 /* 5: IHasClos < ICode0: superclass typecheck marker */},
-  {(bigint) 2891 /* 6: IHasClos < IHasClos: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 239 /* 4: IHasClos < ICode: superclass typecheck marker */},
+  {(bigint) 2247 /* 5: IHasClos < ICode0: superclass typecheck marker */},
+  {(bigint) 2911 /* 6: IHasClos < IHasClos: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148696,7 +148251,7 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: IHasClos < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: IHasClos < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148733,7 +148288,7 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[69] = {
   {(bigint) analysis___icode_dump___IHasClos___dump_intern},
   {(bigint) icode___icode_tools___ICode___dup_with},
   {(bigint) icode___icode_tools___IHasClos___inner_dup_with},
-  {(bigint) 1 /* 57: IHasClos < ICode: superclass init_table position */},
+  {(bigint) 1 /* 55: IHasClos < ICode: superclass init_table position */},
   {(bigint) icode___icode_base___ICode0___arity},
   {(bigint) icode___icode_base___ICode___result},
   {(bigint) icode___icode_base___ICode___result__eq},
@@ -148741,8 +148296,8 @@ const classtable_elt_t VFT_icode___icode_base___IHasClos[69] = {
   {(bigint) icode___icode_base___ICode___location__eq},
   {(bigint) icode___icode_base___IHasClos___is_pure},
   {(bigint) icode___icode_base___ICode___init},
-  {(bigint) 0 /* 65: IHasClos < ICode0: superclass init_table position */},
-  {(bigint) 3 /* 66: IHasClos < IHasClos: superclass init_table position */},
+  {(bigint) 0 /* 63: IHasClos < ICode0: superclass init_table position */},
+  {(bigint) 3 /* 64: IHasClos < IHasClos: superclass init_table position */},
   {(bigint) icode___icode_base___IHasClos___closure_decl},
   {(bigint) icode___icode_base___IHasClos___init},
 };
@@ -148763,10 +148318,10 @@ void INIT_ATTRIBUTES__icode___icode_base___IHasClos(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:96 */
+  /* ./icode//icode_base.nit:95 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____result(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_base.nit:99 */
+  /* ./icode//icode_base.nit:98 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_base___ICode____location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -148805,14 +148360,14 @@ val_t NEW_IHasClos_icode___icode_base___IHasClos___init(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 = 515;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_NEW_IHasClos_icode___icode_base___IHasClos___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_base.nit:515 */
+  /* ./icode//icode_base.nit:518 */
   fra.me.REG[1] = NEW_icode___icode_base___IHasClos();
   INIT_ATTRIBUTES__icode___icode_base___IHasClos(fra.me.REG[1]);
   icode___icode_base___IHasClos___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -148820,14 +148375,12 @@ val_t NEW_IHasClos_icode___icode_base___IHasClos___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[73] = {
-  {(bigint) 227 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[71] = {
+  {(bigint) 235 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICodeBuilder" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICodeBuilder < Object: superclass typecheck marker */},
-  {(bigint) 227 /* 4: ICodeBuilder < ICodeBuilder: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 235 /* 4: ICodeBuilder < ICodeBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -148841,7 +148394,7 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[73] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ICodeBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ICodeBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -148871,7 +148424,7 @@ const classtable_elt_t VFT_icode___icode_builder___ICodeBuilder[73] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
-  {(bigint) 1 /* 50: ICodeBuilder < ICodeBuilder: superclass init_table position */},
+  {(bigint) 1 /* 48: ICodeBuilder < ICodeBuilder: superclass init_table position */},
   {(bigint) icode___icode_builder___ICodeBuilder___stmt},
   {(bigint) icode___icode_builder___ICodeBuilder___expr},
   {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
@@ -148979,14 +148532,12 @@ val_t NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[57] = {
-  {(bigint) 215 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[55] = {
+  {(bigint) 223 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICodeVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICodeVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: ICodeVisitor < ICodeVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: ICodeVisitor < ICodeVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149000,7 +148551,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[57] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ICodeVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ICodeVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149029,7 +148580,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeVisitor[57] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ICodeVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: ICodeVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -149053,7 +148604,7 @@ void INIT_ATTRIBUTES__icode___icode_tools___ICodeVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -149096,14 +148647,12 @@ val_t NEW_ICodeVisitor_icode___icode_tools___ICodeVisitor___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[54] = {
-  {(bigint) 219 /* 0: Identity */},
+const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[52] = {
+  {(bigint) 227 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICodeDupContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICodeDupContext < Object: superclass typecheck marker */},
-  {(bigint) 219 /* 4: ICodeDupContext < ICodeDupContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 227 /* 4: ICodeDupContext < ICodeDupContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149117,7 +148666,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ICodeDupContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ICodeDupContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149146,7 +148695,7 @@ const classtable_elt_t VFT_icode___icode_tools___ICodeDupContext[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ICodeDupContext < ICodeDupContext: superclass init_table position */},
+  {(bigint) 1 /* 47: ICodeDupContext < ICodeDupContext: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeDupContext___dup_ireg},
   {(bigint) icode___icode_tools___ICodeDupContext___dup_iregs},
   {(bigint) icode___icode_tools___ICodeDupContext___dup_mark},
@@ -149170,13 +148719,13 @@ void INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:177 */
+  /* ./icode//icode_tools.nit:178 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_icode___icode_tools___ICodeDupContext____registers(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:194 */
+  /* ./icode//icode_tools.nit:195 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_icode___icode_tools___ICodeDupContext____marks(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:197 */
+  /* ./icode//icode_tools.nit:198 */
   fra.me.REG[1] = NEW_ArrayMap_standard___collection___array___ArrayMap___init();
   ATTR_icode___icode_tools___ICodeDupContext____closures(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -149230,14 +148779,14 @@ val_t NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init(val_t p0)
   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 = 202;
+  fra.me.line = 203;
   fra.me.meth = LOCATE_NEW_ICodeDupContext_icode___icode_tools___ICodeDupContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:202 */
+  /* ./icode//icode_tools.nit:203 */
   fra.me.REG[1] = NEW_icode___icode_tools___ICodeDupContext();
   INIT_ATTRIBUTES__icode___icode_tools___ICodeDupContext(fra.me.REG[1]);
   icode___icode_tools___ICodeDupContext___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -149245,15 +148794,13 @@ 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_syntax___flow___RootFlowContext[66] = {
-  {(bigint) 351 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___RootFlowContext[64] = {
+  {(bigint) 363 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RootFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: RootFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 255 /* 4: RootFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 351 /* 5: RootFlowContext < RootFlowContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 263 /* 4: RootFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 363 /* 5: RootFlowContext < RootFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149266,7 +148813,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[66] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: RootFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: RootFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149295,7 +148842,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[66] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: RootFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 47: RootFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___FlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149310,7 +148857,7 @@ const classtable_elt_t VFT_syntax___flow___RootFlowContext[66] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___FlowContext___is_set},
-  {(bigint) 2 /* 64: RootFlowContext < RootFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 62: RootFlowContext < RootFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___RootFlowContext___init},
 };
 /* 0: Pointer to the classtable */
@@ -149415,15 +148962,13 @@ val_t NEW_RootFlowContext_syntax___flow___RootFlowContext___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___flow___SubFlowContext[67] = {
-  {(bigint) 335 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___SubFlowContext[65] = {
+  {(bigint) 343 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SubFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: SubFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 255 /* 4: SubFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 335 /* 5: SubFlowContext < SubFlowContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 263 /* 4: SubFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 343 /* 5: SubFlowContext < SubFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149436,7 +148981,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: SubFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: SubFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149465,7 +149010,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: SubFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 47: SubFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___SubFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149480,7 +149025,7 @@ const classtable_elt_t VFT_syntax___flow___SubFlowContext[67] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___SubFlowContext___is_set},
-  {(bigint) 2 /* 64: SubFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 62: SubFlowContext < SubFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___SubFlowContext___prev},
   {(bigint) syntax___flow___SubFlowContext___with_prev},
 };
@@ -149592,16 +149137,14 @@ val_t NEW_SubFlowContext_syntax___flow___SubFlowContext___with_prev(val_t p0, va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___flow___CastFlowContext[69] = {
-  {(bigint) 2983 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___CastFlowContext[67] = {
+  {(bigint) 3011 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CastFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: CastFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 255 /* 4: CastFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 335 /* 5: CastFlowContext < SubFlowContext: superclass typecheck marker */},
-  {(bigint) 2983 /* 6: CastFlowContext < CastFlowContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 263 /* 4: CastFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 343 /* 5: CastFlowContext < SubFlowContext: superclass typecheck marker */},
+  {(bigint) 3011 /* 6: CastFlowContext < CastFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149613,7 +149156,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: CastFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: CastFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149642,7 +149185,7 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: CastFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 47: CastFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___CastFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149657,10 +149200,10 @@ const classtable_elt_t VFT_syntax___flow___CastFlowContext[69] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___SubFlowContext___is_set},
-  {(bigint) 2 /* 64: CastFlowContext < SubFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 62: CastFlowContext < SubFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___SubFlowContext___prev},
   {(bigint) syntax___flow___SubFlowContext___with_prev},
-  {(bigint) 3 /* 67: CastFlowContext < CastFlowContext: superclass init_table position */},
+  {(bigint) 3 /* 65: CastFlowContext < CastFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___CastFlowContext___init},
 };
 /* 0: Pointer to the classtable */
@@ -149782,15 +149325,13 @@ val_t NEW_CastFlowContext_syntax___flow___CastFlowContext___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[4];
 }
-const classtable_elt_t VFT_syntax___flow___MergeFlowContext[67] = {
-  {(bigint) 2115 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___flow___MergeFlowContext[65] = {
+  {(bigint) 2127 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "MergeFlowContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: MergeFlowContext < Object: superclass typecheck marker */},
-  {(bigint) 255 /* 4: MergeFlowContext < FlowContext: superclass typecheck marker */},
-  {(bigint) 2115 /* 5: MergeFlowContext < MergeFlowContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 263 /* 4: MergeFlowContext < FlowContext: superclass typecheck marker */},
+  {(bigint) 2127 /* 5: MergeFlowContext < MergeFlowContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -149803,7 +149344,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[67] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: MergeFlowContext < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: MergeFlowContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -149832,7 +149373,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[67] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: MergeFlowContext < FlowContext: superclass init_table position */},
+  {(bigint) 0 /* 47: MergeFlowContext < FlowContext: superclass init_table position */},
   {(bigint) syntax___flow___FlowContext___check_is_set},
   {(bigint) syntax___flow___MergeFlowContext___stype},
   {(bigint) syntax___flow___FlowContext___sub_setvariable},
@@ -149847,7 +149388,7 @@ const classtable_elt_t VFT_syntax___flow___MergeFlowContext[67] = {
   {(bigint) syntax___flow___FlowContext___already_unreash__eq},
   {(bigint) syntax___flow___FlowContext___set_variables},
   {(bigint) syntax___flow___MergeFlowContext___is_set},
-  {(bigint) 2 /* 64: MergeFlowContext < MergeFlowContext: superclass init_table position */},
+  {(bigint) 2 /* 62: MergeFlowContext < MergeFlowContext: superclass init_table position */},
   {(bigint) syntax___flow___MergeFlowContext___init},
   {(bigint) syntax___flow___MergeFlowContext___merge_stype},
 };
@@ -149976,7 +149517,7 @@ val_t NEW_MergeFlowContext_syntax___flow___MergeFlowContext___init(val_t p0, val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_syntax___scope___ScopeContext[59] = {
+const classtable_elt_t VFT_syntax___scope___ScopeContext[57] = {
   {(bigint) 55 /* 0: Identity */},
   {(bigint) 6 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ScopeContext" /* 2: Class Name */},
@@ -149993,11 +149534,9 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[59] = {
   {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) 0 /* 20: ScopeContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ScopeContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150026,7 +149565,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeContext[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ScopeContext < ScopeContext: superclass init_table position */},
+  {(bigint) 1 /* 47: ScopeContext < ScopeContext: superclass init_table position */},
   {(bigint) syntax___scope___ScopeContext_____bra},
   {(bigint) syntax___scope___ScopeContext___add_variable},
   {(bigint) syntax___scope___ScopeContext___push},
@@ -150130,7 +149669,7 @@ val_t NEW_ScopeContext_syntax___scope___ScopeContext___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___ScopeBlock[54] = {
+const classtable_elt_t VFT_syntax___scope___ScopeBlock[52] = {
   {(bigint) 59 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ScopeBlock" /* 2: Class Name */},
@@ -150147,11 +149686,9 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[54] = {
   {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) 0 /* 20: ScopeBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ScopeBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150180,7 +149717,7 @@ const classtable_elt_t VFT_syntax___scope___ScopeBlock[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ScopeBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 47: ScopeBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150256,15 +149793,13 @@ val_t NEW_ScopeBlock_syntax___scope___ScopeBlock___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___EscapableBlock[69] = {
-  {(bigint) 2267 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___scope___EscapableBlock[67] = {
+  {(bigint) 2291 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "EscapableBlock" /* 2: Class Name */},
   {(bigint) 3 /* 3: EscapableBlock < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: EscapableBlock < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2267 /* 5: EscapableBlock < EscapableBlock: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2291 /* 5: EscapableBlock < EscapableBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150277,7 +149812,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: EscapableBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: EscapableBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150306,7 +149841,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: EscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 47: EscapableBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150319,7 +149854,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableBlock[69] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 62: EscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 60: EscapableBlock < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
   {(bigint) syntax___scope___EscapableBlock___is_break_block},
   {(bigint) syntax___scope___EscapableBlock___break_list},
@@ -150411,16 +149946,14 @@ val_t NEW_EscapableBlock_syntax___scope___EscapableBlock___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[71] = {
-  {(bigint) 2991 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[69] = {
+  {(bigint) 3019 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "BreakOnlyEscapableBlock" /* 2: Class Name */},
   {(bigint) 3 /* 3: BreakOnlyEscapableBlock < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: BreakOnlyEscapableBlock < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2267 /* 5: BreakOnlyEscapableBlock < EscapableBlock: superclass typecheck marker */},
-  {(bigint) 2991 /* 6: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2291 /* 5: BreakOnlyEscapableBlock < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 3019 /* 6: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150432,7 +149965,7 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[71] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: BreakOnlyEscapableBlock < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: BreakOnlyEscapableBlock < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150461,7 +149994,7 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[71] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: BreakOnlyEscapableBlock < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 47: BreakOnlyEscapableBlock < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150474,14 +150007,14 @@ const classtable_elt_t VFT_syntax___scope___BreakOnlyEscapableBlock[71] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 62: BreakOnlyEscapableBlock < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 60: BreakOnlyEscapableBlock < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
   {(bigint) syntax___scope___BreakOnlyEscapableBlock___is_break_block},
   {(bigint) syntax___scope___EscapableBlock___break_list},
   {(bigint) syntax___scope___EscapableBlock___continue_stype},
   {(bigint) syntax___scope___EscapableBlock___break_flow_contexts},
   {(bigint) syntax___scope___EscapableBlock___init},
-  {(bigint) 3 /* 69: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass init_table position */},
+  {(bigint) 3 /* 67: BreakOnlyEscapableBlock < BreakOnlyEscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___BreakOnlyEscapableBlock___init},
 };
 /* 0: Pointer to the classtable */
@@ -150568,16 +150101,14 @@ val_t NEW_BreakOnlyEscapableBlock_syntax___scope___BreakOnlyEscapableBlock___ini
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___scope___EscapableClosure[72] = {
-  {(bigint) 2955 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___scope___EscapableClosure[70] = {
+  {(bigint) 2983 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "EscapableClosure" /* 2: Class Name */},
   {(bigint) 3 /* 3: EscapableClosure < Object: superclass typecheck marker */},
   {(bigint) 59 /* 4: EscapableClosure < ScopeBlock: superclass typecheck marker */},
-  {(bigint) 2267 /* 5: EscapableClosure < EscapableBlock: superclass typecheck marker */},
-  {(bigint) 2955 /* 6: EscapableClosure < EscapableClosure: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2291 /* 5: EscapableClosure < EscapableBlock: superclass typecheck marker */},
+  {(bigint) 2983 /* 6: EscapableClosure < EscapableClosure: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150589,7 +150120,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[72] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: EscapableClosure < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: EscapableClosure < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150618,7 +150149,7 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[72] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: EscapableClosure < ScopeBlock: superclass init_table position */},
+  {(bigint) 1 /* 47: EscapableClosure < ScopeBlock: superclass init_table position */},
   {(bigint) syntax___scope___ScopeBlock___node},
   {(bigint) syntax___scope___ScopeBlock___add_variable},
   {(bigint) syntax___scope___ScopeBlock___get_variable},
@@ -150631,14 +150162,14 @@ const classtable_elt_t VFT_syntax___scope___EscapableClosure[72] = {
   {(bigint) syntax___icode_generation___EscapableBlock___break_value__eq},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value},
   {(bigint) syntax___icode_generation___EscapableBlock___continue_value__eq},
-  {(bigint) 2 /* 62: EscapableClosure < EscapableBlock: superclass init_table position */},
+  {(bigint) 2 /* 60: EscapableClosure < EscapableBlock: superclass init_table position */},
   {(bigint) syntax___scope___EscapableBlock___lab},
   {(bigint) syntax___scope___EscapableClosure___is_break_block},
   {(bigint) syntax___scope___EscapableClosure___break_list},
   {(bigint) syntax___scope___EscapableClosure___continue_stype},
   {(bigint) syntax___scope___EscapableBlock___break_flow_contexts},
   {(bigint) syntax___scope___EscapableBlock___init},
-  {(bigint) 3 /* 69: EscapableClosure < EscapableClosure: superclass init_table position */},
+  {(bigint) 3 /* 67: EscapableClosure < EscapableClosure: superclass init_table position */},
   {(bigint) syntax___scope___EscapableClosure___closure},
   {(bigint) syntax___scope___EscapableClosure___init},
 };
@@ -150737,18 +150268,16 @@ 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___scope___AEscapeExpr[88] = {
-  {(bigint) 3399 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___scope___AEscapeExpr[86] = {
+  {(bigint) 3439 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AEscapeExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: AEscapeExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AEscapeExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3043 /* 5: AEscapeExpr < ALabelable: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: AEscapeExpr < Prod: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 3399 /* 8: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AEscapeExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3087 /* 5: AEscapeExpr < ALabelable: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: AEscapeExpr < Prod: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 3439 /* 8: AEscapeExpr < AEscapeExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150758,7 +150287,7 @@ const classtable_elt_t VFT_syntax___scope___AEscapeExpr[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AEscapeExpr < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AEscapeExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150800,17 +150329,17 @@ const classtable_elt_t VFT_syntax___scope___AEscapeExpr[88] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AEscapeExpr < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AEscapeExpr < 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) syntax___icode_generation___ANode___accept_icode_generation},
   {(bigint) syntax___typing___ANode___accept_typing},
   {(bigint) syntax___typing___ANode___after_typing},
-  {(bigint) 3 /* 69: AEscapeExpr < ALabelable: superclass init_table position */},
+  {(bigint) 3 /* 67: AEscapeExpr < ALabelable: superclass init_table position */},
   {(bigint) parser___parser_nodes___ALabelable___n_label},
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AEscapeExpr < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AEscapeExpr < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150822,7 +150351,7 @@ const classtable_elt_t VFT_syntax___scope___AEscapeExpr[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 4 /* 84: AEscapeExpr < AEscapeExpr: superclass init_table position */},
+  {(bigint) 4 /* 82: AEscapeExpr < AEscapeExpr: superclass init_table position */},
   {(bigint) syntax___scope___AEscapeExpr___escapable},
   {(bigint) syntax___scope___AEscapeExpr___kwname},
   {(bigint) syntax___scope___AEscapeExpr___compute_escapable_block},
@@ -150896,16 +150425,14 @@ val_t NEW_AEscapeExpr_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___typing___TypingVisitor[108] = {
-  {(bigint) 2351 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___typing___TypingVisitor[106] = {
+  {(bigint) 2379 /* 0: Identity */},
   {(bigint) 16 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TypingVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TypingVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: TypingVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 2351 /* 6: TypingVisitor < TypingVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: TypingVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 2379 /* 6: TypingVisitor < TypingVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -150917,7 +150444,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[108] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: TypingVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: TypingVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -150946,12 +150473,12 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[108] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: TypingVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: TypingVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -150980,7 +150507,7 @@ const classtable_elt_t VFT_syntax___typing___TypingVisitor[108] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: TypingVisitor < TypingVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: 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},
@@ -151130,18 +150657,16 @@ val_t NEW_TypingVisitor_syntax___typing___TypingVisitor___init(val_t p0, val_t p
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_syntax___typing___AAbsControl[88] = {
-  {(bigint) 3483 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___typing___AAbsControl[86] = {
+  {(bigint) 3523 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AAbsControl" /* 2: Class Name */},
   {(bigint) 3 /* 3: AAbsControl < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: AAbsControl < ANode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2063 /* 6: AAbsControl < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: AAbsControl < AExpr: superclass typecheck marker */},
-  {(bigint) 3483 /* 8: AAbsControl < AAbsControl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: AAbsControl < ANode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2075 /* 6: AAbsControl < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: AAbsControl < AExpr: superclass typecheck marker */},
+  {(bigint) 3523 /* 8: AAbsControl < AAbsControl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151151,7 +150676,7 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[88] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: AAbsControl < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: AAbsControl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151193,7 +150718,7 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[88] = {
   {(bigint) parser___parser_prod___ANode___replace_child},
   {(bigint) parser___parser_prod___Prod___replace_with},
   {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: AAbsControl < ANode: superclass init_table position */},
+  {(bigint) 1 /* 60: AAbsControl < ANode: superclass init_table position */},
   {(bigint) parser___parser_nodes___ANode___location},
   {(bigint) parser___parser_nodes___ANode___hot_location},
   {(bigint) parser___parser_nodes___ANode___init},
@@ -151203,19 +150728,19 @@ const classtable_elt_t VFT_syntax___typing___AAbsControl[88] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: AAbsControl < Prod: superclass init_table position */},
+  {(bigint) 0 /* 70: AAbsControl < Prod: superclass init_table position */},
   {(bigint) parser___parser_nodes___Prod___location__eq},
   {(bigint) syntax___typing___AExpr___is_typed},
   {(bigint) syntax___typing___AExpr___is_statement},
   {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: AAbsControl < AExpr: superclass init_table position */},
+  {(bigint) 3 /* 75: AAbsControl < AExpr: superclass init_table position */},
   {(bigint) syntax___icode_generation___AExpr___generate_icode},
   {(bigint) syntax___typing___AExpr___is_implicit_self},
   {(bigint) syntax___typing___AExpr___is_self},
   {(bigint) syntax___typing___AExpr___its_variable},
   {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
   {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-  {(bigint) 4 /* 84: AAbsControl < AAbsControl: superclass init_table position */},
+  {(bigint) 4 /* 82: AAbsControl < AAbsControl: superclass init_table position */},
   {(bigint) syntax___typing___AAbsControl___escapable},
   {(bigint) syntax___typing___AAbsControl___process_control},
   {(bigint) syntax___typing___AAbsControl___process_control_inside},
@@ -151297,179 +150822,15 @@ val_t NEW_AAbsControl_parser___parser_nodes___ANode___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[84] = {
-  {(bigint) 3219 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___typing___ATypeCheckExpr[82] = {
+  {(bigint) 3259 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ATypeCheckExpr" /* 2: Class Name */},
   {(bigint) 3 /* 3: ATypeCheckExpr < Object: superclass typecheck marker */},
-  {(bigint) 299 /* 4: ATypeCheckExpr < ANode: superclass typecheck marker */},
-  {(bigint) 3219 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
-  {(bigint) 2063 /* 6: ATypeCheckExpr < Prod: superclass typecheck marker */},
-  {(bigint) 3067 /* 7: ATypeCheckExpr < AExpr: 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 :( */,
-  {(bigint) nit_version___Object___nit_version},
-  {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ATypeCheckExpr < Object: superclass init_table position */},
-  {(bigint) standard___kernel___Object___object_id},
-  {(bigint) standard___kernel___Object___is_same_type},
-  {(bigint) standard___kernel___Object_____eqeq},
-  {(bigint) standard___kernel___Object_____neq},
-  {(bigint) standard___kernel___Object___output},
-  {(bigint) standard___kernel___Object___output_class_name},
-  {(bigint) standard___kernel___Object___exit},
-  {(bigint) standard___kernel___Object___sys},
-  {(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___string___Object___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___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) syntax___mmbuilder___AExpr___accept_class_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
-  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
-  {(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___ANode___replace_child},
-  {(bigint) parser___parser_prod___Prod___replace_with},
-  {(bigint) parser___parser_prod___ANode___visit_all},
-  {(bigint) 1 /* 62: ATypeCheckExpr < 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) syntax___icode_generation___AExpr___accept_icode_generation},
-  {(bigint) syntax___typing___ANode___accept_typing},
-  {(bigint) syntax___typing___AExpr___after_typing},
-  {(bigint) 4 /* 69: ATypeCheckExpr < ATypeCheckExpr: superclass init_table position */},
-  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
-  {(bigint) parser___parser_prod___ANode___replace_with},
-  {(bigint) 0 /* 72: ATypeCheckExpr < Prod: superclass init_table position */},
-  {(bigint) parser___parser_nodes___Prod___location__eq},
-  {(bigint) syntax___typing___AExpr___is_typed},
-  {(bigint) syntax___typing___AExpr___is_statement},
-  {(bigint) syntax___typing___AExpr___stype},
-  {(bigint) 3 /* 77: ATypeCheckExpr < AExpr: superclass init_table position */},
-  {(bigint) syntax___icode_generation___AExpr___generate_icode},
-  {(bigint) syntax___typing___AExpr___is_implicit_self},
-  {(bigint) syntax___typing___AExpr___is_self},
-  {(bigint) syntax___typing___AExpr___its_variable},
-  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
-  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
-};
-/* 0: Pointer to the classtable */
-/* 1: Object_id */
-/* 2: Attribute ATypeCheckExpr::_parent */
-/* 3: Attribute ATypeCheckExpr::_location */
-/* 4: Attribute ATypeCheckExpr::_first_location */
-/* 5: Attribute ATypeCheckExpr::_last_location */
-/* Instance Hole :( */
-/* 7: Attribute ATypeCheckExpr::_is_typed */
-/* 8: Attribute ATypeCheckExpr::_stype */
-/* 9: Attribute ATypeCheckExpr::_if_true_flow_ctx */
-/* 10: Attribute ATypeCheckExpr::_if_false_flow_ctx */
-void INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(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_INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//typing.nit:356 */
-  REGB0 = TAG_Bool(false);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_syntax___typing___ATypeCheckExpr(void)
-{
-  obj_t obj;
-  obj = alloc(sizeof(val_t) * 11);
-  obj->vft = (classtable_elt_t*)VFT_syntax___typing___ATypeCheckExpr;
-  obj[1].object_id = object_id_counter;
-  object_id_counter = object_id_counter + 1;
-  return OBJ2VAL(obj);
-}
-void CHECKNEW_syntax___typing___ATypeCheckExpr(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_syntax___typing___ATypeCheckExpr;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
-  }
-  stack_frame_head = fra.me.prev;
-}
-val_t NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t tmp;
-  int init_table[5] = {0, 0, 0, 0, 0};
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_nitc;
-  fra.me.line = 0;
-  fra.me.meth = LOCATE_NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = NEW_syntax___typing___ATypeCheckExpr();
-  INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
-  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
-  CHECKNEW_syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
-}
-const classtable_elt_t VFT_primitive_info___PrimitiveInfo[54] = {
-  {(bigint) 99 /* 0: Identity */},
-  {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "PrimitiveInfo" /* 2: Class Name */},
-  {(bigint) 3 /* 3: PrimitiveInfo < Object: superclass typecheck marker */},
-  {(bigint) 99 /* 4: PrimitiveInfo < PrimitiveInfo: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 307 /* 4: ATypeCheckExpr < ANode: superclass typecheck marker */},
+  {(bigint) 3259 /* 5: ATypeCheckExpr < ATypeCheckExpr: superclass typecheck marker */},
+  {(bigint) 2075 /* 6: ATypeCheckExpr < Prod: superclass typecheck marker */},
+  {(bigint) 3111 /* 7: ATypeCheckExpr < AExpr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151480,7 +150841,7 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: PrimitiveInfo < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ATypeCheckExpr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151509,100 +150870,125 @@ const classtable_elt_t VFT_primitive_info___PrimitiveInfo[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: PrimitiveInfo < PrimitiveInfo: superclass init_table position */},
-  {(bigint) primitive_info___PrimitiveInfo___name},
-  {(bigint) primitive_info___PrimitiveInfo___tagged},
-  {(bigint) primitive_info___PrimitiveInfo___cname},
-  {(bigint) primitive_info___PrimitiveInfo___init},
+  {(bigint) syntax___mmbuilder___AExpr___accept_class_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_specialization_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_ancestor_builder},
+  {(bigint) syntax___mmbuilder___ANode___accept_class_verifier},
+  {(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___ANode___replace_child},
+  {(bigint) parser___parser_prod___Prod___replace_with},
+  {(bigint) parser___parser_prod___ANode___visit_all},
+  {(bigint) 1 /* 60: ATypeCheckExpr < 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) syntax___icode_generation___AExpr___accept_icode_generation},
+  {(bigint) syntax___typing___ANode___accept_typing},
+  {(bigint) syntax___typing___AExpr___after_typing},
+  {(bigint) 4 /* 67: ATypeCheckExpr < ATypeCheckExpr: superclass init_table position */},
+  {(bigint) syntax___typing___ATypeCheckExpr___check_expr_cast},
+  {(bigint) parser___parser_prod___ANode___replace_with},
+  {(bigint) 0 /* 70: ATypeCheckExpr < Prod: superclass init_table position */},
+  {(bigint) parser___parser_nodes___Prod___location__eq},
+  {(bigint) syntax___typing___AExpr___is_typed},
+  {(bigint) syntax___typing___AExpr___is_statement},
+  {(bigint) syntax___typing___AExpr___stype},
+  {(bigint) 3 /* 75: ATypeCheckExpr < AExpr: superclass init_table position */},
+  {(bigint) syntax___icode_generation___AExpr___generate_icode},
+  {(bigint) syntax___typing___AExpr___is_implicit_self},
+  {(bigint) syntax___typing___AExpr___is_self},
+  {(bigint) syntax___typing___AExpr___its_variable},
+  {(bigint) syntax___typing___AExpr___if_true_flow_ctx},
+  {(bigint) syntax___typing___AExpr___if_false_flow_ctx},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
-/* 2: Attribute PrimitiveInfo::_name */
-/* 3: Attribute PrimitiveInfo::_tagged */
-/* 4: Attribute PrimitiveInfo::_cname */
-void INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(val_t p0){
+/* 2: Attribute ATypeCheckExpr::_parent */
+/* 3: Attribute ATypeCheckExpr::_location */
+/* 4: Attribute ATypeCheckExpr::_first_location */
+/* 5: Attribute ATypeCheckExpr::_last_location */
+/* Instance Hole :( */
+/* 7: Attribute ATypeCheckExpr::_is_typed */
+/* 8: Attribute ATypeCheckExpr::_stype */
+/* 9: Attribute ATypeCheckExpr::_if_true_flow_ctx */
+/* 10: Attribute ATypeCheckExpr::_if_false_flow_ctx */
+void INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(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_INIT_ATTRIBUTES__primitive_info___PrimitiveInfo;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:356 */
+  REGB0 = TAG_Bool(false);
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_primitive_info___PrimitiveInfo(void)
+val_t NEW_syntax___typing___ATypeCheckExpr(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 5);
-  obj->vft = (classtable_elt_t*)VFT_primitive_info___PrimitiveInfo;
+  obj = alloc(sizeof(val_t) * 11);
+  obj->vft = (classtable_elt_t*)VFT_syntax___typing___ATypeCheckExpr;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
   return OBJ2VAL(obj);
 }
-void CHECKNEW_primitive_info___PrimitiveInfo(val_t p0){
+void CHECKNEW_syntax___typing___ATypeCheckExpr(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_primitive_info___PrimitiveInfo;
+  fra.me.meth = LOCATE_CHECKNEW_syntax___typing___ATypeCheckExpr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____name(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____tagged(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_tagged", LOCATE_nitc, 0);
-  }
-  REGB0 = TAG_Bool(ATTR_primitive_info___PrimitiveInfo____cname(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_cname", LOCATE_nitc, 0);
+    nit_abort("Uninitialized attribute %s", "_is_typed", LOCATE_nitc, 0);
   }
   stack_frame_head = fra.me.prev;
 }
-val_t NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(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 NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  int init_table[2] = {0, 0};
+  int init_table[5] = {0, 0, 0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 87;
-  fra.me.meth = LOCATE_NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_NEW_ATypeCheckExpr_parser___parser_nodes___ANode___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
   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;
-  /* ./primitive_info.nit:87 */
-  fra.me.REG[2] = NEW_primitive_info___PrimitiveInfo();
-  INIT_ATTRIBUTES__primitive_info___PrimitiveInfo(fra.me.REG[2]);
-  primitive_info___PrimitiveInfo___init(fra.me.REG[2], fra.me.REG[0], REGB0, fra.me.REG[1], init_table);
-  CHECKNEW_primitive_info___PrimitiveInfo(fra.me.REG[2]);
+  fra.me.REG[1] = NEW_syntax___typing___ATypeCheckExpr();
+  INIT_ATTRIBUTES__syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
+  parser___parser_nodes___ANode___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_syntax___typing___ATypeCheckExpr(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[1];
 }
 const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
-  {(bigint) 2347 /* 0: Identity */},
-  {(bigint) 13 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) 2375 /* 0: Identity */},
+  {(bigint) 14 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "A2IContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: A2IContext < Object: superclass typecheck marker */},
-  {(bigint) 227 /* 4: A2IContext < ICodeBuilder: superclass typecheck marker */},
-  {(bigint) 2347 /* 5: A2IContext < A2IContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 235 /* 4: A2IContext < ICodeBuilder: superclass typecheck marker */},
+  {(bigint) 2375 /* 5: A2IContext < A2IContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151615,7 +151001,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: A2IContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: A2IContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151645,7 +151031,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) icode___icode_tools___ICodeBuilder___inline_routine},
-  {(bigint) 1 /* 50: A2IContext < ICodeBuilder: superclass init_table position */},
+  {(bigint) 1 /* 48: A2IContext < ICodeBuilder: superclass init_table position */},
   {(bigint) syntax___icode_generation___A2IContext___stmt},
   {(bigint) icode___icode_builder___ICodeBuilder___expr},
   {(bigint) icode___icode_builder___ICodeBuilder___add_assignment},
@@ -151668,7 +151054,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {(bigint) icode___icode_builder___ICodeBuilder___init},
   {(bigint) icode___icode_builder___ICodeBuilder___current_location},
   {(bigint) icode___icode_builder___ICodeBuilder___current_location__eq},
-  {(bigint) 2 /* 73: A2IContext < A2IContext: superclass init_table position */},
+  {(bigint) 2 /* 71: A2IContext < A2IContext: superclass init_table position */},
   {(bigint) icode___icode_builder___ICodeBuilder___stmt},
   {(bigint) syntax___icode_generation___A2IContext___add_new_array},
   {(bigint) syntax___icode_generation___A2IContext___add_call_array_add},
@@ -151680,6 +151066,8 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
   {(bigint) syntax___icode_generation___A2IContext___return_value},
   {(bigint) syntax___icode_generation___A2IContext___return_value__eq},
   {(bigint) syntax___icode_generation___A2IContext___method},
+  {(bigint) syntax___icode_generation___A2IContext___selfreg},
+  {(bigint) syntax___icode_generation___A2IContext___selfreg__eq},
   {(bigint) syntax___icode_generation___A2IContext___init},
   {(bigint) syntax___icode_generation___A2IContext___invoke_super_init_calls_after},
   {(bigint) syntax___icode_generation___A2IContext___generate_stmt},
@@ -151697,7 +151085,8 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IContext[89] = {
 /* 9: Attribute A2IContext::_return_seq */
 /* 10: Attribute A2IContext::_return_value */
 /* 11: Attribute A2IContext::_method */
-/* 12: Attribute A2IContext::_current_node */
+/* 12: Attribute A2IContext::@selfreg */
+/* 13: Attribute A2IContext::_current_node */
 void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
@@ -151716,7 +151105,7 @@ void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0){
   /* ./syntax//icode_generation.nit:71 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_syntax___icode_generation___A2IContext____closurevariables(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:137 */
+  /* ./syntax//icode_generation.nit:140 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
   /* ./icode//icode_builder.nit:220 */
@@ -151727,7 +151116,7 @@ void INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(val_t p0){
 val_t NEW_syntax___icode_generation___A2IContext(void)
 {
   obj_t obj;
-  obj = alloc(sizeof(val_t) * 13);
+  obj = alloc(sizeof(val_t) * 14);
   obj->vft = (classtable_elt_t*)VFT_syntax___icode_generation___A2IContext;
   obj[1].object_id = object_id_counter;
   object_id_counter = object_id_counter + 1;
@@ -151783,7 +151172,7 @@ val_t NEW_A2IContext_syntax___icode_generation___A2IContext___init(val_t p0, val
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 85;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_NEW_A2IContext_syntax___icode_generation___A2IContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -151794,7 +151183,7 @@ val_t NEW_A2IContext_syntax___icode_generation___A2IContext___init(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:85 */
+  /* ./syntax//icode_generation.nit:88 */
   fra.me.REG[3] = NEW_syntax___icode_generation___A2IContext();
   INIT_ATTRIBUTES__syntax___icode_generation___A2IContext(fra.me.REG[3]);
   syntax___icode_generation___A2IContext___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -151802,16 +151191,14 @@ 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[87] = {
-  {(bigint) 3099 /* 0: Identity */},
+const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[85] = {
+  {(bigint) 3143 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "A2IVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: A2IVisitor < Object: superclass typecheck marker */},
   {(bigint) 15 /* 4: A2IVisitor < Visitor: superclass typecheck marker */},
-  {(bigint) 2343 /* 5: A2IVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
-  {(bigint) 3099 /* 6: A2IVisitor < A2IVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2371 /* 5: A2IVisitor < AbsSyntaxVisitor: superclass typecheck marker */},
+  {(bigint) 3143 /* 6: A2IVisitor < A2IVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151823,7 +151210,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[87] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: A2IVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: A2IVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -151852,12 +151239,12 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[87] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: A2IVisitor < Visitor: superclass init_table position */},
+  {(bigint) 1 /* 47: 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) 2 /* 54: A2IVisitor < AbsSyntaxVisitor: superclass init_table position */},
+  {(bigint) 2 /* 52: 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},
@@ -151886,7 +151273,7 @@ const classtable_elt_t VFT_syntax___icode_generation___A2IVisitor[87] = {
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___check_conform_multiexpr},
   {(bigint) syntax___syntax_base___AbsSyntaxVisitor___init},
-  {(bigint) 3 /* 83: A2IVisitor < A2IVisitor: superclass init_table position */},
+  {(bigint) 3 /* 81: 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},
@@ -151955,7 +151342,7 @@ val_t NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(val_t p0, 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 = 286;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -151964,7 +151351,7 @@ val_t NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:286 */
+  /* ./syntax//icode_generation.nit:289 */
   fra.me.REG[2] = NEW_syntax___icode_generation___A2IVisitor();
   INIT_ATTRIBUTES__syntax___icode_generation___A2IVisitor(fra.me.REG[2]);
   syntax___icode_generation___A2IVisitor___init(fra.me.REG[2], fra.me.REG[0], fra.me.REG[1], init_table);
@@ -151973,14 +151360,12 @@ val_t NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(val_t p0, val
   return fra.me.REG[2];
 }
 const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
-  {(bigint) 339 /* 0: Identity */},
+  {(bigint) 347 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SrcModuleLoader" /* 2: Class Name */},
   {(bigint) 3 /* 3: SrcModuleLoader < Object: superclass typecheck marker */},
   {(bigint) 127 /* 4: SrcModuleLoader < ModuleLoader: superclass typecheck marker */},
-  {(bigint) 339 /* 5: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 347 /* 5: SrcModuleLoader < SrcModuleLoader: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -151993,7 +151378,7 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: SrcModuleLoader < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: SrcModuleLoader < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -152022,7 +151407,9 @@ const classtable_elt_t VFT_syntax___SrcModuleLoader[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: SrcModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) 1 /* 47: SrcModuleLoader < ModuleLoader: superclass init_table position */},
+  {(bigint) 2159 /* 48: VT SrcModuleLoader::MODULE : id of MMSrcModule */},
+  {(bigint) 5 /* 49: VT SrcModuleLoader::MODULE : color of MMSrcModule */},
   {(bigint) syntax___SrcModuleLoader___file_type},
   {(bigint) mmloader___ModuleLoader___try_to_load_dir},
   {(bigint) mmloader___ModuleLoader___can_handle},
@@ -152086,16 +151473,14 @@ val_t NEW_SrcModuleLoader_syntax___SrcModuleLoader___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_abstracttool___AbstractCompiler[141] = {
-  {(bigint) 2995 /* 0: Identity */},
+const classtable_elt_t VFT_abstracttool___AbstractCompiler[140] = {
+  {(bigint) 3035 /* 0: Identity */},
   {(bigint) 52 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbstractCompiler" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbstractCompiler < Object: superclass typecheck marker */},
-  {(bigint) 179 /* 4: AbstractCompiler < MMContext: superclass typecheck marker */},
-  {(bigint) 319 /* 5: AbstractCompiler < ToolContext: superclass typecheck marker */},
-  {(bigint) 2995 /* 6: AbstractCompiler < AbstractCompiler: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 187 /* 4: AbstractCompiler < MMContext: superclass typecheck marker */},
+  {(bigint) 327 /* 5: AbstractCompiler < ToolContext: superclass typecheck marker */},
+  {(bigint) 3035 /* 6: AbstractCompiler < AbstractCompiler: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -152107,7 +151492,7 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[141] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: AbstractCompiler < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: AbstractCompiler < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -152136,7 +151521,8 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[141] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: AbstractCompiler < MMContext: superclass init_table position */},
+  {(bigint) syntax___mmbuilder___ToolContext___handle_property_conflict},
+  {(bigint) 1 /* 48: AbstractCompiler < MMContext: superclass init_table position */},
   {(bigint) metamodel___abstractmetamodel___MMContext___init},
   {(bigint) metamodel___abstractmetamodel___MMContext___module_hierarchy},
   {(bigint) metamodel___abstractmetamodel___MMContext___class_hierarchy},
@@ -152166,7 +151552,7 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[141] = {
   {(bigint) analysis___ToolContext___no_out_of_init_get_test_removal__eq},
   {(bigint) syntax___ToolContext___keep_ast},
   {(bigint) syntax___ToolContext___keep_ast__eq},
-  {(bigint) 2 /* 79: AbstractCompiler < ToolContext: superclass init_table position */},
+  {(bigint) 2 /* 78: AbstractCompiler < ToolContext: superclass init_table position */},
   {(bigint) mmloader___ToolContext___error_count},
   {(bigint) mmloader___ToolContext___warning_count},
   {(bigint) mmloader___ToolContext___log_directory},
@@ -152222,7 +151608,7 @@ const classtable_elt_t VFT_abstracttool___AbstractCompiler[141] = {
   {(bigint) compiling___compiling_base___ToolContext___cc_include_paths__eq},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix},
   {(bigint) compiling___compiling_base___ToolContext___ext_prefix__eq},
-  {(bigint) 3 /* 135: AbstractCompiler < AbstractCompiler: superclass init_table position */},
+  {(bigint) 3 /* 134: AbstractCompiler < AbstractCompiler: superclass init_table position */},
   {(bigint) abstracttool___AbstractCompiler___init},
   {(bigint) abstracttool___AbstractCompiler___tool_name},
   {(bigint) abstracttool___AbstractCompiler___exec_cmd_line},
@@ -152335,13 +151721,13 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   /* ./syntax//syntax.nit:98 */
   REGB0 = TAG_Bool(false);
   ATTR_syntax___ToolContext____keep_ast(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:99 */
+  /* ./mmloader.nit:98 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____error_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:102 */
+  /* ./mmloader.nit:101 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____warning_count(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:105 */
+  /* ./mmloader.nit:104 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("logs");
     REGB0 = TAG_Int(4);
@@ -152351,22 +151737,22 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   ATTR_mmloader___ToolContext____log_directory(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:108 */
+  /* ./mmloader.nit:107 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____messages(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:109 */
+  /* ./mmloader.nit:108 */
   fra.me.REG[1] = NEW_ComparableSorter_standard___collection___sorter___ComparableSorter___init();
   ATTR_mmloader___ToolContext____message_sorter(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:167 */
+  /* ./mmloader.nit:166 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____paths(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:170 */
+  /* ./mmloader.nit:169 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_mmloader___ToolContext____loaders(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:173 */
+  /* ./mmloader.nit:172 */
   fra.me.REG[1] = NEW_OptionContext_opts___OptionContext___init();
   ATTR_mmloader___ToolContext____option_context(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:176 */
+  /* ./mmloader.nit:175 */
   if (!once_value_2) {
     fra.me.REG[1] = BOX_NativeString("Show warnings");
     REGB0 = TAG_Int(13);
@@ -152397,7 +151783,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_warn(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:179 */
+  /* ./mmloader.nit:178 */
   if (!once_value_5) {
     fra.me.REG[2] = BOX_NativeString("Set include path for loaders (may be used more than once)");
     REGB0 = TAG_Int(57);
@@ -152428,7 +151814,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionArray_opts___OptionArray___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_path(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:182 */
+  /* ./mmloader.nit:181 */
   if (!once_value_8) {
     fra.me.REG[1] = BOX_NativeString("Generate various log files");
     REGB0 = TAG_Int(26);
@@ -152450,7 +151836,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_log(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:185 */
+  /* ./mmloader.nit:184 */
   if (!once_value_10) {
     fra.me.REG[2] = BOX_NativeString("Directory where to generate log files");
     REGB0 = TAG_Int(37);
@@ -152472,7 +151858,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionString_opts___OptionString___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_log_dir(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:188 */
+  /* ./mmloader.nit:187 */
   if (!once_value_12) {
     fra.me.REG[1] = BOX_NativeString("Stop after meta-model processing");
     REGB0 = TAG_Int(32);
@@ -152494,7 +151880,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_only_metamodel(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:191 */
+  /* ./mmloader.nit:190 */
   if (!once_value_14) {
     fra.me.REG[2] = BOX_NativeString("Only proceed to parse step of loaders");
     REGB0 = TAG_Int(37);
@@ -152516,7 +151902,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_only_parse(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:194 */
+  /* ./mmloader.nit:193 */
   if (!once_value_16) {
     fra.me.REG[1] = BOX_NativeString("Show Help (This screen)");
     REGB0 = TAG_Int(23);
@@ -152556,7 +151942,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_help(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:197 */
+  /* ./mmloader.nit:196 */
   if (!once_value_20) {
     fra.me.REG[2] = BOX_NativeString("Show version and exit");
     REGB0 = TAG_Int(21);
@@ -152578,7 +151964,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_version(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:200 */
+  /* ./mmloader.nit:199 */
   if (!once_value_22) {
     fra.me.REG[1] = BOX_NativeString("Verbose");
     REGB0 = TAG_Int(7);
@@ -152609,7 +151995,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionCount_opts___OptionCount___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_verbose(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:203 */
+  /* ./mmloader.nit:202 */
   if (!once_value_25) {
     fra.me.REG[2] = BOX_NativeString("Stop on first error");
     REGB0 = TAG_Int(19);
@@ -152631,7 +152017,7 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   fra.me.REG[1] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[2], fra.me.REG[1]);
   ATTR_mmloader___ToolContext____opt_stop_on_first_error(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./mmloader.nit:206 */
+  /* ./mmloader.nit:205 */
   if (!once_value_27) {
     fra.me.REG[1] = BOX_NativeString("Do not use color to display errors and warnings");
     REGB0 = TAG_Int(47);
@@ -152653,13 +152039,13 @@ void INIT_ATTRIBUTES__abstracttool___AbstractCompiler(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[2] = NEW_OptionBool_opts___OptionBool___init(fra.me.REG[1], fra.me.REG[2]);
   ATTR_mmloader___ToolContext____opt_no_color(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:209 */
+  /* ./mmloader.nit:208 */
   REGB0 = TAG_Int(0);
   ATTR_mmloader___ToolContext____verbose_level(fra.me.REG[0]) = REGB0;
-  /* ./mmloader.nit:292 */
+  /* ./mmloader.nit:291 */
   fra.me.REG[2] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_mmloader___ToolContext____processing_modules(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./mmloader.nit:359 */
+  /* ./mmloader.nit:358 */
   fra.me.REG[2] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_mmloader___ToolContext____path_dirs(fra.me.REG[0]) = fra.me.REG[2];
   /* ./metamodel//abstractmetamodel.nit:30 */
@@ -153087,7 +152473,7 @@ val_t NEW_AbstractCompiler_abstracttool___AbstractCompiler___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_program___Program[106] = {
+const classtable_elt_t VFT_program___Program[104] = {
   {(bigint) 91 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Program" /* 2: Class Name */},
@@ -153104,11 +152490,9 @@ const classtable_elt_t VFT_program___Program[106] = {
   {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) 0 /* 20: Program < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Program < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153152,7 +152536,7 @@ const classtable_elt_t VFT_program___Program[106] = {
   {(bigint) analysis___instantiated_type_analysis___Program___ita__eq},
   {(bigint) analysis___instantiated_type_analysis___Program___dump_instantiated_types},
   {(bigint) analysis___instantiated_type_analysis___Program___dump_not_instantiated_types},
-  {(bigint) 1 /* 64: Program < Program: superclass init_table position */},
+  {(bigint) 1 /* 62: Program < Program: superclass init_table position */},
   {(bigint) program___Program___tc},
   {(bigint) program___Program___main_module},
   {(bigint) program___Program___main_method},
@@ -153226,7 +152610,7 @@ void INIT_ATTRIBUTES__program___Program(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling.nit:28 */
+  /* ./compiling//compiling.nit:29 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("none");
     REGB0 = TAG_Int(4);
@@ -153266,10 +152650,10 @@ void INIT_ATTRIBUTES__program___Program(val_t p0){
   /* ./analysis//reachable_from_init_method_analysis.nit:25 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_analysis___reachable_from_init_method_analysis___Program____rfima(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:138 */
+  /* ./compiling//table_computation.nit:141 */
   fra.me.REG[1] = NEW_TableInformation_compiling___table_computation___ColorContext___init();
   ATTR_compiling___table_computation___Program____table_information(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//table_computation.nit:141 */
+  /* ./compiling//table_computation.nit:144 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___table_computation___Program____compiled_classes(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -153365,7 +152749,7 @@ val_t NEW_Program_program___Program___init(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___Writer[59] = {
+const classtable_elt_t VFT_compiling___compiling_writer___Writer[57] = {
   {(bigint) 11 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "Writer" /* 2: Class Name */},
@@ -153382,11 +152766,9 @@ const classtable_elt_t VFT_compiling___compiling_writer___Writer[59] = {
   {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) 0 /* 20: Writer < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: Writer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153415,7 +152797,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___Writer[59] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: Writer < Writer: superclass init_table position */},
+  {(bigint) 1 /* 47: Writer < Writer: superclass init_table position */},
   {(bigint) compiling___compiling_writer___Writer___add},
   {(bigint) compiling___compiling_writer___Writer___add_all},
   {(bigint) compiling___compiling_writer___Writer___append},
@@ -153515,15 +152897,13 @@ val_t NEW_Writer_compiling___compiling_writer___Writer___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[54] = {
-  {(bigint) 311 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[52] = {
+  {(bigint) 319 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "WriterCoreNode" /* 2: Class Name */},
   {(bigint) 3 /* 3: WriterCoreNode < Object: superclass typecheck marker */},
   {(bigint) 7 /* 4: WriterCoreNode < WriterNode: superclass typecheck marker */},
-  {(bigint) 311 /* 5: WriterCoreNode < WriterCoreNode: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 319 /* 5: WriterCoreNode < WriterCoreNode: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153536,7 +152916,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: WriterCoreNode < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: WriterCoreNode < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153565,10 +152945,10 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterCoreNode[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: WriterCoreNode < WriterNode: superclass init_table position */},
+  {(bigint) 0 /* 47: WriterCoreNode < WriterNode: superclass init_table position */},
   {(bigint) compiling___compiling_writer___WriterCoreNode___internal_write_to_stream},
   {(bigint) compiling___compiling_writer___WriterNode___init},
-  {(bigint) 2 /* 52: WriterCoreNode < WriterCoreNode: superclass init_table position */},
+  {(bigint) 2 /* 50: WriterCoreNode < WriterCoreNode: superclass init_table position */},
   {(bigint) compiling___compiling_writer___WriterCoreNode___init},
 };
 /* 0: Pointer to the classtable */
@@ -153641,15 +153021,13 @@ val_t NEW_WriterCoreNode_compiling___compiling_writer___WriterCoreNode___init(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[54] = {
-  {(bigint) 307 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[52] = {
+  {(bigint) 315 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "WriterStrings" /* 2: Class Name */},
   {(bigint) 3 /* 3: WriterStrings < Object: superclass typecheck marker */},
   {(bigint) 7 /* 4: WriterStrings < WriterNode: superclass typecheck marker */},
-  {(bigint) 307 /* 5: WriterStrings < WriterStrings: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 315 /* 5: WriterStrings < WriterStrings: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153662,7 +153040,7 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: WriterStrings < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: WriterStrings < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153691,10 +153069,10 @@ const classtable_elt_t VFT_compiling___compiling_writer___WriterStrings[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 0 /* 49: WriterStrings < WriterNode: superclass init_table position */},
+  {(bigint) 0 /* 47: WriterStrings < WriterNode: superclass init_table position */},
   {(bigint) compiling___compiling_writer___WriterStrings___internal_write_to_stream},
   {(bigint) compiling___compiling_writer___WriterNode___init},
-  {(bigint) 2 /* 52: WriterStrings < WriterStrings: superclass init_table position */},
+  {(bigint) 2 /* 50: WriterStrings < WriterStrings: superclass init_table position */},
   {(bigint) compiling___compiling_writer___WriterStrings___init},
 };
 /* 0: Pointer to the classtable */
@@ -153771,14 +153149,12 @@ val_t NEW_WriterStrings_compiling___compiling_writer___WriterStrings___init(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___compiling_base___CProgram[60] = {
-  {(bigint) 283 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_base___CProgram[58] = {
+  {(bigint) 291 /* 0: Identity */},
   {(bigint) 8 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CProgram" /* 2: Class Name */},
   {(bigint) 3 /* 3: CProgram < Object: superclass typecheck marker */},
-  {(bigint) 283 /* 4: CProgram < CProgram: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 291 /* 4: CProgram < CProgram: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153792,7 +153168,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: CProgram < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: CProgram < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153821,7 +153197,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CProgram[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: CProgram < CProgram: superclass init_table position */},
+  {(bigint) 1 /* 47: CProgram < CProgram: superclass init_table position */},
   {(bigint) compiling___compiling_base___CProgram___init},
   {(bigint) compiling___compiling_base___CProgram___program},
   {(bigint) compiling___compiling_base___CProgram___files},
@@ -153938,14 +153314,12 @@ val_t NEW_CProgram_compiling___compiling_base___CProgram___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[74] = {
-  {(bigint) 263 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[72] = {
+  {(bigint) 271 /* 0: Identity */},
   {(bigint) 12 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CompilerVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: CompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 263 /* 4: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 271 /* 4: CompilerVisitor < CompilerVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -153959,7 +153333,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[74] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: CompilerVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: CompilerVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -153988,7 +153362,7 @@ const classtable_elt_t VFT_compiling___compiling_base___CompilerVisitor[74] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: CompilerVisitor < CompilerVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: CompilerVisitor < CompilerVisitor: superclass init_table position */},
   {(bigint) compiling___compiling_base___CompilerVisitor___add_decl},
   {(bigint) compiling___compiling_base___CompilerVisitor___add_instr},
   {(bigint) compiling___compiling_base___CompilerVisitor___add_indent},
@@ -154142,15 +153516,13 @@ val_t NEW_CompilerVisitor_compiling___compiling_base___CompilerVisitor___init(va
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[67] = {
-  {(bigint) 2211 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor[65] = {
+  {(bigint) 2231 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IRegisterSlotAllocationVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: IRegisterSlotAllocationVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2211 /* 5: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2231 /* 5: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154163,7 +153535,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IRegisterSlotAllocationVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154192,7 +153564,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: IRegisterSlotAllocationVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_read},
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -154200,7 +153572,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___IRegisterSlotAl
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_closure_defs},
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: IRegisterSlotAllocationVisitor < IRegisterSlotAllocationVisitor: superclass init_table position */},
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___mark_locality},
   {(bigint) analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor___deferred_free},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
@@ -154253,7 +153625,7 @@ void INIT_ATTRIBUTES__analysis___allocate_iregister_slots___IRegisterSlotAllocat
   /* ./analysis//allocate_iregister_slots.nit:185 */
   fra.me.REG[1] = NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init();
   ATTR_analysis___allocate_iregister_slots___IRegisterSlotAllocationVisitor____tag_slots(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -154342,7 +153714,7 @@ val_t NEW_IRegisterSlotAllocationVisitor_analysis___allocate_iregister_slots___I
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[53] = {
+const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[51] = {
   {(bigint) 47 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "SlotGroup" /* 2: Class Name */},
@@ -154359,11 +153731,9 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[53] =
   {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) 0 /* 20: SlotGroup < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: SlotGroup < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154392,7 +153762,7 @@ const classtable_elt_t VFT_analysis___allocate_iregister_slots___SlotGroup[53] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: SlotGroup < SlotGroup: superclass init_table position */},
+  {(bigint) 1 /* 47: SlotGroup < SlotGroup: superclass init_table position */},
   {(bigint) analysis___allocate_iregister_slots___SlotGroup___register},
   {(bigint) analysis___allocate_iregister_slots___SlotGroup___free},
   {(bigint) analysis___allocate_iregister_slots___SlotGroup___init},
@@ -154473,14 +153843,12 @@ val_t NEW_SlotGroup_analysis___allocate_iregister_slots___SlotGroup___init(void)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[63] = {
-  {(bigint) 223 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[61] = {
+  {(bigint) 231 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ICodeDumper" /* 2: Class Name */},
   {(bigint) 3 /* 3: ICodeDumper < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: ICodeDumper < ICodeDumper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 231 /* 4: ICodeDumper < ICodeDumper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154494,7 +153862,7 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[63] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ICodeDumper < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ICodeDumper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154523,7 +153891,7 @@ const classtable_elt_t VFT_analysis___icode_dump___ICodeDumper[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) 1 /* 47: ICodeDumper < ICodeDumper: superclass init_table position */},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_locations},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_line_numbers},
   {(bigint) analysis___icode_dump___ICodeDumper___init},
@@ -154667,15 +154035,13 @@ val_t NEW_ICodeDumper_analysis___icode_dump___ICodeDumper___init(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[60] = {
-  {(bigint) 2199 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[58] = {
+  {(bigint) 2215 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "InlineMethodVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: InlineMethodVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: InlineMethodVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2199 /* 5: InlineMethodVisitor < InlineMethodVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: InlineMethodVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2215 /* 5: InlineMethodVisitor < InlineMethodVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154688,7 +154054,7 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[60] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: InlineMethodVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: InlineMethodVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154717,7 +154083,7 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[60] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: InlineMethodVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: InlineMethodVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -154725,7 +154091,7 @@ const classtable_elt_t VFT_analysis___inline_methods___InlineMethodVisitor[60] =
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: InlineMethodVisitor < InlineMethodVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: InlineMethodVisitor < InlineMethodVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
   {(bigint) analysis___inline_methods___InlineMethodVisitor___init},
 };
@@ -154750,7 +154116,7 @@ void INIT_ATTRIBUTES__analysis___inline_methods___InlineMethodVisitor(val_t p0){
   /* ./analysis//inline_methods.nit:24 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___inline_methods___InlineMethodVisitor____pass(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -154811,7 +154177,7 @@ val_t NEW_InlineMethodVisitor_analysis___inline_methods___InlineMethodVisitor___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMethodAnalysis[53] = {
+const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMethodAnalysis[51] = {
   {(bigint) 71 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReachableMethodAnalysis" /* 2: Class Name */},
@@ -154828,11 +154194,9 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMetho
   {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) 0 /* 20: ReachableMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ReachableMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154861,7 +154225,7 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___ReachableMetho
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: ReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___is_iroutine_reachable},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___is_method_reachable},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
@@ -154917,15 +154281,13 @@ val_t NEW_ReachableMethodAnalysis_analysis___reachable_method_analysis___Reachab
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis[55] = {
-  {(bigint) 2275 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachableMethodAnalysis[53] = {
+  {(bigint) 2299 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "DefaultReachableMethodAnalysis" /* 2: Class Name */},
   {(bigint) 3 /* 3: DefaultReachableMethodAnalysis < Object: superclass typecheck marker */},
   {(bigint) 71 /* 4: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2275 /* 5: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2299 /* 5: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -154938,7 +154300,7 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachab
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: DefaultReachableMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -154967,11 +154329,11 @@ const classtable_elt_t VFT_analysis___reachable_method_analysis___DefaultReachab
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: DefaultReachableMethodAnalysis < ReachableMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___is_iroutine_reachable},
   {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___is_method_reachable},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 53: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) 2 /* 51: DefaultReachableMethodAnalysis < DefaultReachableMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_method_analysis___DefaultReachableMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
@@ -155026,15 +154388,13 @@ val_t NEW_DefaultReachableMethodAnalysis_analysis___reachable_method_analysis___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[55] = {
-  {(bigint) 2319 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[53] = {
+  {(bigint) 2347 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ChaContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: ChaContext < Object: superclass typecheck marker */},
   {(bigint) 71 /* 4: ChaContext < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2319 /* 5: ChaContext < ChaContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2347 /* 5: ChaContext < ChaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155047,7 +154407,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[55] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ChaContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ChaContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155076,11 +154436,11 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaContext[55] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ChaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: ChaContext < ReachableMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___cha_analysis___ChaContext___is_iroutine_reachable},
   {(bigint) analysis___cha_analysis___ChaContext___is_method_reachable},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 53: ChaContext < ChaContext: superclass init_table position */},
+  {(bigint) 2 /* 51: ChaContext < ChaContext: superclass init_table position */},
   {(bigint) analysis___cha_analysis___ChaContext___reachable_iroutines},
 };
 /* 0: Pointer to the classtable */
@@ -155149,14 +154509,12 @@ val_t NEW_ChaContext_analysis___reachable_method_analysis___ReachableMethodAnaly
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[56] = {
-  {(bigint) 279 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[54] = {
+  {(bigint) 287 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ChaBuilder" /* 2: Class Name */},
   {(bigint) 3 /* 3: ChaBuilder < Object: superclass typecheck marker */},
-  {(bigint) 279 /* 4: ChaBuilder < ChaBuilder: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 287 /* 4: ChaBuilder < ChaBuilder: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155170,7 +154528,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[56] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ChaBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ChaBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155199,7 +154557,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaBuilder[56] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ChaBuilder < ChaBuilder: superclass init_table position */},
+  {(bigint) 1 /* 47: ChaBuilder < ChaBuilder: superclass init_table position */},
   {(bigint) analysis___cha_analysis___ChaBuilder___iroutine_to_search},
   {(bigint) analysis___cha_analysis___ChaBuilder___context},
   {(bigint) analysis___cha_analysis___ChaBuilder___program},
@@ -155288,15 +154646,13 @@ val_t NEW_ChaBuilder_analysis___cha_analysis___ChaBuilder___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[61] = {
-  {(bigint) 2315 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[59] = {
+  {(bigint) 2343 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ChaVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: ChaVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: ChaVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2315 /* 5: ChaVisitor < ChaVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: ChaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2343 /* 5: ChaVisitor < ChaVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155309,7 +154665,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ChaVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ChaVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155338,7 +154694,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ChaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: ChaVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -155346,7 +154702,7 @@ const classtable_elt_t VFT_analysis___cha_analysis___ChaVisitor[61] = {
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: ChaVisitor < ChaVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: ChaVisitor < ChaVisitor: superclass init_table position */},
   {(bigint) analysis___cha_analysis___ChaVisitor___builder},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
   {(bigint) analysis___cha_analysis___ChaVisitor___init},
@@ -155367,7 +154723,7 @@ void INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -155406,14 +154762,14 @@ val_t NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 124;
+  fra.me.line = 126;
   fra.me.meth = LOCATE_NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//cha_analysis.nit:124 */
+  /* ./analysis//cha_analysis.nit:126 */
   fra.me.REG[1] = NEW_analysis___cha_analysis___ChaVisitor();
   INIT_ATTRIBUTES__analysis___cha_analysis___ChaVisitor(fra.me.REG[1]);
   analysis___cha_analysis___ChaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -155421,15 +154777,13 @@ val_t NEW_ChaVisitor_analysis___cha_analysis___ChaVisitor___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis[56] = {
-  {(bigint) 195 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedTypeAnalysis[54] = {
+  {(bigint) 203 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "InstantiatedTypeAnalysis" /* 2: Class Name */},
   {(bigint) 3 /* 3: InstantiatedTypeAnalysis < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 195 /* 5: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 203 /* 5: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155442,7 +154796,7 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedT
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: InstantiatedTypeAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: InstantiatedTypeAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155475,7 +154829,7 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___InstantiatedT
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 53: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 51: InstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
   {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___is_class_instantiated},
   {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
 };
@@ -155530,16 +154884,14 @@ val_t NEW_InstantiatedTypeAnalysis_analysis___instantiated_type_analysis___Insta
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[58] = {
-  {(bigint) 2287 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis[56] = {
+  {(bigint) 2311 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "DefaultInstantiatedTypeAnalysis" /* 2: Class Name */},
   {(bigint) 3 /* 3: DefaultInstantiatedTypeAnalysis < Object: superclass typecheck marker */},
   {0} /* Class Hole :( */,
-  {(bigint) 195 /* 5: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
-  {(bigint) 2287 /* 6: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 203 /* 5: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 2311 /* 6: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155551,7 +154903,7 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstan
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: DefaultInstantiatedTypeAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155584,10 +154936,10 @@ const classtable_elt_t VFT_analysis___instantiated_type_analysis___DefaultInstan
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
-  {(bigint) 1 /* 53: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 51: DefaultInstantiatedTypeAnalysis < InstantiatedTypeAnalysis: superclass init_table position */},
   {(bigint) analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___is_class_instantiated},
   {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
-  {(bigint) 2 /* 56: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) 2 /* 54: DefaultInstantiatedTypeAnalysis < DefaultInstantiatedTypeAnalysis: superclass init_table position */},
   {(bigint) analysis___instantiated_type_analysis___DefaultInstantiatedTypeAnalysis___init},
 };
 /* 0: Pointer to the classtable */
@@ -155642,16 +154994,14 @@ val_t NEW_DefaultInstantiatedTypeAnalysis_analysis___instantiated_type_analysis_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[60] = {
-  {(bigint) 347 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[58] = {
+  {(bigint) 359 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RtaContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: RtaContext < Object: superclass typecheck marker */},
   {(bigint) 71 /* 4: RtaContext < ReachableMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 195 /* 5: RtaContext < InstantiatedTypeAnalysis: superclass typecheck marker */},
-  {(bigint) 347 /* 6: RtaContext < RtaContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 203 /* 5: RtaContext < InstantiatedTypeAnalysis: superclass typecheck marker */},
+  {(bigint) 359 /* 6: RtaContext < RtaContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155663,7 +155013,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[60] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: RtaContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RtaContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155692,14 +155042,14 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaContext[60] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RtaContext < ReachableMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: RtaContext < ReachableMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___rta_analysis___RtaContext___is_iroutine_reachable},
   {(bigint) analysis___rta_analysis___RtaContext___is_method_reachable},
   {(bigint) analysis___reachable_method_analysis___ReachableMethodAnalysis___init},
-  {(bigint) 2 /* 53: RtaContext < InstantiatedTypeAnalysis: superclass init_table position */},
+  {(bigint) 2 /* 51: RtaContext < InstantiatedTypeAnalysis: superclass init_table position */},
   {(bigint) analysis___rta_analysis___RtaContext___is_class_instantiated},
   {(bigint) analysis___instantiated_type_analysis___InstantiatedTypeAnalysis___init},
-  {(bigint) 3 /* 56: RtaContext < RtaContext: superclass init_table position */},
+  {(bigint) 3 /* 54: RtaContext < RtaContext: superclass init_table position */},
   {(bigint) analysis___rta_analysis___RtaContext___init},
   {(bigint) analysis___rta_analysis___RtaContext___instanciated_classes},
   {(bigint) analysis___rta_analysis___RtaContext___reachable_iroutines},
@@ -155780,7 +155130,7 @@ val_t NEW_RtaContext_analysis___rta_analysis___RtaContext___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[63] = {
+const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[61] = {
   {(bigint) 63 /* 0: Identity */},
   {(bigint) 7 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RtaBuilder" /* 2: Class Name */},
@@ -155797,11 +155147,9 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[63] = {
   {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) 0 /* 20: RtaBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RtaBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155830,7 +155178,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaBuilder[63] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RtaBuilder < RtaBuilder: superclass init_table position */},
+  {(bigint) 1 /* 47: RtaBuilder < RtaBuilder: superclass init_table position */},
   {(bigint) analysis___rta_analysis___RtaBuilder___context},
   {(bigint) analysis___rta_analysis___RtaBuilder___program},
   {(bigint) analysis___rta_analysis___RtaBuilder___iroutine_to_search},
@@ -155944,15 +155292,13 @@ val_t NEW_RtaBuilder_analysis___rta_analysis___RtaBuilder___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[61] = {
-  {(bigint) 343 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[59] = {
+  {(bigint) 355 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RtaVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: RtaVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: RtaVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 343 /* 5: RtaVisitor < RtaVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: RtaVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 355 /* 5: RtaVisitor < RtaVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -155965,7 +155311,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: RtaVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RtaVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -155994,7 +155340,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[61] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RtaVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: RtaVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -156002,7 +155348,7 @@ const classtable_elt_t VFT_analysis___rta_analysis___RtaVisitor[61] = {
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: RtaVisitor < RtaVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: RtaVisitor < RtaVisitor: superclass init_table position */},
   {(bigint) analysis___rta_analysis___RtaVisitor___builder},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
   {(bigint) analysis___rta_analysis___RtaVisitor___init},
@@ -156023,7 +155369,7 @@ void INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -156062,14 +155408,14 @@ val_t NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(val_t p0){
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 237;
+  fra.me.line = 247;
   fra.me.meth = LOCATE_NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./analysis//rta_analysis.nit:237 */
+  /* ./analysis//rta_analysis.nit:247 */
   fra.me.REG[1] = NEW_analysis___rta_analysis___RtaVisitor();
   INIT_ATTRIBUTES__analysis___rta_analysis___RtaVisitor(fra.me.REG[1]);
   analysis___rta_analysis___RtaVisitor___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -156077,7 +155423,7 @@ val_t NEW_RtaVisitor_analysis___rta_analysis___RtaVisitor___init(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysis[52] = {
+const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysis[50] = {
   {(bigint) 83 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReachableAsInitAnalysis" /* 2: Class Name */},
@@ -156094,11 +155440,9 @@ const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysi
   {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) 0 /* 20: ReachableAsInitAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ReachableAsInitAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156127,7 +155471,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init___ReachableAsInitAnalysi
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: ReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___is_method_reachable_as_init},
   {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
 };
@@ -156182,15 +155526,13 @@ val_t NEW_ReachableAsInitAnalysis_analysis___reachable_as_init___ReachableAsInit
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInitAnalysis[54] = {
-  {(bigint) 2283 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInitAnalysis[52] = {
+  {(bigint) 2307 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "DefaultReachableAsInitAnalysis" /* 2: Class Name */},
   {(bigint) 3 /* 3: DefaultReachableAsInitAnalysis < Object: superclass typecheck marker */},
   {(bigint) 83 /* 4: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass typecheck marker */},
-  {(bigint) 2283 /* 5: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2307 /* 5: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156203,7 +155545,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInit
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: DefaultReachableAsInitAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156232,10 +155574,10 @@ const classtable_elt_t VFT_analysis___reachable_as_init___DefaultReachableAsInit
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: DefaultReachableAsInitAnalysis < ReachableAsInitAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_as_init___DefaultReachableAsInitAnalysis___is_method_reachable_as_init},
   {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
-  {(bigint) 2 /* 52: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) 2 /* 50: DefaultReachableAsInitAnalysis < DefaultReachableAsInitAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_as_init___DefaultReachableAsInitAnalysis___init},
 };
 /* 0: Pointer to the classtable */
@@ -156290,7 +155632,7 @@ val_t NEW_DefaultReachableAsInitAnalysis_analysis___reachable_as_init___DefaultR
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBuilder[54] = {
+const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBuilder[52] = {
   {(bigint) 79 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReachableAsInitBuilder" /* 2: Class Name */},
@@ -156307,11 +155649,9 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBu
   {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) 0 /* 20: ReachableAsInitBuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ReachableAsInitBuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156340,7 +155680,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitBu
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass init_table position */},
+  {(bigint) 1 /* 47: ReachableAsInitBuilder < ReachableAsInitBuilder: superclass init_table position */},
   {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___context},
   {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___program},
   {(bigint) analysis___reachable_as_init_impl___ReachableAsInitBuilder___work},
@@ -156421,15 +155761,13 @@ val_t NEW_ReachableAsInitBuilder_analysis___reachable_as_init_impl___ReachableAs
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl[54] = {
-  {(bigint) 2043 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl[52] = {
+  {(bigint) 2055 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReachableAsInitAnalysisImpl" /* 2: Class Name */},
   {(bigint) 3 /* 3: ReachableAsInitAnalysisImpl < Object: superclass typecheck marker */},
   {(bigint) 83 /* 4: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass typecheck marker */},
-  {(bigint) 2043 /* 5: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2055 /* 5: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156442,7 +155780,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAn
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ReachableAsInitAnalysisImpl < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156471,10 +155809,10 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___ReachableAsInitAn
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___is_method_reachable_as_init},
   {(bigint) analysis___reachable_as_init___ReachableAsInitAnalysis___init},
-  {(bigint) 2 /* 52: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass init_table position */},
+  {(bigint) 2 /* 50: ReachableAsInitAnalysisImpl < ReachableAsInitAnalysisImpl: superclass init_table position */},
   {(bigint) analysis___reachable_as_init_impl___ReachableAsInitAnalysisImpl___init},
 };
 /* 0: Pointer to the classtable */
@@ -156544,15 +155882,13 @@ val_t NEW_ReachableAsInitAnalysisImpl_analysis___reachable_as_init_impl___Reacha
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[61] = {
-  {(bigint) 2059 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[59] = {
+  {(bigint) 2071 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RAIVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: RAIVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: RAIVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2059 /* 5: RAIVisitor < RAIVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: RAIVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2071 /* 5: RAIVisitor < RAIVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156565,7 +155901,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[61] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: RAIVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RAIVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156594,7 +155930,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[61] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RAIVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: RAIVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -156602,7 +155938,7 @@ const classtable_elt_t VFT_analysis___reachable_as_init_impl___RAIVisitor[61] =
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: RAIVisitor < RAIVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: RAIVisitor < RAIVisitor: superclass init_table position */},
   {(bigint) analysis___reachable_as_init_impl___RAIVisitor___builder},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
   {(bigint) analysis___reachable_as_init_impl___RAIVisitor___init},
@@ -156623,7 +155959,7 @@ void INIT_ATTRIBUTES__analysis___reachable_as_init_impl___RAIVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -156677,7 +156013,7 @@ val_t NEW_RAIVisitor_analysis___reachable_as_init_impl___RAIVisitor___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis[53] = {
+const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis[51] = {
   {(bigint) 75 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ReachableFromInitMethodAnalysis" /* 2: Class Name */},
@@ -156694,11 +156030,9 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Reac
   {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) 0 /* 20: ReachableFromInitMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ReachableFromInitMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156727,7 +156061,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Reac
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: ReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___is_method_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
@@ -156783,15 +156117,13 @@ val_t NEW_ReachableFromInitMethodAnalysis_analysis___reachable_from_init_method_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[55] = {
-  {(bigint) 2279 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis[53] = {
+  {(bigint) 2303 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "DefaultReachableFromInitMethodAnalysis" /* 2: Class Name */},
   {(bigint) 3 /* 3: DefaultReachableFromInitMethodAnalysis < Object: superclass typecheck marker */},
   {(bigint) 75 /* 4: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2279 /* 5: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2303 /* 5: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -156804,7 +156136,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Defa
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: DefaultReachableFromInitMethodAnalysis < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156833,11 +156165,11 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis___Defa
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: DefaultReachableFromInitMethodAnalysis < ReachableFromInitMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_iroutine_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___is_method_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
-  {(bigint) 2 /* 53: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) 2 /* 51: DefaultReachableFromInitMethodAnalysis < DefaultReachableFromInitMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis___DefaultReachableFromInitMethodAnalysis___init},
 };
 /* 0: Pointer to the classtable */
@@ -156892,7 +156224,7 @@ val_t NEW_DefaultReachableFromInitMethodAnalysis_analysis___reachable_from_init_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder[54] = {
+const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMABuilder[52] = {
   {(bigint) 87 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RFIMABuilder" /* 2: Class Name */},
@@ -156909,11 +156241,9 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {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) 0 /* 20: RFIMABuilder < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RFIMABuilder < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -156942,7 +156272,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RFIMABuilder < RFIMABuilder: superclass init_table position */},
+  {(bigint) 1 /* 47: RFIMABuilder < RFIMABuilder: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___program},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___context},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMABuilder___init},
@@ -157023,15 +156353,13 @@ val_t NEW_RFIMABuilder_analysis___reachable_from_init_method_analysis_impl___RFI
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAContext[55] = {
-  {(bigint) 2055 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAContext[53] = {
+  {(bigint) 2067 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RFIMAContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: RFIMAContext < Object: superclass typecheck marker */},
   {(bigint) 75 /* 4: RFIMAContext < ReachableFromInitMethodAnalysis: superclass typecheck marker */},
-  {(bigint) 2055 /* 5: RFIMAContext < RFIMAContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 2067 /* 5: RFIMAContext < RFIMAContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157044,7 +156372,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: RFIMAContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RFIMAContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157073,11 +156401,11 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RFIMAContext < ReachableFromInitMethodAnalysis: superclass init_table position */},
+  {(bigint) 1 /* 47: RFIMAContext < ReachableFromInitMethodAnalysis: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___is_iroutine_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___is_method_reachable_from_init},
   {(bigint) analysis___reachable_from_init_method_analysis___ReachableFromInitMethodAnalysis___init},
-  {(bigint) 2 /* 53: RFIMAContext < RFIMAContext: superclass init_table position */},
+  {(bigint) 2 /* 51: RFIMAContext < RFIMAContext: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAContext___reachable_from_init_iroutines},
 };
 /* 0: Pointer to the classtable */
@@ -157146,15 +156474,13 @@ val_t NEW_RFIMAContext_analysis___reachable_from_init_method_analysis___Reachabl
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor[63] = {
-  {(bigint) 2051 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor[61] = {
+  {(bigint) 2063 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "RFIMAVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: RFIMAVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: RFIMAVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2051 /* 5: RFIMAVisitor < RFIMAVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: RFIMAVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2063 /* 5: RFIMAVisitor < RFIMAVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157167,7 +156493,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: RFIMAVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: RFIMAVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157196,7 +156522,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: RFIMAVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: RFIMAVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -157204,7 +156530,7 @@ const classtable_elt_t VFT_analysis___reachable_from_init_method_analysis_impl__
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: RFIMAVisitor < RFIMAVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: RFIMAVisitor < RFIMAVisitor: superclass init_table position */},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___context},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___program},
   {(bigint) analysis___reachable_from_init_method_analysis_impl___RFIMAVisitor___init},
@@ -157228,7 +156554,7 @@ void INIT_ATTRIBUTES__analysis___reachable_from_init_method_analysis_impl___RFIM
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -157289,15 +156615,13 @@ val_t NEW_RFIMAVisitor_analysis___reachable_from_init_method_analysis_impl___RFI
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[61] = {
-  {(bigint) 2203 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[59] = {
+  {(bigint) 2219 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "InlineGetSetVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: InlineGetSetVisitor < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: InlineGetSetVisitor < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2203 /* 5: InlineGetSetVisitor < InlineGetSetVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: InlineGetSetVisitor < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2219 /* 5: InlineGetSetVisitor < InlineGetSetVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157310,7 +156634,7 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[6
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: InlineGetSetVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: InlineGetSetVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157339,7 +156663,7 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[6
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: InlineGetSetVisitor < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: InlineGetSetVisitor < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -157347,7 +156671,7 @@ const classtable_elt_t VFT_analysis___inline_get_and_set___InlineGetSetVisitor[6
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: InlineGetSetVisitor < InlineGetSetVisitor: superclass init_table position */},
+  {(bigint) 2 /* 55: InlineGetSetVisitor < InlineGetSetVisitor: superclass init_table position */},
   {(bigint) analysis___inline_get_and_set___InlineGetSetVisitor___number_inlined},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
   {(bigint) analysis___inline_get_and_set___InlineGetSetVisitor___init},
@@ -157373,7 +156697,7 @@ void INIT_ATTRIBUTES__analysis___inline_get_and_set___InlineGetSetVisitor(val_t
   /* ./analysis//inline_get_and_set.nit:50 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___inline_get_and_set___InlineGetSetVisitor____number_inlined(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -157434,15 +156758,13 @@ val_t NEW_InlineGetSetVisitor_analysis___inline_get_and_set___InlineGetSetVisito
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
 }
-const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter[60] = {
-  {(bigint) 2195 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter[58] = {
+  {(bigint) 2211 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "IssetCounter" /* 2: Class Name */},
   {(bigint) 3 /* 3: IssetCounter < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: IssetCounter < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2195 /* 5: IssetCounter < IssetCounter: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: IssetCounter < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2211 /* 5: IssetCounter < IssetCounter: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157455,7 +156777,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: IssetCounter < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: IssetCounter < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157484,7 +156806,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: IssetCounter < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: IssetCounter < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -157492,7 +156814,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___IssetCounter
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: IssetCounter < IssetCounter: superclass init_table position */},
+  {(bigint) 2 /* 55: IssetCounter < IssetCounter: superclass init_table position */},
   {(bigint) analysis___remove_out_of_init_get_test___IssetCounter___nb_isset},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
 };
@@ -157516,7 +156838,7 @@ void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___IssetCounter(val_
   /* ./analysis//remove_out_of_init_get_test.nit:59 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___remove_out_of_init_get_test___IssetCounter____nb_isset(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -157567,15 +156889,13 @@ val_t NEW_IssetCounter_icode___icode_tools___ICodeVisitor___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRemover[60] = {
-  {(bigint) 2251 /* 0: Identity */},
+const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRemover[58] = {
+  {(bigint) 2275 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "GetterTestRemover" /* 2: Class Name */},
   {(bigint) 3 /* 3: GetterTestRemover < Object: superclass typecheck marker */},
-  {(bigint) 215 /* 4: GetterTestRemover < ICodeVisitor: superclass typecheck marker */},
-  {(bigint) 2251 /* 5: GetterTestRemover < GetterTestRemover: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 223 /* 4: GetterTestRemover < ICodeVisitor: superclass typecheck marker */},
+  {(bigint) 2275 /* 5: GetterTestRemover < GetterTestRemover: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157588,7 +156908,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: GetterTestRemover < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: GetterTestRemover < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157617,7 +156937,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: GetterTestRemover < ICodeVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: GetterTestRemover < ICodeVisitor: superclass init_table position */},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_read},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iregister_write},
   {(bigint) icode___icode_tools___ICodeVisitor___current_icode},
@@ -157625,7 +156945,7 @@ const classtable_elt_t VFT_analysis___remove_out_of_init_get_test___GetterTestRe
   {(bigint) icode___icode_tools___ICodeVisitor___visit_closure_defs},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_iroutine},
   {(bigint) icode___icode_tools___ICodeVisitor___init},
-  {(bigint) 2 /* 57: GetterTestRemover < GetterTestRemover: superclass init_table position */},
+  {(bigint) 2 /* 55: GetterTestRemover < GetterTestRemover: superclass init_table position */},
   {(bigint) analysis___remove_out_of_init_get_test___GetterTestRemover___nb_optimized_isset},
   {(bigint) icode___icode_tools___ICodeVisitor___visit_icode},
 };
@@ -157649,7 +156969,7 @@ void INIT_ATTRIBUTES__analysis___remove_out_of_init_get_test___GetterTestRemover
   /* ./analysis//remove_out_of_init_get_test.nit:73 */
   REGB0 = TAG_Int(0);
   ATTR_analysis___remove_out_of_init_get_test___GetterTestRemover____nb_optimized_isset(fra.me.REG[0]) = REGB0;
-  /* ./icode//icode_tools.nit:28 */
+  /* ./icode//icode_tools.nit:29 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_icode___icode_tools___ICodeVisitor____current_icode(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -157700,15 +157020,13 @@ val_t NEW_GetterTestRemover_icode___icode_tools___ICodeVisitor___init(void){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[65] = {
-  {(bigint) 2255 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[63] = {
+  {(bigint) 2279 /* 0: Identity */},
   {(bigint) 11 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FileICodeDumper" /* 2: Class Name */},
   {(bigint) 3 /* 3: FileICodeDumper < Object: superclass typecheck marker */},
-  {(bigint) 223 /* 4: FileICodeDumper < ICodeDumper: superclass typecheck marker */},
-  {(bigint) 2255 /* 5: FileICodeDumper < FileICodeDumper: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 231 /* 4: FileICodeDumper < ICodeDumper: superclass typecheck marker */},
+  {(bigint) 2279 /* 5: FileICodeDumper < FileICodeDumper: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157721,7 +157039,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FileICodeDumper < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FileICodeDumper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157750,7 +157068,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: FileICodeDumper < ICodeDumper: superclass init_table position */},
+  {(bigint) 1 /* 47: FileICodeDumper < ICodeDumper: superclass init_table position */},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_locations},
   {(bigint) analysis___icode_dump___ICodeDumper___dump_line_numbers},
   {(bigint) analysis___icode_dump___ICodeDumper___init},
@@ -157764,7 +157082,7 @@ const classtable_elt_t VFT_compiling___icode_generator___FileICodeDumper[65] = {
   {(bigint) analysis___icode_dump___ICodeDumper___indent_level},
   {(bigint) analysis___icode_dump___ICodeDumper___indent},
   {(bigint) analysis___icode_dump___ICodeDumper___unindent},
-  {(bigint) 2 /* 63: FileICodeDumper < FileICodeDumper: superclass init_table position */},
+  {(bigint) 2 /* 61: FileICodeDumper < FileICodeDumper: superclass init_table position */},
   {(bigint) compiling___icode_generator___FileICodeDumper___init},
 };
 /* 0: Pointer to the classtable */
@@ -157885,14 +157203,14 @@ val_t NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(v
   int init_table[3] = {0, 0, 0};
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_nitc;
-  fra.me.line = 40;
+  fra.me.line = 41;
   fra.me.meth = LOCATE_NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//icode_generator.nit:40 */
+  /* ./compiling//icode_generator.nit:41 */
   fra.me.REG[1] = NEW_compiling___icode_generator___FileICodeDumper();
   INIT_ATTRIBUTES__compiling___icode_generator___FileICodeDumper(fra.me.REG[1]);
   compiling___icode_generator___FileICodeDumper___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -157900,14 +157218,12 @@ val_t NEW_FileICodeDumper_compiling___icode_generator___FileICodeDumper___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___ColorContext[54] = {
-  {(bigint) 271 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___ColorContext[52] = {
+  {(bigint) 279 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ColorContext" /* 2: Class Name */},
   {(bigint) 3 /* 3: ColorContext < Object: superclass typecheck marker */},
-  {(bigint) 271 /* 4: ColorContext < ColorContext: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 279 /* 4: ColorContext < ColorContext: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -157921,7 +157237,7 @@ const classtable_elt_t VFT_compiling___table_computation___ColorContext[54] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: ColorContext < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: ColorContext < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -157950,7 +157266,7 @@ const classtable_elt_t VFT_compiling___table_computation___ColorContext[54] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: ColorContext < ColorContext: superclass init_table position */},
+  {(bigint) 1 /* 47: ColorContext < ColorContext: superclass init_table position */},
   {(bigint) compiling___table_computation___ColorContext___color},
   {(bigint) compiling___table_computation___ColorContext___has_color},
   {(bigint) compiling___table_computation___ColorContext___color__eq},
@@ -158022,15 +157338,13 @@ val_t NEW_ColorContext_compiling___table_computation___ColorContext___init(void)
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableInformation[57] = {
-  {(bigint) 327 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableInformation[55] = {
+  {(bigint) 335 /* 0: Identity */},
   {(bigint) 4 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableInformation" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableInformation < Object: superclass typecheck marker */},
-  {(bigint) 271 /* 4: TableInformation < ColorContext: superclass typecheck marker */},
-  {(bigint) 327 /* 5: TableInformation < TableInformation: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 279 /* 4: TableInformation < ColorContext: superclass typecheck marker */},
+  {(bigint) 335 /* 5: TableInformation < TableInformation: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158043,7 +157357,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[57]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: TableInformation < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: TableInformation < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158072,12 +157386,12 @@ const classtable_elt_t VFT_compiling___table_computation___TableInformation[57]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: TableInformation < ColorContext: superclass init_table position */},
+  {(bigint) 1 /* 47: TableInformation < ColorContext: superclass init_table position */},
   {(bigint) compiling___table_computation___ColorContext___color},
   {(bigint) compiling___table_computation___ColorContext___has_color},
   {(bigint) compiling___table_computation___ColorContext___color__eq},
   {(bigint) compiling___table_computation___ColorContext___init},
-  {(bigint) 2 /* 54: TableInformation < TableInformation: superclass init_table position */},
+  {(bigint) 2 /* 52: TableInformation < TableInformation: superclass init_table position */},
   {(bigint) compiling___table_computation___TableInformation___max_class_table_length},
   {(bigint) compiling___table_computation___TableInformation___max_class_table_length__eq},
 };
@@ -158157,15 +157471,13 @@ val_t NEW_TableInformation_compiling___table_computation___ColorContext___init(v
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___CompiledClass[65] = {
-  {(bigint) 2303 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___CompiledClass[63] = {
+  {(bigint) 2331 /* 0: Identity */},
   {(bigint) 9 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "CompiledClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: CompiledClass < Object: superclass typecheck marker */},
-  {(bigint) 271 /* 4: CompiledClass < ColorContext: superclass typecheck marker */},
-  {(bigint) 2303 /* 5: CompiledClass < CompiledClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 279 /* 4: CompiledClass < ColorContext: superclass typecheck marker */},
+  {(bigint) 2331 /* 5: CompiledClass < CompiledClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158178,7 +157490,7 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[65] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: CompiledClass < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: CompiledClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158207,12 +157519,12 @@ const classtable_elt_t VFT_compiling___table_computation___CompiledClass[65] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: CompiledClass < ColorContext: superclass init_table position */},
+  {(bigint) 1 /* 47: CompiledClass < ColorContext: superclass init_table position */},
   {(bigint) compiling___table_computation___ColorContext___color},
   {(bigint) compiling___table_computation___ColorContext___has_color},
   {(bigint) compiling___table_computation___ColorContext___color__eq},
   {(bigint) compiling___table_computation___ColorContext___init},
-  {(bigint) 2 /* 54: CompiledClass < CompiledClass: superclass init_table position */},
+  {(bigint) 2 /* 52: CompiledClass < CompiledClass: superclass init_table position */},
   {(bigint) compiling___table_computation___CompiledClass___local_class},
   {(bigint) compiling___table_computation___CompiledClass___id},
   {(bigint) compiling___table_computation___CompiledClass___id__eq},
@@ -158349,17 +157661,15 @@ val_t NEW_CompiledClass_compiling___table_computation___CompiledClass___init(val
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[61] = {
-  {(bigint) 2791 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[59] = {
+  {(bigint) 2815 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "ModuleTableEltGroup" /* 2: Class Name */},
   {(bigint) 3 /* 3: ModuleTableEltGroup < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2103 /* 6: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2791 /* 7: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: ModuleTableEltGroup < AbsTableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2115 /* 6: ModuleTableEltGroup < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2815 /* 7: ModuleTableEltGroup < ModuleTableEltGroup: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158370,7 +157680,7 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: ModuleTableEltGroup < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: ModuleTableEltGroup < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158400,7 +157710,7 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___ModuleTableEltGroup___compile_macros},
-  {(bigint) 1 /* 50: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: ModuleTableEltGroup < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158408,8 +157718,8 @@ const classtable_elt_t VFT_compiling___table_computation___ModuleTableEltGroup[6
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___ModuleTableEltGroup___value},
-  {(bigint) 0 /* 58: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
-  {(bigint) 3 /* 59: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
+  {(bigint) 0 /* 56: ModuleTableEltGroup < ModuleTableElt: superclass init_table position */},
+  {(bigint) 3 /* 57: ModuleTableEltGroup < ModuleTableEltGroup: superclass init_table position */},
   {(bigint) compiling___table_computation___ModuleTableEltGroup___elements},
 };
 /* 0: Pointer to the classtable */
@@ -158427,7 +157737,7 @@ void INIT_ATTRIBUTES__compiling___table_computation___ModuleTableEltGroup(val_t
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:437 */
+  /* ./compiling//table_computation.nit:440 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_compiling___table_computation___ModuleTableEltGroup____elements(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -158478,17 +157788,15 @@ val_t NEW_ModuleTableEltGroup_compiling___table_computation___AbsTableElt___init
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
-  {(bigint) 3107 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[59] = {
+  {(bigint) 3159 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltMeth" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltMeth < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltMeth < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltMeth < TableElt: superclass typecheck marker */},
-  {(bigint) 2359 /* 6: TableEltMeth < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3107 /* 7: TableEltMeth < TableEltMeth: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltMeth < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltMeth < TableElt: superclass typecheck marker */},
+  {(bigint) 2387 /* 6: TableEltMeth < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3159 /* 7: TableEltMeth < TableEltMeth: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158499,7 +157807,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: TableEltMeth < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: TableEltMeth < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158529,17 +157837,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltMeth[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___TableEltMeth___compile_macros},
-  {(bigint) 2 /* 50: TableEltMeth < AbsTableElt: superclass init_table position */},
+  {(bigint) 2 /* 48: TableEltMeth < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltMeth___compile_to_c},
-  {(bigint) 1 /* 53: TableEltMeth < TableElt: superclass init_table position */},
+  {(bigint) 1 /* 51: TableEltMeth < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 57: TableEltMeth < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 55: TableEltMeth < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 60: TableEltMeth < TableEltMeth: superclass init_table position */},
+  {(bigint) 4 /* 58: TableEltMeth < TableEltMeth: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -158589,14 +157897,14 @@ val_t NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(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 = 445;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_NEW_TableEltMeth_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:445 */
+  /* ./compiling//table_computation.nit:448 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltMeth();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltMeth(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158604,15 +157912,15 @@ val_t NEW_TableEltMeth_compiling___table_computation___TableEltProp___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
-  {(bigint) 3103 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassColor[59] = {
+  {(bigint) 3151 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
-  {(bigint) "TableEltSuper" /* 2: Class Name */},
-  {(bigint) 3 /* 3: TableEltSuper < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltSuper < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltSuper < TableElt: superclass typecheck marker */},
-  {(bigint) 2359 /* 6: TableEltSuper < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3103 /* 7: TableEltSuper < TableEltSuper: superclass typecheck marker */},
+  {(bigint) "TableEltVTClassColor" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltVTClassColor < Object: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltVTClassColor < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltVTClassColor < TableElt: superclass typecheck marker */},
+  {(bigint) 2387 /* 6: TableEltVTClassColor < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3151 /* 7: TableEltVTClassColor < TableEltVTClassColor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158621,11 +157929,257 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) nit_version___Object___nit_version},
+  {(bigint) standard___time___Object___get_time},
+  {(bigint) 3 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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) compiling___compiling_global___TableEltVTClassColor___compile_macros},
+  {(bigint) 2 /* 48: TableEltVTClassColor < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) compiling___compiling_global___TableEltVTClassColor___compile_to_c},
+  {(bigint) 1 /* 51: TableEltVTClassColor < TableElt: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableElt___is_related_to},
+  {(bigint) compiling___table_computation___TableElt___length},
+  {(bigint) compiling___table_computation___TableElt___item},
+  {(bigint) 0 /* 55: TableEltVTClassColor < TableEltProp: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltProp___property},
+  {(bigint) compiling___table_computation___TableEltProp___init},
+  {(bigint) 4 /* 58: TableEltVTClassColor < TableEltVTClassColor: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltVTClassColor::_property */
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_compiling___table_computation___TableEltVTClassColor(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassColor;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_compiling___table_computation___TableEltVTClassColor(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_compiling___table_computation___TableEltVTClassColor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 448;
+  fra.me.meth = LOCATE_NEW_TableEltVTClassColor_compiling___table_computation___TableEltProp___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassColor();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
+  compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling___table_computation___TableEltVTClassColor(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_compiling___table_computation___TableEltVTClassId[59] = {
+  {(bigint) 3147 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TableEltVTClassId" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltVTClassId < Object: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltVTClassId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltVTClassId < TableElt: superclass typecheck marker */},
+  {(bigint) 2387 /* 6: TableEltVTClassId < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3147 /* 7: TableEltVTClassId < TableEltVTClassId: 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___time___Object___get_time},
-  {(bigint) 3 /* 20: TableEltSuper < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: 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},
+  {(bigint) standard___file___Object___gets},
+  {(bigint) standard___file___Object___stdin},
+  {(bigint) standard___file___Object___stdout},
+  {(bigint) standard___file___Object___stderr},
+  {(bigint) standard___string___Object___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___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) compiling___compiling_global___TableEltVTClassId___compile_macros},
+  {(bigint) 2 /* 48: TableEltVTClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) compiling___table_computation___AbsTableElt___init},
+  {(bigint) compiling___compiling_global___TableEltVTClassId___compile_to_c},
+  {(bigint) 1 /* 51: TableEltVTClassId < TableElt: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableElt___is_related_to},
+  {(bigint) compiling___table_computation___TableElt___length},
+  {(bigint) compiling___table_computation___TableElt___item},
+  {(bigint) 0 /* 55: TableEltVTClassId < TableEltProp: superclass init_table position */},
+  {(bigint) compiling___table_computation___TableEltProp___property},
+  {(bigint) compiling___table_computation___TableEltProp___init},
+  {(bigint) 4 /* 58: TableEltVTClassId < TableEltVTClassId: superclass init_table position */},
+};
+/* 0: Pointer to the classtable */
+/* 1: Object_id */
+/* 2: Attribute TableEltVTClassId::_property */
+void INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(val_t p0){
+  struct {struct stack_frame_t me;} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_compiling___table_computation___TableEltVTClassId(void)
+{
+  obj_t obj;
+  obj = alloc(sizeof(val_t) * 3);
+  obj->vft = (classtable_elt_t*)VFT_compiling___table_computation___TableEltVTClassId;
+  obj[1].object_id = object_id_counter;
+  object_id_counter = object_id_counter + 1;
+  return OBJ2VAL(obj);
+}
+void CHECKNEW_compiling___table_computation___TableEltVTClassId(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_compiling___table_computation___TableEltVTClassId;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = TAG_Bool(ATTR_compiling___table_computation___TableEltProp____property(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_property", LOCATE_nitc, 0);
+  }
+  stack_frame_head = fra.me.prev;
+}
+val_t NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  int init_table[5] = {0, 0, 0, 0, 0};
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_nitc;
+  fra.me.line = 448;
+  fra.me.meth = LOCATE_NEW_TableEltVTClassId_compiling___table_computation___TableEltProp___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./compiling//table_computation.nit:448 */
+  fra.me.REG[1] = NEW_compiling___table_computation___TableEltVTClassId();
+  INIT_ATTRIBUTES__compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
+  compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
+  CHECKNEW_compiling___table_computation___TableEltVTClassId(fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[59] = {
+  {(bigint) 3155 /* 0: Identity */},
+  {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
+  {(bigint) "TableEltSuper" /* 2: Class Name */},
+  {(bigint) 3 /* 3: TableEltSuper < Object: superclass typecheck marker */},
+  {(bigint) 303 /* 4: TableEltSuper < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltSuper < TableElt: superclass typecheck marker */},
+  {(bigint) 2387 /* 6: TableEltSuper < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3155 /* 7: TableEltSuper < TableEltSuper: 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___time___Object___get_time},
+  {(bigint) 3 /* 18: TableEltSuper < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158655,17 +158209,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltSuper[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___TableEltSuper___compile_macros},
-  {(bigint) 2 /* 50: TableEltSuper < AbsTableElt: superclass init_table position */},
+  {(bigint) 2 /* 48: TableEltSuper < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltSuper___compile_to_c},
-  {(bigint) 1 /* 53: TableEltSuper < TableElt: superclass init_table position */},
+  {(bigint) 1 /* 51: TableEltSuper < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 57: TableEltSuper < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 55: TableEltSuper < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 60: TableEltSuper < TableEltSuper: superclass init_table position */},
+  {(bigint) 4 /* 58: TableEltSuper < TableEltSuper: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -158715,14 +158269,14 @@ val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(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 = 445;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_NEW_TableEltSuper_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:445 */
+  /* ./compiling//table_computation.nit:448 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltSuper();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltSuper(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158730,17 +158284,15 @@ val_t NEW_TableEltSuper_compiling___table_computation___TableEltProp___init(val_
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
-  {(bigint) 3119 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[59] = {
+  {(bigint) 3171 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltAttr" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltAttr < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltAttr < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltAttr < TableElt: superclass typecheck marker */},
-  {(bigint) 2359 /* 6: TableEltAttr < TableEltProp: superclass typecheck marker */},
-  {(bigint) 3119 /* 7: TableEltAttr < TableEltAttr: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltAttr < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltAttr < TableElt: superclass typecheck marker */},
+  {(bigint) 2387 /* 6: TableEltAttr < TableEltProp: superclass typecheck marker */},
+  {(bigint) 3171 /* 7: TableEltAttr < TableEltAttr: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158751,7 +158303,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 3 /* 20: TableEltAttr < Object: superclass init_table position */},
+  {(bigint) 3 /* 18: TableEltAttr < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158781,17 +158333,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltAttr[61] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___TableEltAttr___compile_macros},
-  {(bigint) 2 /* 50: TableEltAttr < AbsTableElt: superclass init_table position */},
+  {(bigint) 2 /* 48: TableEltAttr < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltAttr___compile_to_c},
-  {(bigint) 1 /* 53: TableEltAttr < TableElt: superclass init_table position */},
+  {(bigint) 1 /* 51: TableEltAttr < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableElt___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 0 /* 57: TableEltAttr < TableEltProp: superclass init_table position */},
+  {(bigint) 0 /* 55: TableEltAttr < TableEltProp: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltProp___property},
   {(bigint) compiling___table_computation___TableEltProp___init},
-  {(bigint) 4 /* 60: TableEltAttr < TableEltAttr: superclass init_table position */},
+  {(bigint) 4 /* 58: TableEltAttr < TableEltAttr: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -158841,14 +158393,14 @@ val_t NEW_TableEltAttr_compiling___table_computation___TableEltProp___init(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 = 445;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_NEW_TableEltAttr_compiling___table_computation___TableEltProp___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:445 */
+  /* ./compiling//table_computation.nit:448 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltAttr();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltAttr(fra.me.REG[1]);
   compiling___table_computation___TableEltProp___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158856,17 +158408,15 @@ val_t NEW_TableEltAttr_compiling___table_computation___TableEltProp___init(val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[63] = {
-  {(bigint) 2339 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[61] = {
+  {(bigint) 2367 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "AbsTableEltClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: AbsTableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: AbsTableEltClass < AbsTableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
-  {(bigint) 2339 /* 7: AbsTableEltClass < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 303 /* 4: AbsTableEltClass < AbsTableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
+  {(bigint) 2367 /* 7: AbsTableEltClass < AbsTableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158877,7 +158427,7 @@ const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[63]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 1 /* 20: AbsTableEltClass < Object: superclass init_table position */},
+  {(bigint) 1 /* 18: AbsTableEltClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -158907,7 +158457,7 @@ const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[63]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 0 /* 50: AbsTableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) 0 /* 48: AbsTableEltClass < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -158917,7 +158467,7 @@ const classtable_elt_t VFT_compiling___table_computation___AbsTableEltClass[63]
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___AbsTableEltClass___symbol},
-  {(bigint) 2 /* 60: AbsTableEltClass < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 2 /* 58: AbsTableEltClass < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
 };
@@ -158969,14 +158519,14 @@ val_t NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___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 = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___AbsTableEltClass();
   INIT_ATTRIBUTES__compiling___table_computation___AbsTableEltClass(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -158984,18 +158534,16 @@ val_t NEW_AbsTableEltClass_compiling___table_computation___AbsTableEltClass___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClass[64] = {
-  {(bigint) 2387 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClass[62] = {
+  {(bigint) 2415 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClass" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClass < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClass < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClass < TableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2339 /* 7: TableEltClass < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2387 /* 8: TableEltClass < TableEltClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClass < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClass < TableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2367 /* 7: TableEltClass < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2415 /* 8: TableEltClass < TableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159005,7 +158553,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClass[64] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClass < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClass < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159035,20 +158583,20 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClass[64] = {
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 50: TableEltClass < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClass < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableElt___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClass < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClass < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClass___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___AbsTableEltClass___symbol},
-  {(bigint) 3 /* 60: TableEltClass < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 3 /* 58: TableEltClass < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 63: TableEltClass < TableEltClass: superclass init_table position */},
+  {(bigint) 4 /* 61: TableEltClass < TableEltClass: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159098,14 +158646,14 @@ val_t NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___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 = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClass();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClass(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159113,17 +158661,15 @@ val_t NEW_TableEltClass_compiling___table_computation___AbsTableEltClass___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] = {
-  {(bigint) 2383 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[61] = {
+  {(bigint) 2411 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassId < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 2383 /* 5: TableEltClassId < TableEltClassId: superclass typecheck marker */},
-  {(bigint) 2103 /* 6: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2339 /* 7: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 2411 /* 5: TableEltClassId < TableEltClassId: superclass typecheck marker */},
+  {(bigint) 2115 /* 6: TableEltClassId < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2367 /* 7: TableEltClassId < AbsTableEltClass: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159134,7 +158680,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159164,17 +158710,17 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassId[63] =
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassId < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassId < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
-  {(bigint) 4 /* 52: TableEltClassId < TableEltClassId: superclass init_table position */},
+  {(bigint) 4 /* 50: TableEltClassId < TableEltClassId: superclass init_table position */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___TableEltClassId___value},
-  {(bigint) 0 /* 58: TableEltClassId < ModuleTableElt: superclass init_table position */},
+  {(bigint) 0 /* 56: TableEltClassId < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassId___symbol},
-  {(bigint) 3 /* 60: TableEltClassId < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 3 /* 58: TableEltClassId < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
 };
@@ -159226,14 +158772,14 @@ val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___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 = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassId();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassId(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159241,19 +158787,17 @@ val_t NEW_TableEltClassId_compiling___table_computation___AbsTableEltClass___ini
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTable[65] = {
-  {(bigint) 3111 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTable[63] = {
+  {(bigint) 3163 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassInitTable" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassInitTable < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClassInitTable < TableElt: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {(bigint) 2339 /* 7: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2387 /* 8: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
-  {(bigint) 3111 /* 9: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassInitTable < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClassInitTable < TableElt: superclass typecheck marker */},
   {0} /* Class Hole :( */,
+  {(bigint) 2367 /* 7: TableEltClassInitTable < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2415 /* 8: TableEltClassInitTable < TableEltClass: superclass typecheck marker */},
+  {(bigint) 3163 /* 9: TableEltClassInitTable < TableEltClassInitTable: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159262,7 +158806,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassInitTable < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassInitTable < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159292,21 +158836,21 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassInitTabl
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassInitTable < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltClassInitTable___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClassInitTable < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClassInitTable < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClass___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {(bigint) compiling___compiling_global___TableEltClassInitTable___symbol},
-  {(bigint) 3 /* 60: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 3 /* 58: TableEltClassInitTable < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 63: TableEltClassInitTable < TableEltClass: superclass init_table position */},
-  {(bigint) 5 /* 64: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
+  {(bigint) 4 /* 61: TableEltClassInitTable < TableEltClass: superclass init_table position */},
+  {(bigint) 5 /* 62: TableEltClassInitTable < TableEltClassInitTable: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159356,14 +158900,14 @@ val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClas
   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 = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassInitTable();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassInitTable(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159371,19 +158915,17 @@ val_t NEW_TableEltClassInitTable_compiling___table_computation___AbsTableEltClas
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65] = {
-  {(bigint) 3115 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[63] = {
+  {(bigint) 3167 /* 0: Identity */},
   {(bigint) 3 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassColor" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassColor < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClassColor < TableElt: superclass typecheck marker */},
-  {(bigint) 2103 /* 6: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
-  {(bigint) 2339 /* 7: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
-  {(bigint) 2387 /* 8: TableEltClassColor < TableEltClass: superclass typecheck marker */},
-  {(bigint) 3115 /* 9: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassColor < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClassColor < TableElt: superclass typecheck marker */},
+  {(bigint) 2115 /* 6: TableEltClassColor < ModuleTableElt: superclass typecheck marker */},
+  {(bigint) 2367 /* 7: TableEltClassColor < AbsTableEltClass: superclass typecheck marker */},
+  {(bigint) 2415 /* 8: TableEltClassColor < TableEltClass: superclass typecheck marker */},
+  {(bigint) 3167 /* 9: TableEltClassColor < TableEltClassColor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159392,7 +158934,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassColor < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassColor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159422,21 +158964,21 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassColor[65
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableEltClass___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassColor < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassColor < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltClassColor___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClassColor < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClassColor < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClass___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
   {(bigint) compiling___compiling_global___TableEltClassColor___value},
-  {(bigint) 5 /* 58: TableEltClassColor < ModuleTableElt: superclass init_table position */},
+  {(bigint) 5 /* 56: TableEltClassColor < ModuleTableElt: superclass init_table position */},
   {(bigint) compiling___compiling_global___TableEltClassColor___symbol},
-  {(bigint) 3 /* 60: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
+  {(bigint) 3 /* 58: TableEltClassColor < AbsTableEltClass: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableEltClass___local_class},
   {(bigint) compiling___table_computation___AbsTableEltClass___init},
-  {(bigint) 4 /* 63: TableEltClassColor < TableEltClass: superclass init_table position */},
-  {(bigint) 6 /* 64: TableEltClassColor < TableEltClassColor: superclass init_table position */},
+  {(bigint) 4 /* 61: TableEltClassColor < TableEltClass: superclass init_table position */},
+  {(bigint) 6 /* 62: TableEltClassColor < TableEltClassColor: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159486,14 +159028,14 @@ val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___
   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 = 472;
+  fra.me.line = 485;
   fra.me.meth = LOCATE_NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:472 */
+  /* ./compiling//table_computation.nit:485 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltClassColor();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltClassColor(fra.me.REG[1]);
   compiling___table_computation___AbsTableEltClass___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159501,16 +159043,14 @@ val_t NEW_TableEltClassColor_compiling___table_computation___AbsTableEltClass___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60] = {
-  {(bigint) 2367 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[58] = {
+  {(bigint) 2395 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltComposite" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltComposite < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltComposite < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltComposite < TableElt: superclass typecheck marker */},
-  {(bigint) 2367 /* 6: TableEltComposite < TableEltComposite: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltComposite < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltComposite < TableElt: superclass typecheck marker */},
+  {(bigint) 2395 /* 6: TableEltComposite < TableEltComposite: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159522,7 +159062,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltComposite < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltComposite < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159552,14 +159092,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltComposite[60]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltComposite < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltComposite < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltComposite___compile_to_c},
-  {(bigint) 0 /* 53: TableEltComposite < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltComposite < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltComposite___is_related_to},
   {(bigint) compiling___table_computation___TableEltComposite___length},
   {(bigint) compiling___table_computation___TableEltComposite___item},
-  {(bigint) 3 /* 57: TableEltComposite < TableEltComposite: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltComposite < TableEltComposite: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltComposite___add},
   {(bigint) compiling___table_computation___TableEltComposite___init},
 };
@@ -159623,14 +159163,14 @@ val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___
   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 = 526;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_NEW_TableEltComposite_compiling___table_computation___TableEltComposite___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//table_computation.nit:526 */
+  /* ./compiling//table_computation.nit:539 */
   fra.me.REG[1] = NEW_compiling___table_computation___TableEltComposite();
   INIT_ATTRIBUTES__compiling___table_computation___TableEltComposite(fra.me.REG[1]);
   compiling___table_computation___TableEltComposite___init(fra.me.REG[1], fra.me.REG[0], init_table);
@@ -159638,16 +159178,14 @@ val_t NEW_TableEltComposite_compiling___table_computation___TableEltComposite___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[58] = {
-  {(bigint) 2375 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[56] = {
+  {(bigint) 2403 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassSelfId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassSelfId < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClassSelfId < TableElt: superclass typecheck marker */},
-  {(bigint) 2375 /* 6: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassSelfId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClassSelfId < TableElt: superclass typecheck marker */},
+  {(bigint) 2403 /* 6: TableEltClassSelfId < TableEltClassSelfId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159659,7 +159197,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassSelfId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassSelfId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159689,14 +159227,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfId[5
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassSelfId < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltClassSelfId___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClassSelfId < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClassSelfId < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassSelfId___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 57: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltClassSelfId < TableEltClassSelfId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159749,16 +159287,14 @@ val_t NEW_TableEltClassSelfId_compiling___table_computation___AbsTableElt___init
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName[58] = {
-  {(bigint) 2371 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName[56] = {
+  {(bigint) 2399 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassSelfName" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassSelfName < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassSelfName < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClassSelfName < TableElt: superclass typecheck marker */},
-  {(bigint) 2371 /* 6: TableEltClassSelfName < TableEltClassSelfName: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassSelfName < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClassSelfName < TableElt: superclass typecheck marker */},
+  {(bigint) 2399 /* 6: TableEltClassSelfName < TableEltClassSelfName: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159770,7 +159306,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassSelfName < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassSelfName < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159800,14 +159336,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassSelfName
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassSelfName < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassSelfName < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltClassSelfName___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClassSelfName < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClassSelfName < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassSelfName___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 57: TableEltClassSelfName < TableEltClassSelfName: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltClassSelfName < TableEltClassSelfName: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159860,16 +159396,14 @@ val_t NEW_TableEltClassSelfName_compiling___table_computation___AbsTableElt___in
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSize[58] = {
-  {(bigint) 2379 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSize[56] = {
+  {(bigint) 2407 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltClassObjectSize" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltClassObjectSize < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltClassObjectSize < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltClassObjectSize < TableElt: superclass typecheck marker */},
-  {(bigint) 2379 /* 6: TableEltClassObjectSize < TableEltClassObjectSize: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltClassObjectSize < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltClassObjectSize < TableElt: superclass typecheck marker */},
+  {(bigint) 2407 /* 6: TableEltClassObjectSize < TableEltClassObjectSize: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159881,7 +159415,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltClassObjectSize < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltClassObjectSize < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -159911,14 +159445,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltClassObjectSi
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltClassObjectSize < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltClassObjectSize < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltClassObjectSize___compile_to_c},
-  {(bigint) 0 /* 53: TableEltClassObjectSize < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltClassObjectSize < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltClassObjectSize___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 57: TableEltClassObjectSize < TableEltClassObjectSize: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltClassObjectSize < TableEltClassObjectSize: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -159971,16 +159505,14 @@ val_t NEW_TableEltClassObjectSize_compiling___table_computation___AbsTableElt___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[58] = {
-  {(bigint) 2363 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[56] = {
+  {(bigint) 2391 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltObjectId" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltObjectId < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltObjectId < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltObjectId < TableElt: superclass typecheck marker */},
-  {(bigint) 2363 /* 6: TableEltObjectId < TableEltObjectId: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltObjectId < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltObjectId < TableElt: superclass typecheck marker */},
+  {(bigint) 2391 /* 6: TableEltObjectId < TableEltObjectId: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -159992,7 +159524,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[58]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltObjectId < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltObjectId < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160022,14 +159554,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltObjectId[58]
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltObjectId < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltObjectId < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltObjectId___compile_to_c},
-  {(bigint) 0 /* 53: TableEltObjectId < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltObjectId < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltObjectId___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 57: TableEltObjectId < TableEltObjectId: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltObjectId < TableEltObjectId: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -160082,16 +159614,14 @@ val_t NEW_TableEltObjectId_compiling___table_computation___AbsTableElt___init(vo
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[58] = {
-  {(bigint) 2355 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[56] = {
+  {(bigint) 2383 /* 0: Identity */},
   {(bigint) 2 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "TableEltVftPointer" /* 2: Class Name */},
   {(bigint) 3 /* 3: TableEltVftPointer < Object: superclass typecheck marker */},
-  {(bigint) 295 /* 4: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
-  {(bigint) 331 /* 5: TableEltVftPointer < TableElt: superclass typecheck marker */},
-  {(bigint) 2355 /* 6: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 303 /* 4: TableEltVftPointer < AbsTableElt: superclass typecheck marker */},
+  {(bigint) 339 /* 5: TableEltVftPointer < TableElt: superclass typecheck marker */},
+  {(bigint) 2383 /* 6: TableEltVftPointer < TableEltVftPointer: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -160103,7 +159633,7 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[58
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 2 /* 20: TableEltVftPointer < Object: superclass init_table position */},
+  {(bigint) 2 /* 18: TableEltVftPointer < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160133,14 +159663,14 @@ const classtable_elt_t VFT_compiling___table_computation___TableEltVftPointer[58
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
   {(bigint) compiling___compiling_global___AbsTableElt___compile_macros},
-  {(bigint) 1 /* 50: TableEltVftPointer < AbsTableElt: superclass init_table position */},
+  {(bigint) 1 /* 48: TableEltVftPointer < AbsTableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___AbsTableElt___init},
   {(bigint) compiling___compiling_global___TableEltVftPointer___compile_to_c},
-  {(bigint) 0 /* 53: TableEltVftPointer < TableElt: superclass init_table position */},
+  {(bigint) 0 /* 51: TableEltVftPointer < TableElt: superclass init_table position */},
   {(bigint) compiling___table_computation___TableEltVftPointer___is_related_to},
   {(bigint) compiling___table_computation___TableElt___length},
   {(bigint) compiling___table_computation___TableElt___item},
-  {(bigint) 3 /* 57: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
+  {(bigint) 3 /* 55: TableEltVftPointer < TableEltVftPointer: superclass init_table position */},
 };
 /* 0: Pointer to the classtable */
 /* 1: Object_id */
@@ -160193,14 +159723,12 @@ val_t NEW_TableEltVftPointer_compiling___table_computation___AbsTableElt___init(
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[79] = {
-  {(bigint) 239 /* 0: Identity */},
+const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[77] = {
+  {(bigint) 247 /* 0: Identity */},
   {(bigint) 17 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "I2CCompilerVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: I2CCompilerVisitor < Object: superclass typecheck marker */},
-  {(bigint) 239 /* 4: I2CCompilerVisitor < I2CCompilerVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 247 /* 4: I2CCompilerVisitor < I2CCompilerVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -160214,7 +159742,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[79]
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: I2CCompilerVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: I2CCompilerVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160243,7 +159771,7 @@ const classtable_elt_t VFT_compiling___compiling_icode___I2CCompilerVisitor[79]
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: I2CCompilerVisitor < I2CCompilerVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: I2CCompilerVisitor < I2CCompilerVisitor: superclass init_table position */},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___register},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___registers},
   {(bigint) compiling___compiling_icode___I2CCompilerVisitor___new_number},
@@ -160304,40 +159832,40 @@ void INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(val_t p0)
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./compiling//compiling_icode.nit:27 */
+  /* ./compiling//compiling_icode.nit:28 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:29 */
+  /* ./compiling//compiling_icode.nit:30 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____ids2(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:76 */
+  /* ./compiling//compiling_icode.nit:77 */
   REGB0 = TAG_Int(0);
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_number(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_icode.nit:97 */
+  /* ./compiling//compiling_icode.nit:98 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____closures(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:100 */
+  /* ./compiling//compiling_icode.nit:101 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____clostypes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:103 */
+  /* ./compiling//compiling_icode.nit:104 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____local_labels(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:107 */
+  /* ./compiling//compiling_icode.nit:108 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____escaped_labels(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:143 */
+  /* ./compiling//compiling_icode.nit:144 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____marks_to_seq(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:146 */
+  /* ./compiling//compiling_icode.nit:147 */
   REGB0 = TAG_Bool(false);
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____closure(fra.me.REG[0]) = REGB0;
-  /* ./compiling//compiling_icode.nit:154 */
+  /* ./compiling//compiling_icode.nit:155 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____return_label(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:201 */
+  /* ./compiling//compiling_icode.nit:202 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____last_location(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./compiling//compiling_icode.nit:202 */
+  /* ./compiling//compiling_icode.nit:203 */
   fra.me.REG[1] = NIT_NULL;
   ATTR_compiling___compiling_icode___I2CCompilerVisitor____next_location(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -160431,7 +159959,7 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   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 = 221;
+  fra.me.line = 222;
   fra.me.meth = LOCATE_NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -160442,7 +159970,7 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./compiling//compiling_icode.nit:221 */
+  /* ./compiling//compiling_icode.nit:222 */
   fra.me.REG[3] = NEW_compiling___compiling_icode___I2CCompilerVisitor();
   INIT_ATTRIBUTES__compiling___compiling_icode___I2CCompilerVisitor(fra.me.REG[3]);
   compiling___compiling_icode___I2CCompilerVisitor___init(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
@@ -160450,14 +159978,12 @@ val_t NEW_I2CCompilerVisitor_compiling___compiling_icode___I2CCompilerVisitor___
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
-const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[58] = {
-  {(bigint) 247 /* 0: Identity */},
+const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[56] = {
+  {(bigint) 255 /* 0: Identity */},
   {(bigint) 5 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FunctionCompiler" /* 2: Class Name */},
   {(bigint) 3 /* 3: FunctionCompiler < Object: superclass typecheck marker */},
-  {(bigint) 247 /* 4: FunctionCompiler < FunctionCompiler: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 255 /* 4: FunctionCompiler < FunctionCompiler: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -160471,7 +159997,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[58] =
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FunctionCompiler < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FunctionCompiler < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160500,7 +160026,7 @@ const classtable_elt_t VFT_native_interface___ni_tools___FunctionCompiler[58] =
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: FunctionCompiler < FunctionCompiler: superclass init_table position */},
+  {(bigint) 1 /* 47: FunctionCompiler < FunctionCompiler: superclass init_table position */},
   {(bigint) native_interface___ni_tools___FunctionCompiler___signature},
   {(bigint) native_interface___ni_tools___FunctionCompiler___signature__eq},
   {(bigint) native_interface___ni_tools___FunctionCompiler___decls},
@@ -160593,14 +160119,12 @@ val_t NEW_FunctionCompiler_native_interface___ni_tools___FunctionCompiler___init
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[69] = {
-  {(bigint) 251 /* 0: Identity */},
+const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[67] = {
+  {(bigint) 259 /* 0: Identity */},
   {(bigint) 10 /* 1: Object size (-1 if a NativeArray)*/},
   {(bigint) "FrontierVisitor" /* 2: Class Name */},
   {(bigint) 3 /* 3: FrontierVisitor < Object: superclass typecheck marker */},
-  {(bigint) 251 /* 4: FrontierVisitor < FrontierVisitor: superclass typecheck marker */},
-  {0} /* Class Hole :( */,
-  {0} /* Class Hole :( */,
+  {(bigint) 259 /* 4: FrontierVisitor < FrontierVisitor: superclass typecheck marker */},
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
   {0} /* Class Hole :( */,
@@ -160614,7 +160138,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[69] = {
   {0} /* Class Hole :( */,
   {(bigint) nit_version___Object___nit_version},
   {(bigint) standard___time___Object___get_time},
-  {(bigint) 0 /* 20: FrontierVisitor < Object: superclass init_table position */},
+  {(bigint) 0 /* 18: FrontierVisitor < Object: superclass init_table position */},
   {(bigint) standard___kernel___Object___object_id},
   {(bigint) standard___kernel___Object___is_same_type},
   {(bigint) standard___kernel___Object_____eqeq},
@@ -160643,7 +160167,7 @@ const classtable_elt_t VFT_native_interface___frontier___FrontierVisitor[69] = {
   {(bigint) standard___math___Object___srand},
   {(bigint) utils___Object___cmangle},
   {(bigint) utils___Object___cmangle_table},
-  {(bigint) 1 /* 49: FrontierVisitor < FrontierVisitor: superclass init_table position */},
+  {(bigint) 1 /* 47: FrontierVisitor < FrontierVisitor: superclass init_table position */},
   {(bigint) native_interface___frontier___FrontierVisitor___header_top},
   {(bigint) native_interface___frontier___FrontierVisitor___header_top__eq},
   {(bigint) native_interface___frontier___FrontierVisitor___header},
@@ -160686,22 +160210,22 @@ void INIT_ATTRIBUTES__native_interface___frontier___FrontierVisitor(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./native_interface//frontier.nit:265 */
+  /* ./native_interface//frontier.nit:267 */
   fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atheader_top(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:268 */
+  /* ./native_interface//frontier.nit:270 */
   fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atheader(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:271 */
+  /* ./native_interface//frontier.nit:273 */
   fra.me.REG[1] = NEW_Writer_compiling___compiling_writer___Writer___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atbody(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:274 */
+  /* ./native_interface//frontier.nit:276 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atfriendlys(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:277 */
+  /* ./native_interface//frontier.nit:279 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____attypes(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./native_interface//frontier.nit:280 */
+  /* ./native_interface//frontier.nit:282 */
   fra.me.REG[1] = NEW_HashSet_standard___collection___hash_collection___HashSet___init();
   ATTR_native_interface___frontier___FrontierVisitor_____atcasts(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
index 89cbbd5..f1b4014 100644 (file)
@@ -6,17 +6,17 @@ val_t opts___Option___names(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 16;
+  fra.me.line = 19;
   fra.me.meth = LOCATE_opts___Option___names;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:16 */
+  /* ./../lib/opts.nit:19 */
   REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 16);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 19);
   }
   fra.me.REG[0] = ATTR_opts___Option____names(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -28,17 +28,17 @@ val_t opts___Option___helptext(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 22;
+  fra.me.line = 25;
   fra.me.meth = LOCATE_opts___Option___helptext;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:22 */
+  /* ./../lib/opts.nit:25 */
   REGB0 = TAG_Bool(ATTR_opts___Option____helptext(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_opts, 22);
+    nit_abort("Uninitialized attribute %s", "_helptext", LOCATE_opts, 25);
   }
   fra.me.REG[0] = ATTR_opts___Option____helptext(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -50,17 +50,17 @@ val_t opts___Option___mandatory(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 25;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_opts___Option___mandatory;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:25 */
+  /* ./../lib/opts.nit:28 */
   REGB0 = TAG_Bool(ATTR_opts___Option____mandatory(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_opts, 25);
+    nit_abort("Uninitialized attribute %s", "_mandatory", LOCATE_opts, 28);
   }
   REGB0 = ATTR_opts___Option____mandatory(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -72,14 +72,14 @@ void opts___Option___mandatory__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_opts;
-  fra.me.line = 25;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_opts___Option___mandatory__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/opts.nit:25 */
+  /* ./../lib/opts.nit:28 */
   ATTR_opts___Option____mandatory(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -89,7 +89,7 @@ void opts___Option___value__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_opts;
-  fra.me.line = 28;
+  fra.me.line = 31;
   fra.me.meth = LOCATE_opts___Option___value__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -97,47 +97,50 @@ void opts___Option___value__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:28 */
+  /* ./../lib/opts.nit:31 */
   ATTR_opts___Option____value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
 val_t opts___Option___value(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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_opts;
-  fra.me.line = 31;
+  fra.me.line = 34;
   fra.me.meth = LOCATE_opts___Option___value;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:32 */
-  fra.me.REG[0] = ATTR_opts___Option____value(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_standard___kernel___Object, ID_standard___kernel___Object)) /*cast VALUE*/;
+  /* ./../lib/opts.nit:34 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/opts.nit:35 */
+  fra.me.REG[1] = ATTR_opts___Option____value(fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]==NIT_NULL) || VAL_ISA(fra.me.REG[1], VTCOLOR_opts___Option___VALUE(fra.me.REG[0]), VTID_opts___Option___VALUE(fra.me.REG[0]))) /*cast VALUE*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 32);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 35);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t opts___Option___default_value(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_opts;
-  fra.me.line = 34;
+  fra.me.line = 37;
   fra.me.meth = LOCATE_opts___Option___default_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:34 */
+  /* ./../lib/opts.nit:37 */
   fra.me.REG[0] = ATTR_opts___Option____default_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -147,7 +150,7 @@ void opts___Option___default_value__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_opts;
-  fra.me.line = 34;
+  fra.me.line = 37;
   fra.me.meth = LOCATE_opts___Option___default_value__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -155,7 +158,7 @@ void opts___Option___default_value__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:34 */
+  /* ./../lib/opts.nit:37 */
   ATTR_opts___Option____default_value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -169,7 +172,7 @@ void opts___Option___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, int* init_
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 37;
+  fra.me.line = 40;
   fra.me.meth = LOCATE_opts___Option___init_opt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -182,7 +185,7 @@ void opts___Option___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, int* init_
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./../lib/opts.nit:40 */
+  /* ./../lib/opts.nit:43 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -196,59 +199,61 @@ void opts___Option___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, int* init_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/opts.nit:41 */
+    /* ./../lib/opts.nit:44 */
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
     ATTR_opts___Option____names(fra.me.REG[0]) = fra.me.REG[4];
   } else {
-    /* ./../lib/opts.nit:43 */
+    /* ./../lib/opts.nit:46 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_opts, 43);
+      nit_abort("Reciever is null", NULL, LOCATE_opts, 46);
     }
     fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
     ATTR_opts___Option____names(fra.me.REG[0]) = fra.me.REG[3];
   }
-  /* ./../lib/opts.nit:45 */
+  /* ./../lib/opts.nit:48 */
   ATTR_opts___Option____helptext(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/opts.nit:46 */
+  /* ./../lib/opts.nit:49 */
   REGB0 = TAG_Bool(false);
   ATTR_opts___Option____mandatory(fra.me.REG[0]) = REGB0;
-  /* ./../lib/opts.nit:47 */
+  /* ./../lib/opts.nit:50 */
   ATTR_opts___Option____default_value(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/opts.nit:48 */
+  /* ./../lib/opts.nit:51 */
   ATTR_opts___Option____value(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
 }
 void opts___Option___add_aliases(val_t p0, val_t p1){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 51;
+  fra.me.line = 54;
   fra.me.meth = LOCATE_opts___Option___add_aliases;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:51 */
+  /* ./../lib/opts.nit:54 */
+  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[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 51);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 54);
   }
-  /* ./../lib/opts.nit:52 */
-  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/opts.nit:55 */
+  REGB0 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 52);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 55);
   }
-  fra.me.REG[0] = ATTR_opts___Option____names(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  fra.me.REG[2] = ATTR_opts___Option____names(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -258,13 +263,13 @@ val_t opts___Option___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 54;
+  fra.me.line = 57;
   fra.me.meth = LOCATE_opts___Option___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:55 */
+  /* ./../lib/opts.nit:58 */
   REGB0 = TAG_Int(2);
   fra.me.REG[0] = CALL_opts___Option___pretty(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -276,6 +281,7 @@ val_t opts___Option___pretty(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 REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -283,7 +289,7 @@ val_t opts___Option___pretty(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_opts;
-  fra.me.line = 57;
+  fra.me.line = 60;
   fra.me.meth = LOCATE_opts___Option___pretty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -293,7 +299,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/opts.nit:60 */
+  /* ./../lib/opts.nit:63 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("  ");
     REGB1 = TAG_Int(2);
@@ -303,11 +309,11 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___from(fra.me.REG[1]);
-  /* ./../lib/opts.nit:61 */
+  /* ./../lib/opts.nit:64 */
   REGB1 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 61);
+    nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 64);
   }
   fra.me.REG[2] = ATTR_opts___Option____names(fra.me.REG[0]);
   if (!once_value_2) {
@@ -320,7 +326,7 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   fra.me.REG[3] = fra.me.REG[3];
   fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./../lib/opts.nit:62 */
+  /* ./../lib/opts.nit:65 */
   if (!once_value_3) {
     fra.me.REG[3] = BOX_NativeString("  ");
     REGB1 = TAG_Int(2);
@@ -330,20 +336,25 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
   } else fra.me.REG[3] = once_value_3;
   fra.me.REG[3] = fra.me.REG[3];
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/opts.nit:64 */
+  /* ./../lib/opts.nit:67 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-  /* ./../lib/opts.nit:64 */
+  /* ./../lib/opts.nit:67 */
   if (UNTAG_Bool(REGB0)) {
     if (!once_value_4) {
       fra.me.REG[3] = BOX_NativeString(" ");
@@ -356,10 +367,10 @@ val_t opts___Option___pretty(val_t p0, val_t p1){
     fra.me.REG[3] = CALL_standard___string___String_____star(fra.me.REG[3])(fra.me.REG[3], REGB1);
     CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
-  /* ./../lib/opts.nit:65 */
+  /* ./../lib/opts.nit:68 */
   fra.me.REG[0] = CALL_opts___Option___helptext(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./../lib/opts.nit:67 */
+  /* ./../lib/opts.nit:70 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label5;
   label5: while(0);
@@ -376,7 +387,7 @@ val_t opts___Option___pretty_default(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_opts;
-  fra.me.line = 70;
+  fra.me.line = 73;
   fra.me.meth = LOCATE_opts___Option___pretty_default;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -384,9 +395,9 @@ val_t opts___Option___pretty_default(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:72 */
+  /* ./../lib/opts.nit:75 */
   fra.me.REG[0] = CALL_opts___Option___default_value(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/opts.nit:73 */
+  /* ./../lib/opts.nit:76 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -426,7 +437,7 @@ val_t opts___Option___pretty_default(val_t p0){
     fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
     goto label3;
   }
-  /* ./../lib/opts.nit:74 */
+  /* ./../lib/opts.nit:77 */
   if (!once_value_4) {
     fra.me.REG[0] = BOX_NativeString("");
     REGB0 = TAG_Int(0);
@@ -446,12 +457,12 @@ void opts___Option___read_param(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 77;
+  fra.me.line = 80;
   fra.me.meth = LOCATE_opts___Option___read_param;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/opts.nit:77 */
-  nit_abort("Deferred method called", NULL, LOCATE_opts, 77);
+  /* ./../lib/opts.nit:80 */
+  nit_abort("Deferred method called", NULL, LOCATE_opts, 80);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -462,7 +473,7 @@ void opts___OptionText___init(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_opts;
-  fra.me.line = 83;
+  fra.me.line = 86;
   fra.me.meth = LOCATE_opts___OptionText___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -470,7 +481,7 @@ void opts___OptionText___init(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;
-  /* ./../lib/opts.nit:83 */
+  /* ./../lib/opts.nit:86 */
   CALL_opts___Option___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL, NIT_NULL, init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -482,14 +493,14 @@ val_t opts___OptionText___pretty(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 85;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_opts___OptionText___pretty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/opts.nit:85 */
+  /* ./../lib/opts.nit:88 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -501,13 +512,13 @@ val_t opts___OptionText___to_s(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 87;
+  fra.me.line = 90;
   fra.me.meth = LOCATE_opts___OptionText___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:87 */
+  /* ./../lib/opts.nit:90 */
   fra.me.REG[0] = CALL_opts___Option___helptext(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -516,30 +527,32 @@ val_t opts___OptionText___to_s(val_t p0){
 }
 void opts___OptionBool___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionBool].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} 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_opts;
-  fra.me.line = 94;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_opts___OptionBool___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/opts.nit:94 */
+  /* ./../lib/opts.nit:97 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 94);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 97);
   }
   REGB0 = TAG_Bool(false);
-  CALL_opts___Option___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
+  CALL_opts___Option___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
   return;
@@ -550,7 +563,7 @@ void opts___OptionBool___read_param(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 96;
+  fra.me.line = 99;
   fra.me.meth = LOCATE_opts___OptionBool___read_param;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -558,7 +571,7 @@ void opts___OptionBool___read_param(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:96 */
+  /* ./../lib/opts.nit:99 */
   REGB0 = TAG_Bool(true);
   CALL_opts___Option___value__eq(fra.me.REG[0])(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
@@ -566,30 +579,32 @@ void opts___OptionBool___read_param(val_t p0, val_t p1){
 }
 void opts___OptionCount___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionCount].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 103;
+  fra.me.line = 106;
   fra.me.meth = LOCATE_opts___OptionCount___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/opts.nit:103 */
+  /* ./../lib/opts.nit:106 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 103);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 106);
   }
   REGB0 = TAG_Int(0);
-  CALL_opts___Option___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
+  CALL_opts___Option___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
   return;
@@ -600,7 +615,7 @@ void opts___OptionCount___read_param(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 105;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_opts___OptionCount___read_param;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -608,12 +623,12 @@ void opts___OptionCount___read_param(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:105 */
+  /* ./../lib/opts.nit:108 */
   fra.me.REG[1] = CALL_opts___Option___value(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB0 = TAG_Int(UNTAG_Int(fra.me.REG[1])+UNTAG_Int(REGB0));
-  /* ./../lib/opts.nit:105 */
+  /* ./../lib/opts.nit:108 */
   CALL_opts___Option___value__eq(fra.me.REG[0])(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
   return;
@@ -623,12 +638,12 @@ val_t opts___OptionParameter___convert(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 111;
+  fra.me.line = 114;
   fra.me.meth = LOCATE_opts___OptionParameter___convert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/opts.nit:111 */
-  nit_abort("Deferred method called", NULL, LOCATE_opts, 111);
+  /* ./../lib/opts.nit:114 */
+  nit_abort("Deferred method called", NULL, LOCATE_opts, 114);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -638,7 +653,7 @@ void opts___OptionParameter___read_param(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 113;
+  fra.me.line = 116;
   fra.me.meth = LOCATE_opts___OptionParameter___read_param;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -647,14 +662,14 @@ void opts___OptionParameter___read_param(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:115 */
+  /* ./../lib/opts.nit:118 */
   REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/opts.nit:116 */
+    /* ./../lib/opts.nit:119 */
     fra.me.REG[2] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[2] = CALL_opts___OptionParameter___convert(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
     CALL_opts___Option___value__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-    /* ./../lib/opts.nit:117 */
+    /* ./../lib/opts.nit:120 */
     CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
@@ -667,7 +682,7 @@ void opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, i
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 123;
+  fra.me.line = 126;
   fra.me.meth = LOCATE_opts___OptionParameter___init_opt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -679,7 +694,7 @@ void opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, i
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./../lib/opts.nit:123 */
+  /* ./../lib/opts.nit:126 */
   CALL_opts___Option___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -687,29 +702,31 @@ void opts___OptionParameter___init_opt(val_t p0, val_t p1, val_t p2, val_t p3, i
 }
 void opts___OptionString___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionString].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 130;
+  fra.me.line = 133;
   fra.me.meth = LOCATE_opts___OptionString___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/opts.nit:130 */
+  /* ./../lib/opts.nit:133 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 130);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 133);
   }
-  CALL_opts___OptionParameter___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], NIT_NULL, fra.me.REG[2], init_table);
+  CALL_opts___OptionParameter___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], NIT_NULL, fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
   return;
@@ -719,7 +736,7 @@ val_t opts___OptionString___convert(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 132;
+  fra.me.line = 135;
   fra.me.meth = LOCATE_opts___OptionString___convert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -727,7 +744,7 @@ val_t opts___OptionString___convert(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:132 */
+  /* ./../lib/opts.nit:135 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -739,6 +756,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   static val_t once_value_2; /* Once value */
@@ -747,7 +765,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 140;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_opts___OptionEnum___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -762,34 +780,40 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   fra.me.REG[2] = p2;
   REGB0 = p3;
   fra.me.REG[3] = p4;
-  /* ./../lib/opts.nit:140 */
+  /* ./../lib/opts.nit:143 */
+  fra.me.REG[4] = fra.me.REG[0];
   REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[3], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 140);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 143);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/opts.nit:142 */
+  /* ./../lib/opts.nit:145 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ./../lib/opts.nit:142 */
+  /* ./../lib/opts.nit:145 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_opts, 142);
+    nit_abort("Assert failed", NULL, LOCATE_opts, 145);
   }
-  /* ./../lib/opts.nit:143 */
-  fra.me.REG[4] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
-  ATTR_opts___OptionEnum____values(fra.me.REG[0]) = fra.me.REG[4];
-  /* ./../lib/opts.nit:144 */
+  /* ./../lib/opts.nit:146 */
+  fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[1])(fra.me.REG[1]);
+  ATTR_opts___OptionEnum____values(fra.me.REG[4]) = fra.me.REG[0];
+  /* ./../lib/opts.nit:147 */
   REGB2 = TAG_Int(5);
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
   if (!once_value_1) {
     fra.me.REG[5] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
@@ -798,8 +822,8 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
     register_static_object(&once_value_1);
   } else fra.me.REG[5] = once_value_1;
   fra.me.REG[5] = fra.me.REG[5];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   if (!once_value_2) {
     fra.me.REG[2] = BOX_NativeString(" <");
     REGB2 = TAG_Int(2);
@@ -808,7 +832,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
     register_static_object(&once_value_2);
   } else fra.me.REG[2] = once_value_2;
   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[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   if (!once_value_3) {
     fra.me.REG[2] = BOX_NativeString(", ");
     REGB2 = TAG_Int(2);
@@ -818,7 +842,7 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
   if (!once_value_4) {
     fra.me.REG[2] = BOX_NativeString(">");
     REGB2 = TAG_Int(1);
@@ -827,9 +851,9 @@ void opts___OptionEnum___init(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4,
     register_static_object(&once_value_4);
   } else fra.me.REG[2] = once_value_4;
   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[2]);
-  fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  CALL_opts___OptionParameter___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4], REGB0, fra.me.REG[3], init_table);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_opts___OptionParameter___init_opt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0], REGB0, fra.me.REG[3], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
   return;
@@ -840,7 +864,7 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 147;
+  fra.me.line = 150;
   fra.me.meth = LOCATE_opts___OptionEnum___convert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -848,15 +872,15 @@ val_t opts___OptionEnum___convert(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:149 */
+  /* ./../lib/opts.nit:152 */
   REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 149);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 152);
   }
   fra.me.REG[0] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/opts.nit:150 */
+  /* ./../lib/opts.nit:153 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -870,65 +894,75 @@ val_t opts___OptionEnum___value_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 153;
+  fra.me.line = 156;
   fra.me.meth = LOCATE_opts___OptionEnum___value_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:153 */
+  /* ./../lib/opts.nit:156 */
   REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 153);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 156);
   }
   fra.me.REG[1] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
   fra.me.REG[0] = CALL_opts___Option___value(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   REGB0 = fra.me.REG[0];
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
-  /* ./../lib/opts.nit:153 */
+  /* ./../lib/opts.nit:156 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
 val_t opts___OptionEnum___pretty_default(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -938,149 +972,164 @@ val_t opts___OptionEnum___pretty_default(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_opts;
-  fra.me.line = 155;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_opts___OptionEnum___pretty_default;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:157 */
-  fra.me.REG[1] = CALL_opts___Option___default_value(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  /* ./../lib/opts.nit:158 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/opts.nit:160 */
+  fra.me.REG[2] = CALL_opts___Option___default_value(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
-      REGB1 = TAG_Bool((fra.me.REG[1])==(NIT_NULL));
-      /* ./../lib/opts.nit:157 */
+      /* ./../lib/standard//kernel.nit:227 */
+      REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
+      /* ./../lib/opts.nit:160 */
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/opts.nit:158 */
+    /* ./../lib/opts.nit:161 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[2] = BOX_NativeString(" (");
+      fra.me.REG[3] = BOX_NativeString(" (");
       REGB0 = TAG_Int(2);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_1 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_1 = fra.me.REG[3];
       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]);
-    REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
+    } 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]);
+    REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 158);
+      nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 161);
     }
-    fra.me.REG[2] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_opts___Option___default_value(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___kernel___Int, ID_standard___kernel___Int)) /*cast VALUE*/;
+    fra.me.REG[3] = ATTR_opts___OptionEnum____values(fra.me.REG[1]);
+    fra.me.REG[1] = CALL_opts___Option___default_value(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], VTCOLOR_opts___Option___VALUE(fra.me.REG[0]), VTID_opts___Option___VALUE(fra.me.REG[0]))) /*cast VALUE*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_opts, 158);
+      nit_abort("Cast failed", NULL, LOCATE_opts, 161);
     }
-    /* ./../lib/standard//collection//array.nit:243 */
-    REGB0 = fra.me.REG[0];
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:278 */
+    REGB0 = fra.me.REG[1];
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
-    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:281 */
+    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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
-    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:718 */
+    fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label2;
     label2: while(0);
-    /* ./../lib/opts.nit:158 */
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* ./../lib/opts.nit:161 */
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     if (!once_value_3) {
-      fra.me.REG[2] = BOX_NativeString(")");
+      fra.me.REG[3] = BOX_NativeString(")");
       REGB0 = TAG_Int(1);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_3 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
-    } else fra.me.REG[2] = once_value_3;
-    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[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+    } 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]);
+    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
     goto label4;
   } else {
-    /* ./../lib/opts.nit:160 */
+    /* ./../lib/opts.nit:163 */
     if (!once_value_5) {
-      fra.me.REG[2] = BOX_NativeString("");
+      fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_5 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_5 = fra.me.REG[3];
       register_static_object(&once_value_5);
-    } else fra.me.REG[2] = once_value_5;
-    fra.me.REG[2] = fra.me.REG[2];
-    fra.me.REG[1] = fra.me.REG[2];
+    } else fra.me.REG[3] = once_value_5;
+    fra.me.REG[3] = fra.me.REG[3];
+    fra.me.REG[2] = fra.me.REG[3];
     goto label4;
   }
   label4: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[1];
+  return fra.me.REG[2];
 }
 void opts___OptionInt___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionInt].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 169;
+  fra.me.line = 172;
   fra.me.meth = LOCATE_opts___OptionInt___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
   fra.me.REG[2] = p3;
-  /* ./../lib/opts.nit:169 */
+  /* ./../lib/opts.nit:172 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 169);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 172);
   }
-  CALL_opts___OptionParameter___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
+  CALL_opts___OptionParameter___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos7] = 1;
   return;
@@ -1091,7 +1140,7 @@ val_t opts___OptionInt___convert(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 171;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_opts___OptionInt___convert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1099,7 +1148,7 @@ val_t opts___OptionInt___convert(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:171 */
+  /* ./../lib/opts.nit:174 */
   REGB0 = CALL_standard___string___AbstractString___to_i(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -1114,7 +1163,7 @@ void opts___OptionArray___init(val_t p0, val_t p1, val_t p2, int* init_table){
   if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 178;
+  fra.me.line = 181;
   fra.me.meth = LOCATE_opts___OptionArray___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1125,23 +1174,24 @@ void opts___OptionArray___init(val_t p0, val_t p1, val_t p2, int* init_table){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/opts.nit:178 */
+  /* ./../lib/opts.nit:181 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 178);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 181);
   }
-  /* ./../lib/opts.nit:180 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  ATTR_opts___OptionArray____values(fra.me.REG[0]) = fra.me.REG[3];
-  /* ./../lib/opts.nit:181 */
-  REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/opts.nit:183 */
+  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
+  ATTR_opts___OptionArray____values(fra.me.REG[3]) = fra.me.REG[0];
+  /* ./../lib/opts.nit:184 */
+  REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 181);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 184);
   }
-  fra.me.REG[3] = ATTR_opts___OptionArray____values(fra.me.REG[0]);
-  CALL_opts___OptionParameter___init_opt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], init_table);
+  fra.me.REG[0] = ATTR_opts___OptionArray____values(fra.me.REG[3]);
+  CALL_opts___OptionParameter___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos8] = 1;
   return;
@@ -1152,7 +1202,7 @@ val_t opts___OptionArray___convert(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 185;
+  fra.me.line = 188;
   fra.me.meth = LOCATE_opts___OptionArray___convert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1161,19 +1211,19 @@ val_t opts___OptionArray___convert(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:187 */
+  /* ./../lib/opts.nit:190 */
   REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 187);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 190);
   }
   fra.me.REG[2] = ATTR_opts___OptionArray____values(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ./../lib/opts.nit:188 */
+  /* ./../lib/opts.nit:191 */
   REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 188);
+    nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 191);
   }
   fra.me.REG[0] = ATTR_opts___OptionArray____values(fra.me.REG[0]);
   goto label1;
@@ -1187,17 +1237,17 @@ val_t opts___OptionContext___options(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 193;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_opts___OptionContext___options;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:193 */
+  /* ./../lib/opts.nit:196 */
   REGB0 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 193);
+    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 196);
   }
   fra.me.REG[0] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1209,17 +1259,17 @@ val_t opts___OptionContext___rest(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 194;
+  fra.me.line = 197;
   fra.me.meth = LOCATE_opts___OptionContext___rest;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:194 */
+  /* ./../lib/opts.nit:197 */
   REGB0 = TAG_Bool(ATTR_opts___OptionContext____rest(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_rest", LOCATE_opts, 194);
+    nit_abort("Uninitialized attribute %s", "_rest", LOCATE_opts, 197);
   }
   fra.me.REG[0] = ATTR_opts___OptionContext____rest(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1236,7 +1286,7 @@ void opts___OptionContext___usage(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 198;
+  fra.me.line = 201;
   fra.me.meth = LOCATE_opts___OptionContext___usage;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1247,174 +1297,194 @@ void opts___OptionContext___usage(val_t p0){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:200 */
+  /* ./../lib/opts.nit:203 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/opts.nit:201 */
+  /* ./../lib/opts.nit:204 */
   REGB1 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 201);
+    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 204);
   }
   fra.me.REG[1] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/opts.nit:202 */
+      /* ./../lib/opts.nit:205 */
       REGB2 = TAG_Int(3);
-      /* ./../lib/opts.nit:203 */
+      /* ./../lib/opts.nit:206 */
       fra.me.REG[3] = CALL_opts___Option___names(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       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, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../lib/standard//collection//array.nit:273 */
           REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/opts.nit:204 */
+          /* ./../lib/opts.nit:207 */
           REGB5 = TAG_Int(2);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
           REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-          /* ./../lib/opts.nit:204 */
+          /* ./../lib/opts.nit:207 */
           REGB2 = REGB5;
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB5 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB3 = REGB5;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      /* ./../lib/opts.nit:206 */
+      /* ./../lib/opts.nit:209 */
       if (UNTAG_Bool(REGB3)) {
         REGB0 = REGB2;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/opts.nit:209 */
+  /* ./../lib/opts.nit:212 */
   REGB1 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 209);
+    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 212);
   }
   fra.me.REG[2] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/opts.nit:210 */
+      /* ./../lib/opts.nit:213 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -1427,7 +1497,7 @@ void opts___OptionContext___parse(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 214;
+  fra.me.line = 217;
   fra.me.meth = LOCATE_opts___OptionContext___parse;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1435,9 +1505,9 @@ void opts___OptionContext___parse(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:217 */
+  /* ./../lib/opts.nit:220 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/opts.nit:218 */
+  /* ./../lib/opts.nit:221 */
   CALL_opts___OptionContext___parse_intern(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1451,7 +1521,7 @@ void opts___OptionContext___parse_intern(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_opts;
-  fra.me.line = 221;
+  fra.me.line = 224;
   fra.me.meth = LOCATE_opts___OptionContext___parse_intern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1462,18 +1532,18 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:223 */
+  /* ./../lib/opts.nit:226 */
   REGB0 = TAG_Bool(true);
-  /* ./../lib/opts.nit:224 */
+  /* ./../lib/opts.nit:227 */
   CALL_opts___OptionContext___build(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/opts.nit:225 */
+  /* ./../lib/opts.nit:228 */
   REGB1 = TAG_Bool(ATTR_opts___OptionContext____rest(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_rest", LOCATE_opts, 225);
+    nit_abort("Uninitialized attribute %s", "_rest", LOCATE_opts, 228);
   }
   fra.me.REG[2] = ATTR_opts___OptionContext____rest(fra.me.REG[0]);
-  /* ./../lib/opts.nit:227 */
+  /* ./../lib/opts.nit:230 */
   while(1) {
     if (UNTAG_Bool(REGB0)) {
       REGB1 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[1]);
@@ -1482,9 +1552,9 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/opts.nit:228 */
+      /* ./../lib/opts.nit:231 */
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./../lib/opts.nit:229 */
+      /* ./../lib/opts.nit:232 */
       if (!once_value_1) {
         fra.me.REG[4] = BOX_NativeString("--");
         REGB1 = TAG_Int(2);
@@ -1500,46 +1570,46 @@ void opts___OptionContext___parse_intern(val_t p0, val_t p1){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/opts.nit:230 */
+        /* ./../lib/opts.nit:233 */
         CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
-        /* ./../lib/opts.nit:231 */
+        /* ./../lib/opts.nit:234 */
         fra.me.REG[4] = CALL_standard___collection___array___Iterator___to_a(fra.me.REG[1])(fra.me.REG[1]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ./../lib/opts.nit:232 */
+        /* ./../lib/opts.nit:235 */
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        /* ./../lib/opts.nit:234 */
+        /* ./../lib/opts.nit:237 */
         REGB1 = TAG_Bool(ATTR_opts___OptionContext____optmap(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 234);
+          nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 237);
         }
         fra.me.REG[4] = ATTR_opts___OptionContext____optmap(fra.me.REG[0]);
         REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./../lib/opts.nit:235 */
+          /* ./../lib/opts.nit:238 */
           REGB1 = TAG_Bool(ATTR_opts___OptionContext____optmap(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 235);
+            nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 238);
           }
           fra.me.REG[4] = ATTR_opts___OptionContext____optmap(fra.me.REG[0]);
           fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-          /* ./../lib/opts.nit:236 */
+          /* ./../lib/opts.nit:239 */
           CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
-          /* ./../lib/opts.nit:237 */
+          /* ./../lib/opts.nit:240 */
           CALL_opts___Option___read_param(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
         } else {
-          /* ./../lib/opts.nit:239 */
+          /* ./../lib/opts.nit:242 */
           fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[1])(fra.me.REG[1]);
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          /* ./../lib/opts.nit:240 */
+          /* ./../lib/opts.nit:243 */
           CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
         }
       }
     } else {
-      /* ./../lib/opts.nit:227 */
+      /* ./../lib/opts.nit:230 */
       goto label2;
     }
   }
@@ -1551,10 +1621,11 @@ void opts___OptionContext___add_option(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_opts;
-  fra.me.line = 246;
+  fra.me.line = 249;
   fra.me.meth = LOCATE_opts___OptionContext___add_option;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1565,59 +1636,65 @@ void opts___OptionContext___add_option(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/opts.nit:246 */
+  /* ./../lib/opts.nit:249 */
+  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[Option]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_opts, 246);
+    nit_abort("Cast failed", NULL, LOCATE_opts, 249);
   }
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  /* ./../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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/opts.nit:249 */
-      REGB1 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
+      /* ./../lib/opts.nit:252 */
+      REGB1 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 249);
+        nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 252);
       }
-      fra.me.REG[4] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
+      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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
@@ -1632,20 +1709,20 @@ void opts___OptionContext___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_opts;
-  fra.me.line = 253;
+  fra.me.line = 256;
   fra.me.meth = LOCATE_opts___OptionContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:255 */
+  /* ./../lib/opts.nit:258 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_opts___OptionContext____options(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/opts.nit:256 */
+  /* ./../lib/opts.nit:259 */
   fra.me.REG[1] = NEW_HashMap_standard___collection___hash_collection___HashMap___init();
   ATTR_opts___OptionContext____optmap(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/opts.nit:257 */
+  /* ./../lib/opts.nit:260 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   ATTR_opts___OptionContext____rest(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
@@ -1657,10 +1734,11 @@ void opts___OptionContext___build(val_t p0){
   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_opts;
-  fra.me.line = 260;
+  fra.me.line = 263;
   fra.me.meth = LOCATE_opts___OptionContext___build;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -1673,105 +1751,115 @@ void opts___OptionContext___build(val_t p0){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/opts.nit:262 */
+  /* ./../lib/opts.nit:265 */
   REGB0 = TAG_Bool(ATTR_opts___OptionContext____options(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 262);
+    nit_abort("Uninitialized attribute %s", "_options", LOCATE_opts, 265);
   }
   fra.me.REG[1] = ATTR_opts___OptionContext____options(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/opts.nit:263 */
+      /* ./../lib/opts.nit:266 */
       fra.me.REG[4] = CALL_opts___Option___names(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       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, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB2)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../lib/standard//collection//array.nit:273 */
           REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
-          /* ./../lib/opts.nit:264 */
+          /* ./../lib/opts.nit:267 */
           REGB2 = TAG_Bool(ATTR_opts___OptionContext____optmap(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 264);
+            nit_abort("Uninitialized attribute %s", "_optmap", LOCATE_opts, 267);
           }
           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:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = REGB2;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label1;
         }
       }
       label1: while(0);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
index 20a7076..8d503dc 100644 (file)
@@ -34,18 +34,20 @@ extern const int SFT_opts[];
 #define ATTR_opts___Option____default_value(recv) ATTR(recv, (SFT_opts[2] + 4))
 #define INIT_TABLE_POS_opts___Option (SFT_opts[3] + 0)
 #define CALL_opts___Option___names(recv) ((opts___Option___names_t)CALL((recv), (SFT_opts[3] + 1)))
-#define CALL_opts___Option___helptext(recv) ((opts___Option___helptext_t)CALL((recv), (SFT_opts[3] + 2)))
-#define CALL_opts___Option___mandatory(recv) ((opts___Option___mandatory_t)CALL((recv), (SFT_opts[3] + 3)))
-#define CALL_opts___Option___mandatory__eq(recv) ((opts___Option___mandatory__eq_t)CALL((recv), (SFT_opts[3] + 4)))
-#define CALL_opts___Option___value__eq(recv) ((opts___Option___value__eq_t)CALL((recv), (SFT_opts[3] + 5)))
-#define CALL_opts___Option___value(recv) ((opts___Option___value_t)CALL((recv), (SFT_opts[3] + 6)))
-#define CALL_opts___Option___default_value(recv) ((opts___Option___default_value_t)CALL((recv), (SFT_opts[3] + 7)))
-#define CALL_opts___Option___default_value__eq(recv) ((opts___Option___default_value__eq_t)CALL((recv), (SFT_opts[3] + 8)))
-#define CALL_opts___Option___init_opt(recv) ((opts___Option___init_opt_t)CALL((recv), (SFT_opts[3] + 9)))
-#define CALL_opts___Option___add_aliases(recv) ((opts___Option___add_aliases_t)CALL((recv), (SFT_opts[3] + 10)))
-#define CALL_opts___Option___pretty(recv) ((opts___Option___pretty_t)CALL((recv), (SFT_opts[3] + 11)))
-#define CALL_opts___Option___pretty_default(recv) ((opts___Option___pretty_default_t)CALL((recv), (SFT_opts[3] + 12)))
-#define CALL_opts___Option___read_param(recv) ((opts___Option___read_param_t)CALL((recv), (SFT_opts[3] + 13)))
+#define VTID_opts___Option___VALUE(recv) (VAL2VFT(recv)[SFT_opts[3] + 2].i)
+#define VTCOLOR_opts___Option___VALUE(recv) (VAL2VFT(recv)[SFT_opts[3] + 3].i)
+#define CALL_opts___Option___helptext(recv) ((opts___Option___helptext_t)CALL((recv), (SFT_opts[3] + 4)))
+#define CALL_opts___Option___mandatory(recv) ((opts___Option___mandatory_t)CALL((recv), (SFT_opts[3] + 5)))
+#define CALL_opts___Option___mandatory__eq(recv) ((opts___Option___mandatory__eq_t)CALL((recv), (SFT_opts[3] + 6)))
+#define CALL_opts___Option___value__eq(recv) ((opts___Option___value__eq_t)CALL((recv), (SFT_opts[3] + 7)))
+#define CALL_opts___Option___value(recv) ((opts___Option___value_t)CALL((recv), (SFT_opts[3] + 8)))
+#define CALL_opts___Option___default_value(recv) ((opts___Option___default_value_t)CALL((recv), (SFT_opts[3] + 9)))
+#define CALL_opts___Option___default_value__eq(recv) ((opts___Option___default_value__eq_t)CALL((recv), (SFT_opts[3] + 10)))
+#define CALL_opts___Option___init_opt(recv) ((opts___Option___init_opt_t)CALL((recv), (SFT_opts[3] + 11)))
+#define CALL_opts___Option___add_aliases(recv) ((opts___Option___add_aliases_t)CALL((recv), (SFT_opts[3] + 12)))
+#define CALL_opts___Option___pretty(recv) ((opts___Option___pretty_t)CALL((recv), (SFT_opts[3] + 13)))
+#define CALL_opts___Option___pretty_default(recv) ((opts___Option___pretty_default_t)CALL((recv), (SFT_opts[3] + 14)))
+#define CALL_opts___Option___read_param(recv) ((opts___Option___read_param_t)CALL((recv), (SFT_opts[3] + 15)))
 #define ID_opts___OptionText (SFT_opts[4])
 #define COLOR_opts___OptionText (SFT_opts[5])
 #define INIT_TABLE_POS_opts___OptionText (SFT_opts[6] + 0)
index de701a4..4d9ca08 100644 (file)
@@ -122,7 +122,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:38 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   /* ./parser//parser.nit:38 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB0;
@@ -160,55 +160,70 @@ 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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
   /* ./parser//parser.nit:49 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:214 */
+    REGB3 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:231 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB4));
     /* ./parser//parser.nit:49 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
       /* ./parser//parser.nit:50 */
       REGB5 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:222 */
+      /* ./../lib/standard//kernel.nit:239 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB5));
       /* ./parser//parser.nit:51 */
       REGB3 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:221 */
+      /* ./../lib/standard//kernel.nit:238 */
       REGB3 = TAG_Int(UNTAG_Int(REGB5)*UNTAG_Int(REGB3));
       /* ./parser//parser.nit:51 */
       REGB6 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB6 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB6));
       /* ./parser//parser.nit:53 */
       REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB6);
-      /* ./../lib/standard//kernel.nit:215 */
+      REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB7)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:232 */
       REGB7 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
       /* ./parser//parser.nit:54 */
       if (UNTAG_Bool(REGB7)) {
         /* ./parser//parser.nit:55 */
         REGB7 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB7 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB7));
         /* ./parser//parser.nit:55 */
         REGB4 = REGB7;
       } else {
-        /* ./../lib/standard//kernel.nit:217 */
+        REGB7 = TAG_Bool(VAL_ISA(REGB3, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB7)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:234 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
         /* ./parser//parser.nit:56 */
         if (UNTAG_Bool(REGB3)) {
           /* ./parser//parser.nit:57 */
           REGB3 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB3 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB3));
           /* ./parser//parser.nit:57 */
           REGB2 = REGB3;
         } else {
           /* ./parser//parser.nit:59 */
           REGB3 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB3 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB3));
           /* ./parser//parser.nit:59 */
           REGB3 = CALL_parser___tables___TablesCapable___parser_goto(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB3);
@@ -257,7 +272,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
   /* ./parser//parser.nit:70 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB2;
@@ -268,14 +283,19 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
     nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 71);
   }
   fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    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:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
   /* ./parser//parser.nit:71 */
   if (UNTAG_Bool(REGB1)) {
@@ -286,38 +306,48 @@ void parser___Parser___push(val_t p0, val_t p1, val_t p2){
       nit_abort("Uninitialized attribute %s", "_stack", LOCATE_parser, 72);
     }
     fra.me.REG[2] = ATTR_parser___Parser____stack(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Bool(false);
       REGB1 = REGB3;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label1;
     label1: while(0);
     /* ./parser//parser.nit:73 */
@@ -366,38 +396,48 @@ val_t parser___Parser___state(val_t p0){
     nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 83);
   }
   REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./parser//parser.nit:83 */
@@ -439,38 +479,48 @@ val_t parser___Parser___pop(val_t p0){
     nit_abort("Uninitialized attribute %s", "_stack_pos", LOCATE_parser, 89);
   }
   REGB0 = ATTR_parser___Parser____stack_pos(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./parser//parser.nit:89 */
@@ -487,7 +537,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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ./parser//parser.nit:90 */
   ATTR_parser___Parser____stack_pos(fra.me.REG[0]) = REGB1;
@@ -561,49 +611,64 @@ 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], REGB4, REGB5);
     REGB4 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB4 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB4));
     /* ./parser//parser.nit:113 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:214 */
+      REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB1), VTID_standard___kernel___Comparable___OTHER(REGB1))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB5)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:231 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB4));
       /* ./parser//parser.nit:113 */
       if (UNTAG_Bool(REGB5)) {
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB5 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
         /* ./parser//parser.nit:114 */
         REGB6 = TAG_Int(2);
-        /* ./../lib/standard//kernel.nit:222 */
+        /* ./../lib/standard//kernel.nit:239 */
         REGB6 = TAG_Int(UNTAG_Int(REGB5)/UNTAG_Int(REGB6));
         /* ./parser//parser.nit:115 */
         REGB5 = TAG_Int(3);
-        /* ./../lib/standard//kernel.nit:221 */
+        /* ./../lib/standard//kernel.nit:238 */
         REGB5 = TAG_Int(UNTAG_Int(REGB6)*UNTAG_Int(REGB5));
         /* ./parser//parser.nit:115 */
         REGB7 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB7 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB7));
         /* ./parser//parser.nit:117 */
         REGB5 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
         REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB5, REGB7);
-        /* ./../lib/standard//kernel.nit:215 */
+        REGB8 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB8)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
         REGB8 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB5));
         /* ./parser//parser.nit:118 */
         if (UNTAG_Bool(REGB8)) {
           /* ./parser//parser.nit:119 */
           REGB8 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB8 = TAG_Int(UNTAG_Int(REGB6)-UNTAG_Int(REGB8));
           /* ./parser//parser.nit:119 */
           REGB4 = REGB8;
         } else {
-          /* ./../lib/standard//kernel.nit:217 */
+          REGB8 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB8)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:234 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB5));
           /* ./parser//parser.nit:120 */
           if (UNTAG_Bool(REGB5)) {
             /* ./parser//parser.nit:121 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB6)+UNTAG_Int(REGB5));
             /* ./parser//parser.nit:121 */
             REGB1 = REGB5;
@@ -611,7 +676,7 @@ val_t parser___Parser___parse(val_t p0){
             /* ./parser//parser.nit:123 */
             REGB5 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
             REGB6 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB6 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB6));
             /* ./parser//parser.nit:123 */
             REGB6 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB5, REGB6);
@@ -619,7 +684,7 @@ val_t parser___Parser___parse(val_t p0){
             /* ./parser//parser.nit:124 */
             REGB6 = CALL_parser___Parser___state(fra.me.REG[0])(fra.me.REG[0]);
             REGB5 = TAG_Int(2);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB5));
             /* ./parser//parser.nit:124 */
             REGB5 = CALL_parser___tables___TablesCapable___parser_action(fra.me.REG[0])(fra.me.REG[0], REGB6, REGB5);
@@ -639,7 +704,7 @@ val_t parser___Parser___parse(val_t p0){
     REGB0 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./parser//parser.nit:129 */
       REGB0 = REGB1;
@@ -654,7 +719,7 @@ val_t parser___Parser___parse(val_t p0){
       REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB0 = TAG_Bool((REGB2)==(REGB0));
         /* ./parser//parser.nit:131 */
         REGB1 = REGB0;
@@ -667,38 +732,48 @@ val_t parser___Parser___parse(val_t p0){
           nit_abort("Uninitialized attribute %s", "_reduce_table", LOCATE_parser, 132);
         }
         fra.me.REG[4] = ATTR_parser___Parser____reduce_table(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:233 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB0 = TAG_Bool(false);
           REGB1 = REGB0;
         }
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label3;
         label3: while(0);
         /* ./parser//parser.nit:132 */
@@ -713,7 +788,7 @@ val_t parser___Parser___parse(val_t p0){
         REGB1 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
         if (UNTAG_Bool(REGB1)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB3 = TAG_Bool((REGB2)==(REGB3));
           /* ./parser//parser.nit:133 */
           REGB1 = REGB3;
@@ -749,7 +824,7 @@ val_t parser___Parser___parse(val_t p0){
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ./../lib/standard//kernel.nit:227 */
             REGB1 = TAG_Bool((REGB2)==(REGB1));
             /* ./parser//parser.nit:141 */
             REGB3 = REGB1;
@@ -4592,47 +4667,52 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_need_first_prods", LOCATE_parser, 938);
       }
       fra.me.REG[3] = ATTR_parser___ComputeProdLocationVisitor____need_first_prods(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../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, 23);
+          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:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../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, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
           /* ./parser//parser.nit:939 */
           ATTR_parser___Prod____first_location(fra.me.REG[5]) = fra.me.REG[2];
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB0 = REGB1;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label2;
         }
       }
@@ -4652,36 +4732,41 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 944);
       }
       fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
+      /* ./../lib/standard//collection//array.nit:270 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:236 */
+      /* ./../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:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../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, 23);
+          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:215 */
+        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:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./../lib/standard//collection//array.nit:238 */
+          /* ./../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, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
           /* ./parser//parser.nit:947 */
           fra.me.REG[6] = fra.me.REG[2];
@@ -4703,14 +4788,14 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           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:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB4 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB0 = REGB4;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label3;
         }
       }
@@ -4842,36 +4927,41 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           nit_abort("Uninitialized attribute %s", "_need_before_epsilons", LOCATE_parser, 970);
         }
         fra.me.REG[4] = ATTR_parser___ComputeProdLocationVisitor____need_before_epsilons(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../lib/standard//collection//array.nit:271 */
         fra.me.REG[8] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB3)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
             /* ./parser//parser.nit:973 */
             REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -4901,14 +4991,14 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
             REGB1 = CALL_location___Location___column_start(fra.me.REG[2])(fra.me.REG[2]);
             fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB3, REGB4, REGB0, REGB1);
             CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label4;
           }
         }
@@ -4928,36 +5018,41 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
           nit_abort("Uninitialized attribute %s", "_need_after_epsilons", LOCATE_parser, 977);
         }
         fra.me.REG[2] = ATTR_parser___ComputeProdLocationVisitor____need_after_epsilons(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+            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:215 */
+          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:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
             /* ./parser//parser.nit:980 */
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
@@ -4987,14 +5082,14 @@ void parser___ComputeProdLocationVisitor___visit(val_t p0, val_t p1){
             REGB3 = CALL_location___Location___column_end(fra.me.REG[3])(fra.me.REG[3]);
             fra.me.REG[6] = NEW_Location_location___Location___init(fra.me.REG[6], REGB1, REGB0, REGB4, REGB3);
             CALL_parser___parser_nodes___Prod___location__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB3 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = REGB3;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label5;
           }
         }
index 1df5268..6420b55 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/parser/parser. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./parser/parser. */
 #ifndef parser_sep
 #define parser_sep
 #include "parser___parser_prod._sep.h"
index 2bcd23f..f81648b 100644 (file)
@@ -5290,7 +5290,7 @@ void parser___lexer___Lexer___init(val_t p0, val_t p1, int* init_table){
   return;
 }
 val_t parser___lexer___Lexer___peek(val_t p0){
-  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;
@@ -5299,29 +5299,32 @@ val_t parser___lexer___Lexer___peek(val_t p0){
   fra.me.line = 1234;
   fra.me.meth = LOCATE_parser___lexer___Lexer___peek;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//lexer.nit:1234 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./parser//lexer.nit:1237 */
   while(1) {
-    fra.me.REG[1] = ATTR_parser___lexer___Lexer____token(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    fra.me.REG[2] = ATTR_parser___lexer___Lexer____token(fra.me.REG[1]);
+    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
         REGB0 = REGB1;
       }
     }
     if (UNTAG_Bool(REGB0)) {
       /* ./parser//lexer.nit:1238 */
-      fra.me.REG[1] = CALL_parser___lexer___Lexer___get_token(fra.me.REG[0])(fra.me.REG[0]);
-      ATTR_parser___lexer___Lexer____token(fra.me.REG[0]) = fra.me.REG[1];
+      fra.me.REG[2] = CALL_parser___lexer___Lexer___get_token(fra.me.REG[1])(fra.me.REG[1]);
+      ATTR_parser___lexer___Lexer____token(fra.me.REG[1]) = fra.me.REG[2];
     } else {
       /* ./parser//lexer.nit:1237 */
       goto label1;
@@ -5329,8 +5332,8 @@ val_t parser___lexer___Lexer___peek(val_t p0){
   }
   label1: while(0);
   /* ./parser//lexer.nit:1240 */
-  fra.me.REG[0] = ATTR_parser___lexer___Lexer____token(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_parser___lexer___Lexer____token(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___lexer, 1240);
@@ -5338,7 +5341,7 @@ val_t parser___lexer___Lexer___peek(val_t p0){
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t parser___lexer___Lexer___next(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -5412,6 +5415,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
   val_t REGB18;
   val_t REGB19;
   val_t REGB20;
+  val_t REGB21;
   val_t tmp;
           static val_t once_value_4; /* Once value */
           static val_t once_value_5; /* Once value */
@@ -5462,53 +5466,58 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
   }
   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]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB5 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB5)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    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:1266 */
   REGB6 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB6 = TAG_Int(-UNTAG_Int(REGB6));
   /* ./parser//lexer.nit:1267 */
   REGB7 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB7 = TAG_Int(-UNTAG_Int(REGB7));
   /* ./parser//lexer.nit:1268 */
   REGB8 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB8 = TAG_Int(-UNTAG_Int(REGB8));
   /* ./parser//lexer.nit:1269 */
   REGB9 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB9 = TAG_Int(-UNTAG_Int(REGB9));
   /* ./parser//lexer.nit:1270 */
   REGB10 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB10 = TAG_Int(-UNTAG_Int(REGB10));
   /* ./parser//lexer.nit:1272 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB11 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB5));
     /* ./parser//lexer.nit:1273 */
     if (UNTAG_Bool(REGB11)) {
       /* ./parser//lexer.nit:1274 */
       REGB11 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB11 = TAG_Int(-UNTAG_Int(REGB11));
       /* ./parser//lexer.nit:1274 */
       REGB0 = REGB11;
     } else {
       /* ./parser//lexer.nit:1276 */
-      REGB11 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      /* ./../lib/standard//kernel.nit:385 */
+      REGB11 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+      /* ./../lib/standard//kernel.nit:413 */
       REGB11 = TAG_Int((unsigned char)UNTAG_Char(REGB11));
       /* ./parser//lexer.nit:1277 */
       REGB12 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB12 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB12));
       /* ./parser//lexer.nit:1277 */
       REGB1 = REGB12;
@@ -5538,7 +5547,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
       REGB16 = TAG_Bool(IS_EQUAL_OO(REGB11,REGB15));
       if (UNTAG_Bool(REGB16)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB15 = TAG_Bool((REGB11)==(REGB15));
         /* ./parser//lexer.nit:1282 */
         REGB16 = REGB15;
@@ -5557,11 +5566,11 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
           }
           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___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         } else {
           /* ./parser//lexer.nit:1287 */
           REGB16 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB16 = TAG_Int(UNTAG_Int(REGB13)+UNTAG_Int(REGB16));
           /* ./parser//lexer.nit:1287 */
           REGB13 = REGB16;
@@ -5576,7 +5585,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
           }
           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___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         }
       } else {
         /* ./parser//lexer.nit:1291 */
@@ -5584,7 +5593,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB15 = TAG_Bool(IS_EQUAL_OO(REGB11,REGB16));
         if (UNTAG_Bool(REGB15)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB16 = TAG_Bool((REGB11)==(REGB16));
           /* ./parser//lexer.nit:1291 */
           REGB15 = REGB16;
@@ -5592,7 +5601,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         if (UNTAG_Bool(REGB15)) {
           /* ./parser//lexer.nit:1292 */
           REGB15 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB15 = TAG_Int(UNTAG_Int(REGB13)+UNTAG_Int(REGB15));
           /* ./parser//lexer.nit:1292 */
           REGB13 = REGB15;
@@ -5610,11 +5619,11 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
           }
           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___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB13, REGB1);
         } else {
           /* ./parser//lexer.nit:1297 */
           REGB15 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB15 = TAG_Int(UNTAG_Int(REGB14)+UNTAG_Int(REGB15));
           /* ./parser//lexer.nit:1297 */
           REGB14 = REGB15;
@@ -5629,24 +5638,29 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB15 = REGB0;
         /* ./parser//lexer.nit:1303 */
         REGB16 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:219 */
+        /* ./../lib/standard//kernel.nit:236 */
         REGB16 = TAG_Int(-UNTAG_Int(REGB16));
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB16 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB16));
         /* ./parser//lexer.nit:1303 */
         if (UNTAG_Bool(REGB16)) {
           /* ./parser//lexer.nit:1304 */
           REGB16 = TAG_Int(2);
-          /* ./../lib/standard//kernel.nit:219 */
+          /* ./../lib/standard//kernel.nit:236 */
           REGB16 = TAG_Int(-UNTAG_Int(REGB16));
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB16 = TAG_Int(UNTAG_Int(REGB16)-UNTAG_Int(REGB0));
           /* ./parser//lexer.nit:1304 */
           REGB15 = REGB16;
         }
         /* ./parser//lexer.nit:1307 */
         REGB16 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:219 */
+        /* ./../lib/standard//kernel.nit:236 */
         REGB16 = TAG_Int(-UNTAG_Int(REGB16));
         /* ./parser//lexer.nit:1307 */
         REGB0 = REGB16;
@@ -5656,67 +5670,87 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         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:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB18 = TAG_Int(UNTAG_Int(REGB17)-UNTAG_Int(REGB18));
         /* ./parser//lexer.nit:1312 */
         REGB17 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB17 = TAG_Bool(UNTAG_Int(REGB18)>=UNTAG_Int(REGB17));
         /* ./parser//lexer.nit:1312 */
         if (UNTAG_Bool(REGB17)) {
           /* ./parser//lexer.nit:1313 */
           while(1) {
-            /* ./../lib/standard//kernel.nit:214 */
+            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:231 */
             REGB17 = TAG_Bool(UNTAG_Int(REGB16)<=UNTAG_Int(REGB18));
             /* ./parser//lexer.nit:1313 */
             if (UNTAG_Bool(REGB17)) {
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB17 = TAG_Int(UNTAG_Int(REGB16)+UNTAG_Int(REGB18));
               /* ./parser//lexer.nit:1314 */
               REGB19 = TAG_Int(2);
-              /* ./../lib/standard//kernel.nit:222 */
+              /* ./../lib/standard//kernel.nit:239 */
               REGB19 = TAG_Int(UNTAG_Int(REGB17)/UNTAG_Int(REGB19));
               /* ./parser//lexer.nit:1315 */
               REGB17 = TAG_Int(3);
-              /* ./../lib/standard//kernel.nit:221 */
+              /* ./../lib/standard//kernel.nit:238 */
               REGB17 = TAG_Int(UNTAG_Int(REGB19)*UNTAG_Int(REGB17));
               /* ./parser//lexer.nit:1315 */
               REGB20 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB20 = TAG_Int(UNTAG_Int(REGB17)+UNTAG_Int(REGB20));
               /* ./parser//lexer.nit:1317 */
               REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB20);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB17 = TAG_Bool(UNTAG_Int(REGB11)<UNTAG_Int(REGB17));
               /* ./parser//lexer.nit:1317 */
               if (UNTAG_Bool(REGB17)) {
                /* ./parser//lexer.nit:1318 */
                REGB17 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:220 */
+               /* ./../lib/standard//kernel.nit:237 */
                REGB17 = TAG_Int(UNTAG_Int(REGB19)-UNTAG_Int(REGB17));
                /* ./parser//lexer.nit:1318 */
                REGB18 = REGB17;
               } else {
                /* ./parser//lexer.nit:1319 */
                REGB17 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB17 = TAG_Int(UNTAG_Int(REGB20)+UNTAG_Int(REGB17));
                /* ./parser//lexer.nit:1319 */
                REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB17);
-               /* ./../lib/standard//kernel.nit:217 */
+               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:234 */
                REGB17 = TAG_Bool(UNTAG_Int(REGB11)>UNTAG_Int(REGB17));
                /* ./parser//lexer.nit:1319 */
                if (UNTAG_Bool(REGB17)) {
                /* ./parser//lexer.nit:1320 */
                REGB17 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB17 = TAG_Int(UNTAG_Int(REGB19)+UNTAG_Int(REGB17));
                /* ./parser//lexer.nit:1320 */
                REGB16 = REGB17;
                } else {
                /* ./parser//lexer.nit:1322 */
                REGB17 = TAG_Int(2);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB17 = TAG_Int(UNTAG_Int(REGB20)+UNTAG_Int(REGB17));
                /* ./parser//lexer.nit:1322 */
                REGB17 = CALL_parser___tables___TablesCapable___lexer_goto(fra.me.REG[0])(fra.me.REG[0], REGB15, REGB17);
@@ -5734,9 +5768,14 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         }
         /* ./parser//lexer.nit:1327 */
         REGB15 = TAG_Int(2);
-        /* ./../lib/standard//kernel.nit:219 */
+        /* ./../lib/standard//kernel.nit:236 */
         REGB15 = TAG_Int(-UNTAG_Int(REGB15));
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB15 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB15));
         /* ./parser//lexer.nit:1327 */
         if (UNTAG_Bool(REGB15)) {
@@ -5753,7 +5792,12 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
     }
     /* ./parser//lexer.nit:1335 */
     REGB14 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB14 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB14));
     /* ./parser//lexer.nit:1335 */
     if (UNTAG_Bool(REGB14)) {
@@ -5761,13 +5805,13 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
       REGB14 = CALL_parser___tables___TablesCapable___lexer_accept(fra.me.REG[0])(fra.me.REG[0], REGB0);
       /* ./parser//lexer.nit:1337 */
       REGB13 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB13 = TAG_Int(-UNTAG_Int(REGB13));
       /* ./parser//lexer.nit:1337 */
       REGB12 = TAG_Bool(IS_EQUAL_OO(REGB14,REGB13));
       if (UNTAG_Bool(REGB12)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB13 = TAG_Bool((REGB14)==(REGB13));
         /* ./parser//lexer.nit:1337 */
         REGB12 = REGB13;
@@ -5778,7 +5822,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB6 = REGB0;
         /* ./parser//lexer.nit:1339 */
         REGB7 = REGB14;
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB14 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
         /* ./parser//lexer.nit:1340 */
         REGB8 = REGB14;
@@ -5802,13 +5846,13 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
     } else {
       /* ./parser//lexer.nit:1345 */
       REGB14 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB14 = TAG_Int(-UNTAG_Int(REGB14));
       /* ./parser//lexer.nit:1345 */
       REGB12 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB14));
       if (UNTAG_Bool(REGB12)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB14 = TAG_Bool((REGB6)==(REGB14));
         /* ./parser//lexer.nit:1345 */
         REGB12 = REGB14;
@@ -5823,15 +5867,15 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         }
         fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
         REGB12 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB12 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB12));
         /* ./parser//lexer.nit:1346 */
         REGB14 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB14 = TAG_Int(UNTAG_Int(REGB10)+UNTAG_Int(REGB14));
         /* ./parser//lexer.nit:1346 */
         REGB13 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB13 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB13));
         /* ./parser//lexer.nit:1346 */
         fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB12, REGB14, REGB13, REGB9);
@@ -5839,7 +5883,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         ATTR_parser___lexer___Lexer____pos(fra.me.REG[0]) = REGB9;
         /* ./parser//lexer.nit:1348 */
         ATTR_parser___lexer___Lexer____line(fra.me.REG[0]) = REGB10;
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB13 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB8));
         /* ./parser//lexer.nit:1349 */
         ATTR_parser___lexer___Lexer____stream_pos(fra.me.REG[0]) = REGB13;
@@ -5848,7 +5892,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1350 */
           REGB14 = REGB13;
@@ -5863,7 +5907,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1353 */
           REGB13 = REGB14;
@@ -5881,7 +5925,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1357 */
           REGB14 = REGB13;
@@ -5899,7 +5943,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1361 */
           REGB13 = REGB14;
@@ -5917,7 +5961,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1365 */
           REGB14 = REGB13;
@@ -5933,7 +5977,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1368 */
           REGB13 = REGB14;
@@ -5949,7 +5993,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1371 */
           REGB14 = REGB13;
@@ -5965,7 +6009,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1374 */
           REGB13 = REGB14;
@@ -5981,7 +6025,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1377 */
           REGB14 = REGB13;
@@ -5999,7 +6043,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1381 */
           REGB13 = REGB14;
@@ -6015,7 +6059,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1384 */
           REGB14 = REGB13;
@@ -6031,7 +6075,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1387 */
           REGB13 = REGB14;
@@ -6047,7 +6091,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1390 */
           REGB14 = REGB13;
@@ -6063,7 +6107,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1393 */
           REGB13 = REGB14;
@@ -6079,7 +6123,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1396 */
           REGB14 = REGB13;
@@ -6095,7 +6139,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1399 */
           REGB13 = REGB14;
@@ -6111,7 +6155,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1402 */
           REGB14 = REGB13;
@@ -6127,7 +6171,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1405 */
           REGB13 = REGB14;
@@ -6143,7 +6187,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1408 */
           REGB14 = REGB13;
@@ -6159,7 +6203,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1411 */
           REGB13 = REGB14;
@@ -6175,7 +6219,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1414 */
           REGB14 = REGB13;
@@ -6191,7 +6235,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1417 */
           REGB13 = REGB14;
@@ -6207,7 +6251,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1420 */
           REGB14 = REGB13;
@@ -6223,7 +6267,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1423 */
           REGB13 = REGB14;
@@ -6239,7 +6283,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1426 */
           REGB14 = REGB13;
@@ -6255,7 +6299,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1429 */
           REGB13 = REGB14;
@@ -6271,7 +6315,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1432 */
           REGB14 = REGB13;
@@ -6287,7 +6331,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1435 */
           REGB13 = REGB14;
@@ -6303,7 +6347,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1438 */
           REGB14 = REGB13;
@@ -6319,7 +6363,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1441 */
           REGB13 = REGB14;
@@ -6335,7 +6379,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1444 */
           REGB14 = REGB13;
@@ -6351,7 +6395,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1447 */
           REGB13 = REGB14;
@@ -6367,7 +6411,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1450 */
           REGB14 = REGB13;
@@ -6383,7 +6427,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1453 */
           REGB13 = REGB14;
@@ -6399,7 +6443,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1456 */
           REGB14 = REGB13;
@@ -6415,7 +6459,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1459 */
           REGB13 = REGB14;
@@ -6431,7 +6475,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1462 */
           REGB14 = REGB13;
@@ -6447,7 +6491,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1465 */
           REGB13 = REGB14;
@@ -6463,7 +6507,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1468 */
           REGB14 = REGB13;
@@ -6479,7 +6523,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1471 */
           REGB13 = REGB14;
@@ -6495,7 +6539,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1474 */
           REGB14 = REGB13;
@@ -6511,7 +6555,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1477 */
           REGB13 = REGB14;
@@ -6527,7 +6571,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1480 */
           REGB14 = REGB13;
@@ -6543,7 +6587,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1483 */
           REGB13 = REGB14;
@@ -6559,7 +6603,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1486 */
           REGB14 = REGB13;
@@ -6575,7 +6619,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1489 */
           REGB13 = REGB14;
@@ -6591,7 +6635,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1492 */
           REGB14 = REGB13;
@@ -6607,7 +6651,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1495 */
           REGB13 = REGB14;
@@ -6623,7 +6667,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1498 */
           REGB14 = REGB13;
@@ -6639,7 +6683,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1501 */
           REGB13 = REGB14;
@@ -6655,7 +6699,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1504 */
           REGB14 = REGB13;
@@ -6671,7 +6715,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1507 */
           REGB13 = REGB14;
@@ -6687,7 +6731,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1510 */
           REGB14 = REGB13;
@@ -6703,7 +6747,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1513 */
           REGB13 = REGB14;
@@ -6719,7 +6763,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1516 */
           REGB14 = REGB13;
@@ -6735,7 +6779,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1519 */
           REGB13 = REGB14;
@@ -6751,7 +6795,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1522 */
           REGB14 = REGB13;
@@ -6767,7 +6811,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1525 */
           REGB13 = REGB14;
@@ -6783,7 +6827,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1528 */
           REGB14 = REGB13;
@@ -6799,7 +6843,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1531 */
           REGB13 = REGB14;
@@ -6815,7 +6859,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1534 */
           REGB14 = REGB13;
@@ -6831,7 +6875,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1537 */
           REGB13 = REGB14;
@@ -6847,7 +6891,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1540 */
           REGB14 = REGB13;
@@ -6863,7 +6907,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1543 */
           REGB13 = REGB14;
@@ -6879,7 +6923,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1546 */
           REGB14 = REGB13;
@@ -6895,7 +6939,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1549 */
           REGB13 = REGB14;
@@ -6911,7 +6955,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1552 */
           REGB14 = REGB13;
@@ -6927,7 +6971,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1555 */
           REGB13 = REGB14;
@@ -6943,7 +6987,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1558 */
           REGB14 = REGB13;
@@ -6959,7 +7003,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1561 */
           REGB13 = REGB14;
@@ -6975,7 +7019,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1564 */
           REGB14 = REGB13;
@@ -6991,7 +7035,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1567 */
           REGB13 = REGB14;
@@ -7007,7 +7051,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1570 */
           REGB14 = REGB13;
@@ -7023,7 +7067,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1573 */
           REGB13 = REGB14;
@@ -7039,7 +7083,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1576 */
           REGB14 = REGB13;
@@ -7055,7 +7099,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1579 */
           REGB13 = REGB14;
@@ -7071,7 +7115,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1582 */
           REGB14 = REGB13;
@@ -7087,7 +7131,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1585 */
           REGB13 = REGB14;
@@ -7103,7 +7147,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1588 */
           REGB14 = REGB13;
@@ -7119,7 +7163,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1591 */
           REGB13 = REGB14;
@@ -7135,7 +7179,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1594 */
           REGB14 = REGB13;
@@ -7153,7 +7197,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1598 */
           REGB13 = REGB14;
@@ -7171,7 +7215,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1602 */
           REGB14 = REGB13;
@@ -7189,7 +7233,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1606 */
           REGB13 = REGB14;
@@ -7207,7 +7251,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1610 */
           REGB14 = REGB13;
@@ -7225,7 +7269,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1614 */
           REGB13 = REGB14;
@@ -7243,7 +7287,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1618 */
           REGB14 = REGB13;
@@ -7261,7 +7305,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1622 */
           REGB13 = REGB14;
@@ -7279,7 +7323,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB14 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB13));
         if (UNTAG_Bool(REGB14)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB13 = TAG_Bool((REGB7)==(REGB13));
           /* ./parser//lexer.nit:1626 */
           REGB14 = REGB13;
@@ -7297,7 +7341,7 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         REGB13 = TAG_Bool(IS_EQUAL_OO(REGB7,REGB14));
         if (UNTAG_Bool(REGB13)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB14 = TAG_Bool((REGB7)==(REGB14));
           /* ./parser//lexer.nit:1630 */
           REGB13 = REGB14;
@@ -7321,27 +7365,32 @@ val_t parser___lexer___Lexer___get_token(val_t p0){
         }
         fra.me.REG[2] = ATTR_parser___lexer___Lexer____file(fra.me.REG[0]);
         REGB13 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB13 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB13));
         /* ./parser//lexer.nit:1636 */
         REGB14 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB14 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB14));
         /* ./parser//lexer.nit:1636 */
         REGB12 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB12 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB12));
         /* ./parser//lexer.nit:1636 */
         REGB11 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB11 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB11));
         /* ./parser//lexer.nit:1636 */
         fra.me.REG[2] = NEW_Location_location___Location___init(fra.me.REG[2], REGB13, REGB14, REGB12, REGB11);
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB11 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
         /* ./parser//lexer.nit:1637 */
         if (UNTAG_Bool(REGB11)) {
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB11 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
           /* ./parser//lexer.nit:1638 */
           fra.me.REG[4] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB2, REGB11);
index 4917e77..2bdae3e 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/parser/lexer. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./parser/lexer. */
 #ifndef parser___lexer_sep
 #define parser___lexer_sep
 #include "parser___parser_nodes._sep.h"
index 30ea7c8..a576043 100644 (file)
@@ -1,7 +1,7 @@
 /* This C file is generated by NIT to compile module parser___parser_nodes. */
 #include "parser___parser_nodes._sep.h"
 val_t parser___parser_nodes___ANode___location(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -9,12 +9,15 @@ val_t parser___parser_nodes___ANode___location(val_t p0){
   fra.me.line = 27;
   fra.me.meth = LOCATE_parser___parser_nodes___ANode___location;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./parser//parser_nodes.nit:27 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./parser//parser_nodes.nit:29 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ANode____location(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  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);
@@ -22,7 +25,7 @@ val_t parser___parser_nodes___ANode___location(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t parser___parser_nodes___ANode___hot_location(val_t p0){
   struct {struct stack_frame_t me;} fra;
index cda3de6..0f8b8c8 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/parser/parser_nodes. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./parser/parser_nodes. */
 #ifndef parser___parser_nodes_sep
 #define parser___parser_nodes_sep
 #include "location._sep.h"
index 51520cc..2c95bac 100644 (file)
@@ -485,11 +485,16 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:108 */
       REGB2 = REGB0;
@@ -500,7 +505,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
         nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 109);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -542,7 +547,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
             nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 112);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:113 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -557,19 +562,19 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
             nit_abort("Uninitialized attribute %s", "_n_imports", LOCATE_parser___parser_prod, 115);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:117 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -583,11 +588,16 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:120 */
       REGB2 = REGB0;
@@ -598,7 +608,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
         nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 121);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -640,7 +650,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
             nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 124);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:125 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -655,19 +665,19 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
             nit_abort("Uninitialized attribute %s", "_n_classdefs", LOCATE_parser___parser_prod, 127);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:129 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -677,7 +687,7 @@ void parser___parser_prod___AModule___replace_child(val_t p0, val_t p1, val_t p2
   return;
 }
 void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -686,53 +696,56 @@ void parser___parser_prod___AModule___visit_all(val_t p0, val_t p1){
   fra.me.line = 134;
   fra.me.meth = LOCATE_parser___parser_prod___AModule___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:134 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:136 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:137 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AModule____n_moduledecl(fra.me.REG[0]);
-    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*/;
+    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, 137);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:139 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_imports(fra.me.REG[0])!=NIT_NULL);
+  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, 139);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModule____n_imports(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___visit_all_1));
+  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:142 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModule____n_classdefs(fra.me.REG[0])!=NIT_NULL);
+  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, 142);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AModule____n_classdefs(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___AModule___visit_all_2));
+  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_2));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -795,7 +808,7 @@ void parser___parser_prod___AModuledecl___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuledecl].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -805,19 +818,22 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
   fra.me.line = 150;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___init_amoduledecl;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:150 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:156 */
-  CALL_parser___parser_prod___AModuledecl___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AModuledecl___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:157 */
-  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:158 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -838,7 +854,7 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 159);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:161 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
@@ -846,26 +862,26 @@ void parser___parser_prod___AModuledecl___init_amoduledecl(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 161);
   }
-  ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:162 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 162);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:163 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 163);
   }
-  ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:164 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 164);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
   return;
@@ -1044,7 +1060,7 @@ void parser___parser_prod___AModuledecl___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -1053,53 +1069,56 @@ void parser___parser_prod___AModuledecl___visit_all(val_t p0, val_t p1){
   fra.me.line = 201;
   fra.me.meth = LOCATE_parser___parser_prod___AModuledecl___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:201 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:203 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:204 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AModuledecl____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 204);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:206 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0])!=NIT_NULL);
+  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, 206);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModuledecl____n_kwmodule(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:207 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0])!=NIT_NULL);
+  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, 207);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AModuledecl____n_name(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[2] = 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[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1122,7 +1141,7 @@ void parser___parser_prod___AStdImport___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdImport].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos6]) return;
@@ -1131,56 +1150,59 @@ void parser___parser_prod___AStdImport___init_astdimport(val_t p0, val_t p1, val
   fra.me.line = 213;
   fra.me.meth = LOCATE_parser___parser_prod___AStdImport___init_astdimport;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:213 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:219 */
-  CALL_parser___parser_prod___AStdImport___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStdImport___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:220 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 220);
   }
-  ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStdImport____n_visibility(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:221 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 221);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:222 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 222);
   }
-  ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AStdImport____n_kwimport(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:223 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 223);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:224 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 224);
   }
-  ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AStdImport____n_name(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:225 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 225);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
   return;
@@ -1418,7 +1440,7 @@ void parser___parser_prod___ANoImport___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos8]) return;
@@ -1427,56 +1449,59 @@ void parser___parser_prod___ANoImport___init_anoimport(val_t p0, val_t p1, val_t
   fra.me.line = 272;
   fra.me.meth = LOCATE_parser___parser_prod___ANoImport___init_anoimport;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:272 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:278 */
-  CALL_parser___parser_prod___ANoImport___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANoImport___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:279 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 279);
   }
-  ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ANoImport____n_visibility(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:280 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 280);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:281 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 281);
   }
-  ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ANoImport____n_kwimport(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:282 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 282);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:283 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 283);
   }
-  ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ANoImport____n_kwend(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:284 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 284);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -1784,7 +1809,7 @@ void parser___parser_prod___APrivateVisibility___empty_init(val_t p0, int* init_
 }
 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;
-  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 tmp;
   if (init_table[itpos12]) return;
@@ -1793,26 +1818,29 @@ void parser___parser_prod___APrivateVisibility___init_aprivatevisibility(val_t p
   fra.me.line = 347;
   fra.me.meth = LOCATE_parser___parser_prod___APrivateVisibility___init_aprivatevisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:347 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:351 */
-  CALL_parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APrivateVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:352 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 352);
   }
-  ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APrivateVisibility____n_kwprivate(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:353 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 353);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos12] = 1;
   return;
@@ -1933,7 +1961,7 @@ void parser___parser_prod___AProtectedVisibility___empty_init(val_t p0, int* ini
 }
 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;
-  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 tmp;
   if (init_table[itpos14]) return;
@@ -1942,26 +1970,29 @@ void parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility(val
   fra.me.line = 378;
   fra.me.meth = LOCATE_parser___parser_prod___AProtectedVisibility___init_aprotectedvisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:378 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:382 */
-  CALL_parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AProtectedVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:383 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 383);
   }
-  ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AProtectedVisibility____n_kwprotected(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:384 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 384);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos14] = 1;
   return;
@@ -2082,7 +2113,7 @@ void parser___parser_prod___AIntrudeVisibility___empty_init(val_t p0, int* init_
 }
 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;
-  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 tmp;
   if (init_table[itpos16]) return;
@@ -2091,26 +2122,29 @@ void parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility(val_t p
   fra.me.line = 409;
   fra.me.meth = LOCATE_parser___parser_prod___AIntrudeVisibility___init_aintrudevisibility;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:409 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:413 */
-  CALL_parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIntrudeVisibility___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:414 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 414);
   }
-  ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIntrudeVisibility____n_kwintrude(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:415 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 415);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos16] = 1;
   return;
@@ -2231,7 +2265,7 @@ void parser___parser_prod___AStdClassdef___empty_init(val_t p0, int* init_table)
 }
 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, int* init_table){
   int itpos18 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStdClassdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -2241,7 +2275,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   fra.me.line = 440;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___init_astdclassdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -2251,6 +2285,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -2260,10 +2295,12 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
+  /* ./parser//parser_prod.nit:440 */
+  fra.me.REG[9] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:451 */
-  CALL_parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStdClassdef___empty_init(fra.me.REG[9])(fra.me.REG[9], init_table);
   /* ./parser//parser_prod.nit:452 */
-  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[9]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:453 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -2284,10 +2321,10 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 454);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:456 */
-  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[9]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:457 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -2308,7 +2345,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 458);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:460 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -2316,28 +2353,28 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 460);
   }
-  ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[9]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:461 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 461);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:462 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 462);
   }
-  ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[9]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:463 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 463);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:464 */
-  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[9]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:465 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -2358,7 +2395,7 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 466);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
   }
   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));
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_parser___parser_prod___AStdClassdef___init_astdclassdef_2));
@@ -2392,15 +2429,15 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 469);
     }
     /* ./parser//parser_prod.nit:470 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[9])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 470);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(closctx->REG[9]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* ./parser//parser_prod.nit:471 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[9]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -2429,15 +2466,15 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 474);
     }
     /* ./parser//parser_prod.nit:475 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[9])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 475);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(closctx->REG[9]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* ./parser//parser_prod.nit:476 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[9]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -2466,15 +2503,15 @@ void parser___parser_prod___AStdClassdef___init_astdclassdef(val_t p0, val_t p1,
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 479);
     }
     /* ./parser//parser_prod.nit:480 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(closctx->REG[9])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 480);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(closctx->REG[9]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     /* ./parser//parser_prod.nit:481 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[9]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -2761,11 +2798,16 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:537 */
       REGB2 = REGB0;
@@ -2776,7 +2818,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
         nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 538);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -2818,7 +2860,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 541);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:542 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -2833,19 +2875,19 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_formaldefs", LOCATE_parser___parser_prod, 544);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:546 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -2859,11 +2901,16 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:549 */
       REGB2 = REGB0;
@@ -2874,7 +2921,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
         nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 550);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -2916,7 +2963,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 553);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:554 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -2931,19 +2978,19 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_superclasses", LOCATE_parser___parser_prod, 556);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:558 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -2957,11 +3004,16 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:561 */
       REGB2 = REGB0;
@@ -2972,7 +3024,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
         nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 562);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -3014,7 +3066,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 565);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:566 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -3029,19 +3081,19 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 568);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:570 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label4;
     }
   }
@@ -3051,7 +3103,7 @@ void parser___parser_prod___AStdClassdef___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -3060,127 +3112,130 @@ void parser___parser_prod___AStdClassdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 575;
   fra.me.meth = LOCATE_parser___parser_prod___AStdClassdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:575 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:577 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:578 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 578);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:580 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:581 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 581);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:583 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  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, 583);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____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]);
+  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:584 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0])!=NIT_NULL);
+  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, 584);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_classkind(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:585 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:586 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_id(fra.me.REG[0]);
-    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*/;
+    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, 586);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:588 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(fra.me.REG[0])!=NIT_NULL);
+  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, 588);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_formaldefs(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___AStdClassdef___visit_all_1));
+  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:591 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(fra.me.REG[0])!=NIT_NULL);
+  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, 591);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_superclasses(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___AStdClassdef___visit_all_2));
+  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:594 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 594);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AStdClassdef____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___AStdClassdef___visit_all_3));
+  fra.me.REG[2] = ATTR_parser___parser_nodes___AStdClassdef____n_propdefs(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___AStdClassdef___visit_all_3));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -3350,11 +3405,16 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ATopClassdef____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:616 */
       REGB2 = REGB0;
@@ -3365,7 +3425,7 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
         nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 617);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -3407,7 +3467,7 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 620);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:621 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -3422,19 +3482,19 @@ void parser___parser_prod___ATopClassdef___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 623);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ATopClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:625 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -3594,11 +3654,16 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AMainClassdef____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:654 */
       REGB2 = REGB0;
@@ -3609,7 +3674,7 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
         nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 655);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -3651,7 +3716,7 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 658);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:659 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -3666,19 +3731,19 @@ void parser___parser_prod___AMainClassdef___replace_child(val_t p0, val_t p1, va
             nit_abort("Uninitialized attribute %s", "_n_propdefs", LOCATE_parser___parser_prod, 661);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AMainClassdef____n_propdefs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:663 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -3751,7 +3816,7 @@ void parser___parser_prod___AConcreteClasskind___empty_init(val_t p0, int* init_
 }
 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;
-  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 tmp;
   if (init_table[itpos24]) return;
@@ -3760,26 +3825,29 @@ void parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind(val_t p
   fra.me.line = 678;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteClasskind___init_aconcreteclasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:678 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:682 */
-  CALL_parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AConcreteClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:683 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 683);
   }
-  ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AConcreteClasskind____n_kwclass(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:684 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 684);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos24] = 1;
   return;
@@ -3900,7 +3968,7 @@ void parser___parser_prod___AAbstractClasskind___empty_init(val_t p0, int* init_
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos26]) return;
@@ -3909,41 +3977,44 @@ void parser___parser_prod___AAbstractClasskind___init_aabstractclasskind(val_t p
   fra.me.line = 709;
   fra.me.meth = LOCATE_parser___parser_prod___AAbstractClasskind___init_aabstractclasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:709 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:714 */
-  CALL_parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAbstractClasskind___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:715 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 715);
   }
-  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwabstract(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:716 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 716);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:717 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 717);
   }
-  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAbstractClasskind____n_kwclass(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:718 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 718);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos26] = 1;
   return;
@@ -4123,7 +4194,7 @@ void parser___parser_prod___AInterfaceClasskind___empty_init(val_t p0, int* init
 }
 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;
-  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 tmp;
   if (init_table[itpos28]) return;
@@ -4132,26 +4203,29 @@ void parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind(val_t
   fra.me.line = 754;
   fra.me.meth = LOCATE_parser___parser_prod___AInterfaceClasskind___init_ainterfaceclasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:754 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:758 */
-  CALL_parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AInterfaceClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:759 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 759);
   }
-  ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AInterfaceClasskind____n_kwinterface(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:760 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 760);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos28] = 1;
   return;
@@ -4272,7 +4346,7 @@ void parser___parser_prod___AEnumClasskind___empty_init(val_t p0, int* init_tabl
 }
 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;
-  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 tmp;
   if (init_table[itpos30]) return;
@@ -4281,26 +4355,29 @@ void parser___parser_prod___AEnumClasskind___init_aenumclasskind(val_t p0, val_t
   fra.me.line = 785;
   fra.me.meth = LOCATE_parser___parser_prod___AEnumClasskind___init_aenumclasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:785 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:789 */
-  CALL_parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AEnumClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:790 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 790);
   }
-  ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AEnumClasskind____n_kwenum(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:791 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 791);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos30] = 1;
   return;
@@ -4421,7 +4498,7 @@ void parser___parser_prod___AExternClasskind___empty_init(val_t p0, int* init_ta
 }
 void parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, val_t p1, int* init_table){
   int itpos32 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternClasskind].i;
-  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 tmp;
   if (init_table[itpos32]) return;
@@ -4430,26 +4507,29 @@ void parser___parser_prod___AExternClasskind___init_aexternclasskind(val_t p0, v
   fra.me.line = 816;
   fra.me.meth = LOCATE_parser___parser_prod___AExternClasskind___init_aexternclasskind;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:816 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:820 */
-  CALL_parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AExternClasskind___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:821 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 821);
   }
-  ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AExternClasskind____n_kwextern(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:822 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 822);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos32] = 1;
   return;
@@ -4570,7 +4650,7 @@ void parser___parser_prod___AFormaldef___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos34 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFormaldef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -4580,30 +4660,33 @@ void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val
   fra.me.line = 847;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___init_aformaldef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:847 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:852 */
-  CALL_parser___parser_prod___AFormaldef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AFormaldef___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:853 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 853);
   }
-  ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:854 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 854);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:855 */
-  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:856 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4624,7 +4707,7 @@ void parser___parser_prod___AFormaldef___init_aformaldef(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 857);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    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[itpos34] = 1;
@@ -4754,7 +4837,7 @@ void parser___parser_prod___AFormaldef___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -4763,44 +4846,47 @@ void parser___parser_prod___AFormaldef___visit_all(val_t p0, val_t p1){
   fra.me.line = 885;
   fra.me.meth = LOCATE_parser___parser_prod___AFormaldef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:885 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:887 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFormaldef____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 887);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AFormaldef____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]);
+  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:888 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:889 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AType, ID_parser___parser_nodes___AType)) /*cast AType*/;
+    fra.me.REG[2] = ATTR_parser___parser_nodes___AFormaldef____n_type(fra.me.REG[2]);
+    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("Cast failed", NULL, LOCATE_parser___parser_prod, 889);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -4824,7 +4910,7 @@ void parser___parser_prod___ASuperclass___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -4834,19 +4920,22 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
   fra.me.line = 896;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___init_asuperclass;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:896 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:902 */
-  CALL_parser___parser_prod___ASuperclass___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASuperclass___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:903 */
-  ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:904 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4867,10 +4956,10 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 905);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:907 */
-  ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:908 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4891,7 +4980,7 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 909);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:911 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -4899,13 +4988,13 @@ void parser___parser_prod___ASuperclass___init_asuperclass(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 911);
   }
-  ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:912 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 912);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -5085,7 +5174,7 @@ void parser___parser_prod___ASuperclass___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -5094,70 +5183,73 @@ void parser___parser_prod___ASuperclass___visit_all(val_t p0, val_t p1){
   fra.me.line = 949;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperclass___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:949 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:951 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:952 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___TKwspecial, ID_parser___parser_nodes___TKwspecial)) /*cast TKwspecial*/;
+    fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwspecial(fra.me.REG[2]);
+    REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_parser___parser_nodes___TKwspecial, ID_parser___parser_nodes___TKwspecial)) /*cast TKwspecial*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 952);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:954 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:955 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[0]);
-    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*/;
+    fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperclass____n_kwsuper(fra.me.REG[2]);
+    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 TKwsuper*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 955);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:957 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperclass____n_type(fra.me.REG[0])!=NIT_NULL);
+  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, 957);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperclass____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]);
+  fra.me.REG[2] = 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[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -5180,7 +5272,7 @@ void parser___parser_prod___AAttrPropdef___empty_init(val_t p0, int* init_table)
 }
 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, int* init_table){
   int itpos38 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAttrPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -5190,7 +5282,7 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   fra.me.line = 963;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___init_aattrpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 11;
+  fra.me.REG_size = 12;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -5202,6 +5294,7 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -5213,10 +5306,12 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   fra.me.REG[8] = p8;
   fra.me.REG[9] = p9;
   fra.me.REG[10] = p10;
+  /* ./parser//parser_prod.nit:963 */
+  fra.me.REG[11] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:976 */
-  CALL_parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAttrPropdef___empty_init(fra.me.REG[11])(fra.me.REG[11], init_table);
   /* ./parser//parser_prod.nit:977 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[11]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:978 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5237,10 +5332,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 979);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:981 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[11]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:982 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5261,10 +5356,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 983);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:985 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[11]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:986 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5285,10 +5380,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 987);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:989 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[11]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:990 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5309,7 +5404,7 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 991);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:993 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
@@ -5317,28 +5412,28 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 993);
   }
-  ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[11]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:994 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 994);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[11]);
   /* ./parser//parser_prod.nit:995 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 995);
   }
-  ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[11]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:996 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 996);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[11]);
   /* ./parser//parser_prod.nit:997 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]) = fra.me.REG[7];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[11]) = fra.me.REG[7];
   /* ./parser//parser_prod.nit:998 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5359,10 +5454,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 999);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:1001 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]) = fra.me.REG[8];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[11]) = fra.me.REG[8];
   /* ./parser//parser_prod.nit:1002 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5383,10 +5478,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1003);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:1005 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]) = fra.me.REG[9];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[11]) = fra.me.REG[9];
   /* ./parser//parser_prod.nit:1006 */
   REGB0 = TAG_Bool(fra.me.REG[9]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5407,10 +5502,10 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1007);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[11]);
   }
   /* ./parser//parser_prod.nit:1009 */
-  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]) = fra.me.REG[10];
+  ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[11]) = fra.me.REG[10];
   /* ./parser//parser_prod.nit:1010 */
   REGB0 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5431,7 +5526,7 @@ void parser___parser_prod___AAttrPropdef___init_aattrpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1011);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos38] = 1;
@@ -5968,7 +6063,7 @@ void parser___parser_prod___AAttrPropdef___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -5977,227 +6072,230 @@ void parser___parser_prod___AAttrPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 1119;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1119 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1121 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1122 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1122);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1124 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1125 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_readable(fra.me.REG[0]);
-    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*/;
+    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, 1125);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1127 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1128 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_writable(fra.me.REG[0]);
-    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*/;
+    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, 1128);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1130 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1131 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1131);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1133 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  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, 1133);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____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]);
+  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:1134 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  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, 1134);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_kwvar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1135 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1136 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_id(fra.me.REG[0]);
-    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*/;
+    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, 1136);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1138 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1139 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_id2(fra.me.REG[0]);
-    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*/;
+    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, 1139);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1141 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1142 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_type(fra.me.REG[0]);
-    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*/;
+    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, 1142);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1144 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1145 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AAttrPropdef____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 1145);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -6221,7 +6319,7 @@ void parser___parser_prod___AMethPropdef___empty_init(val_t p0, int* init_table)
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -6231,23 +6329,26 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
   fra.me.line = 1152;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___init_amethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:1152 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1160 */
-  CALL_parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AMethPropdef___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:1161 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1162 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -6268,10 +6369,10 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1163);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:1165 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1166 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -6292,7 +6393,7 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1167);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:1169 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -6300,39 +6401,39 @@ void parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1169);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[6]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1170 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1170);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:1171 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1171);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1172 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1172);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:1173 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1173);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1174 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1174);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -6615,7 +6716,7 @@ void parser___parser_prod___AMethPropdef___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -6624,71 +6725,74 @@ void parser___parser_prod___AMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 1231;
   fra.me.meth = LOCATE_parser___parser_prod___AMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1231 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1233 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1234 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1234);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1236 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1237 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1237);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1239 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1240 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1241 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -6711,7 +6815,7 @@ void parser___parser_prod___ADeferredMethPropdef___empty_init(val_t p0, int* ini
 }
 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, int* init_table){
   int itpos42 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ADeferredMethPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -6721,7 +6825,7 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   fra.me.line = 1247;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -6729,6 +6833,7 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -6736,10 +6841,12 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
+  /* ./parser//parser_prod.nit:1247 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1256 */
-  CALL_parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ADeferredMethPropdef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:1257 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1258 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -6760,10 +6867,10 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1259);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:1261 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[7]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1262 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -6784,7 +6891,7 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1263);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:1265 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -6792,52 +6899,52 @@ void parser___parser_prod___ADeferredMethPropdef___init_adeferredmethpropdef(val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1265);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[7]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1266 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1266);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1267 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1267);
   }
-  ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1268 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1268);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1269 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1269);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1270 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1270);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1271 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1271);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1272 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1272);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
   init_table[itpos42] = 1;
   return;
@@ -7170,7 +7277,7 @@ void parser___parser_prod___ADeferredMethPropdef___replace_child(val_t p0, val_t
   return;
 }
 void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -7179,79 +7286,82 @@ void parser___parser_prod___ADeferredMethPropdef___visit_all(val_t p0, val_t p1)
   fra.me.line = 1339;
   fra.me.meth = LOCATE_parser___parser_prod___ADeferredMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1339 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1341 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1342 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1342);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1344 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1345 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1345);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1347 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1348 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  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, 1348);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ADeferredMethPropdef____n_kwmeth(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1349 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1350 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -7274,7 +7384,7 @@ void parser___parser_prod___AInternMethPropdef___empty_init(val_t p0, int* init_
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -7284,7 +7394,7 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   fra.me.line = 1356;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -7292,6 +7402,7 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -7299,10 +7410,12 @@ 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:1356 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1365 */
-  CALL_parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AInternMethPropdef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:1366 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1367 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7323,10 +7436,10 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1368);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:1370 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[7]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1371 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7347,7 +7460,7 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1372);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:1374 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -7355,52 +7468,52 @@ void parser___parser_prod___AInternMethPropdef___init_ainternmethpropdef(val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1374);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[7]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1375 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1375);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1376 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1376);
   }
-  ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1377 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1377);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1378 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1378);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1379 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1379);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:1380 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1380);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1381 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1381);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -7733,7 +7846,7 @@ void parser___parser_prod___AInternMethPropdef___replace_child(val_t p0, val_t p
   return;
 }
 void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -7742,79 +7855,82 @@ void parser___parser_prod___AInternMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 1448;
   fra.me.meth = LOCATE_parser___parser_prod___AInternMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1448 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1450 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1451 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1451);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1453 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1454 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1454);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1456 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1457 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  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, 1457);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AInternMethPropdef____n_kwmeth(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1458 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1459 */
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -7837,7 +7953,7 @@ void parser___parser_prod___AExternMethPropdef___empty_init(val_t p0, int* init_
 }
 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, int* init_table){
   int itpos46 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternMethPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -7847,7 +7963,7 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   fra.me.line = 1465;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -7857,6 +7973,7 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -7866,10 +7983,12 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
+  /* ./parser//parser_prod.nit:1465 */
+  fra.me.REG[9] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1476 */
-  CALL_parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AExternMethPropdef___empty_init(fra.me.REG[9])(fra.me.REG[9], init_table);
   /* ./parser//parser_prod.nit:1477 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[9]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1478 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7890,10 +8009,10 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1479);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1481 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[9]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1482 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7914,7 +8033,7 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1483);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1485 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -7922,54 +8041,54 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1485);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[9]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1486 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1486);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1487 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1487);
   }
-  ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[9]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1488 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1488);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1489 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1489);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[9]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1490 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1490);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1491 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1491);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[9]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1492 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1492);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1493 */
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[7];
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[9]) = fra.me.REG[7];
   /* ./parser//parser_prod.nit:1494 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7990,10 +8109,10 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1495);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1497 */
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[8];
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[9]) = fra.me.REG[8];
   /* ./parser//parser_prod.nit:1498 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8014,7 +8133,7 @@ void parser___parser_prod___AExternMethPropdef___init_aexternmethpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1499);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos46] = 1;
@@ -8450,7 +8569,7 @@ void parser___parser_prod___AExternMethPropdef___replace_child(val_t p0, val_t p
   return;
 }
 void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -8459,128 +8578,131 @@ void parser___parser_prod___AExternMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 1587;
   fra.me.meth = LOCATE_parser___parser_prod___AExternMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1587 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1589 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1590 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1590);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1592 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1593 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1593);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1595 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1596 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0])!=NIT_NULL);
+  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, 1596);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternMethPropdef____n_kwmeth(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1597 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1598 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1599 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1600 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
-    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*/;
+    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, 1600);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1602 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1603 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
+    fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
+    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("Cast failed", NULL, LOCATE_parser___parser_prod, 1603);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -8604,7 +8726,7 @@ void parser___parser_prod___AConcreteMethPropdef___empty_init(val_t p0, int* ini
 }
 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, int* init_table){
   int itpos48 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteMethPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -8614,7 +8736,7 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   fra.me.line = 1610;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 8;
+  fra.me.REG_size = 9;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -8623,6 +8745,7 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -8631,10 +8754,12 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:1610 */
+  fra.me.REG[8] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1620 */
-  CALL_parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AConcreteMethPropdef___empty_init(fra.me.REG[8])(fra.me.REG[8], init_table);
   /* ./parser//parser_prod.nit:1621 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[8]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1622 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8655,10 +8780,10 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1623);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
   /* ./parser//parser_prod.nit:1625 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[8]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1626 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8679,7 +8804,7 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1627);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
   /* ./parser//parser_prod.nit:1629 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -8687,54 +8812,54 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1629);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[8]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1630 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1630);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1631 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1631);
   }
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[8]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1632 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1632);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1633 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1633);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[8]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1634 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1634);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1635 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1635);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[8]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1636 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1636);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1637 */
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[7];
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[8]) = fra.me.REG[7];
   /* ./parser//parser_prod.nit:1638 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8755,7 +8880,7 @@ void parser___parser_prod___AConcreteMethPropdef___init_aconcretemethpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1639);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos48] = 1;
@@ -9141,7 +9266,7 @@ void parser___parser_prod___AConcreteMethPropdef___replace_child(val_t p0, val_t
   return;
 }
 void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -9150,98 +9275,101 @@ void parser___parser_prod___AConcreteMethPropdef___visit_all(val_t p0, val_t p1)
   fra.me.line = 1717;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1717 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1719 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1720 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1720);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1722 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1723 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1723);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1725 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1726 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_kwmeth(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1727 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1728 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1729 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1730 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 1730);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -9267,7 +9395,7 @@ void parser___parser_prod___AConcreteInitPropdef___empty_init(val_t p0, int* ini
 }
 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, int* init_table){
   int itpos50 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AConcreteInitPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -9277,7 +9405,7 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   fra.me.line = 1737;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 8;
+  fra.me.REG_size = 9;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9286,6 +9414,7 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -9294,10 +9423,12 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   fra.me.REG[5] = p5;
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
+  /* ./parser//parser_prod.nit:1737 */
+  fra.me.REG[8] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1747 */
-  CALL_parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AConcreteInitPropdef___empty_init(fra.me.REG[8])(fra.me.REG[8], init_table);
   /* ./parser//parser_prod.nit:1748 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[8]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1749 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9318,10 +9449,10 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1750);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
   }
   /* ./parser//parser_prod.nit:1752 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[8]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1753 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9342,7 +9473,7 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1754);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
   }
   /* ./parser//parser_prod.nit:1756 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -9350,28 +9481,28 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1756);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[8]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1757 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1757);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1758 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1758);
   }
-  ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[8]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1759 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1759);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1760 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[8]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1761 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9392,7 +9523,7 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1762);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
   }
   /* ./parser//parser_prod.nit:1764 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
@@ -9400,15 +9531,15 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1764);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[8]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1765 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1765);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
   /* ./parser//parser_prod.nit:1766 */
-  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]) = fra.me.REG[7];
+  ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[8]) = fra.me.REG[7];
   /* ./parser//parser_prod.nit:1767 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -9429,7 +9560,7 @@ void parser___parser_prod___AConcreteInitPropdef___init_aconcreteinitpropdef(val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1768);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos50] = 1;
@@ -9814,7 +9945,7 @@ void parser___parser_prod___AConcreteInitPropdef___replace_child(val_t p0, val_t
   return;
 }
 void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -9823,125 +9954,128 @@ void parser___parser_prod___AConcreteInitPropdef___visit_all(val_t p0, val_t p1)
   fra.me.line = 1846;
   fra.me.meth = LOCATE_parser___parser_prod___AConcreteInitPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1846 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1848 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1849 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1849);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1851 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1852 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1852);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1854 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:1855 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AConcreteInitPropdef____n_kwinit(fra.me.REG[0])!=NIT_NULL);
+  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, 1855);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteInitPropdef____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]);
+  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:1856 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1857 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-    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*/;
+    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, 1857);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1859 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:1860 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1861 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 1861);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -9967,7 +10101,7 @@ void parser___parser_prod___AExternInitPropdef___empty_init(val_t p0, int* init_
 }
 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, int* init_table){
   int itpos52 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternInitPropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -9977,7 +10111,7 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   fra.me.line = 1868;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9987,6 +10121,7 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -9996,10 +10131,12 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   fra.me.REG[6] = p6;
   fra.me.REG[7] = p7;
   fra.me.REG[8] = p8;
+  /* ./parser//parser_prod.nit:1868 */
+  fra.me.REG[9] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1879 */
-  CALL_parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AExternInitPropdef___empty_init(fra.me.REG[9])(fra.me.REG[9], init_table);
   /* ./parser//parser_prod.nit:1880 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[9]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:1881 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10020,10 +10157,10 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1882);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1884 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[9]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:1885 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10044,7 +10181,7 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1886);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1888 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -10052,28 +10189,28 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1888);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AMethPropdef____n_visibility(fra.me.REG[9]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:1889 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1889);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1890 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1890);
   }
-  ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[9]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:1891 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1891);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1892 */
-  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[9]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:1893 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10094,7 +10231,7 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1894);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1896 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
@@ -10102,15 +10239,15 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 1896);
   }
-  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[9]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:1897 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1897);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
   /* ./parser//parser_prod.nit:1898 */
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]) = fra.me.REG[7];
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[9]) = fra.me.REG[7];
   /* ./parser//parser_prod.nit:1899 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10131,10 +10268,10 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1900);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[9]);
   }
   /* ./parser//parser_prod.nit:1902 */
-  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]) = fra.me.REG[8];
+  ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[9]) = fra.me.REG[8];
   /* ./parser//parser_prod.nit:1903 */
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10155,7 +10292,7 @@ void parser___parser_prod___AExternInitPropdef___init_aexterninitpropdef(val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 1904);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos52] = 1;
@@ -10591,7 +10728,7 @@ void parser___parser_prod___AExternInitPropdef___replace_child(val_t p0, val_t p
   return;
 }
 void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -10600,150 +10737,153 @@ void parser___parser_prod___AExternInitPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 1992;
   fra.me.meth = LOCATE_parser___parser_prod___AExternInitPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:1992 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:1994 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1995 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 1995);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:1997 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:1998 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 1998);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2000 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____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]);
+  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:2001 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  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, 2001);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternInitPropdef____n_kwnew(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:2002 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2003 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_methid(fra.me.REG[0]);
-    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*/;
+    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, 2003);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2005 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:2006 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2007 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern(fra.me.REG[0]);
-    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*/;
+    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, 2007);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2009 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2010 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExternCalls, ID_parser___parser_nodes___AExternCalls)) /*cast AExternCalls*/;
+    fra.me.REG[2] = ATTR_parser___parser_nodes___AExternPropdef____n_extern_calls(fra.me.REG[2]);
+    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("Cast failed", NULL, LOCATE_parser___parser_prod, 2010);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -10963,7 +11103,7 @@ void parser___parser_prod___AMainMethPropdef___replace_child(val_t p0, val_t p1,
   return;
 }
 void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -10972,61 +11112,64 @@ void parser___parser_prod___AMainMethPropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 2057;
   fra.me.meth = LOCATE_parser___parser_prod___AMainMethPropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2057 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2059 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2060 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AMethPropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 2060);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2062 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2063 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AConcreteMethPropdef____n_block(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 2063);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -11050,7 +11193,7 @@ void parser___parser_prod___ATypePropdef___empty_init(val_t p0, int* init_table)
 }
 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, int* init_table){
   int itpos56 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATypePropdef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -11060,7 +11203,7 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   fra.me.line = 2070;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___init_atypepropdef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -11068,6 +11211,7 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -11075,10 +11219,12 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(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:2070 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2079 */
-  CALL_parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ATypePropdef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:2080 */
-  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2081 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11099,10 +11245,10 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2082);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:2084 */
-  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[7]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2085 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11123,7 +11269,7 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2086);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:2088 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -11131,52 +11277,52 @@ void parser___parser_prod___ATypePropdef___init_atypepropdef(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2088);
   }
-  ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[7]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:2089 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2089);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:2090 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2090);
   }
-  ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:2091 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2091);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:2092 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2092);
   }
-  ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:2093 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2093);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:2094 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2094);
   }
-  ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:2095 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2095);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   stack_frame_head = fra.me.prev;
   init_table[itpos56] = 1;
   return;
@@ -11506,7 +11652,7 @@ void parser___parser_prod___ATypePropdef___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -11515,94 +11661,97 @@ void parser___parser_prod___ATypePropdef___visit_all(val_t p0, val_t p1){
   fra.me.line = 2162;
   fra.me.meth = LOCATE_parser___parser_prod___ATypePropdef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2162 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2164 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2165 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___APropdef____n_doc(fra.me.REG[0]);
-    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*/;
+    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, 2165);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2167 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2168 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ATypePropdef____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 2168);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2170 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_visibility(fra.me.REG[0])!=NIT_NULL);
+  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, 2170);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ATypePropdef____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]);
+  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:2171 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_kwtype(fra.me.REG[0])!=NIT_NULL);
+  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, 2171);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ATypePropdef____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]);
+  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:2172 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 2172);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ATypePropdef____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]);
+  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:2173 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ATypePropdef____n_type(fra.me.REG[0])!=NIT_NULL);
+  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, 2173);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ATypePropdef____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]);
+  fra.me.REG[2] = 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[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -11625,7 +11774,7 @@ void parser___parser_prod___AReadAble___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -11635,17 +11784,20 @@ void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t
   fra.me.line = 2179;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___init_areadable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2179 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2184 */
-  CALL_parser___parser_prod___AReadAble___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AReadAble___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:2185 */
-  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2186 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11666,7 +11818,7 @@ void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2187);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   }
   /* ./parser//parser_prod.nit:2189 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
@@ -11674,13 +11826,13 @@ void parser___parser_prod___AReadAble___init_areadable(val_t p0, val_t p1, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2189);
   }
-  ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2190 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2190);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos58] = 1;
   return;
@@ -11809,7 +11961,7 @@ void parser___parser_prod___AReadAble___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -11818,45 +11970,48 @@ void parser___parser_prod___AReadAble___visit_all(val_t p0, val_t p1){
   fra.me.line = 2217;
   fra.me.meth = LOCATE_parser___parser_prod___AReadAble___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2217 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2219 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2220 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 2220);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2222 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0])!=NIT_NULL);
+  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, 2222);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AReadAble____n_kwreadable(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -11879,7 +12034,7 @@ void parser___parser_prod___AWriteAble___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -11889,19 +12044,22 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
   fra.me.line = 2228;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___init_awriteable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2228 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2234 */
-  CALL_parser___parser_prod___AWriteAble___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AWriteAble___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:2235 */
-  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2236 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11922,10 +12080,10 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2237);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:2239 */
-  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2240 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -11946,7 +12104,7 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2241);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:2243 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -11954,13 +12112,13 @@ void parser___parser_prod___AWriteAble___init_awriteable(val_t p0, val_t p1, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2243);
   }
-  ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:2244 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2244);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -12140,7 +12298,7 @@ void parser___parser_prod___AWriteAble___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -12149,70 +12307,73 @@ void parser___parser_prod___AWriteAble___visit_all(val_t p0, val_t p1){
   fra.me.line = 2281;
   fra.me.meth = LOCATE_parser___parser_prod___AWriteAble___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2281 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2283 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2284 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_kwredef(fra.me.REG[0]);
-    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*/;
+    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, 2284);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2286 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2287 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAble____n_visibility(fra.me.REG[0]);
-    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*/;
+    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, 2287);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2289 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0])!=NIT_NULL);
+  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, 2289);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AWriteAble____n_kwwritable(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -12235,7 +12396,7 @@ void parser___parser_prod___AIdMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos62]) return;
@@ -12244,26 +12405,29 @@ void parser___parser_prod___AIdMethid___init_aidmethid(val_t p0, val_t p1, int*
   fra.me.line = 2295;
   fra.me.meth = LOCATE_parser___parser_prod___AIdMethid___init_aidmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2295 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2299 */
-  CALL_parser___parser_prod___AIdMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIdMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2300 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2300);
   }
-  ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIdMethid____n_id(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2301 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2301);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos62] = 1;
   return;
@@ -12384,7 +12548,7 @@ void parser___parser_prod___APlusMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos64]) return;
@@ -12393,26 +12557,29 @@ void parser___parser_prod___APlusMethid___init_aplusmethid(val_t p0, val_t p1, i
   fra.me.line = 2326;
   fra.me.meth = LOCATE_parser___parser_prod___APlusMethid___init_aplusmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2326 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2330 */
-  CALL_parser___parser_prod___APlusMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APlusMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2331 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2331);
   }
-  ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APlusMethid____n_plus(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2332 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2332);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos64] = 1;
   return;
@@ -12533,7 +12700,7 @@ void parser___parser_prod___AMinusMethid___empty_init(val_t p0, int* init_table)
 }
 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;
-  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 tmp;
   if (init_table[itpos66]) return;
@@ -12542,26 +12709,29 @@ void parser___parser_prod___AMinusMethid___init_aminusmethid(val_t p0, val_t p1,
   fra.me.line = 2357;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusMethid___init_aminusmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2357 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2361 */
-  CALL_parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AMinusMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2362 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2362);
   }
-  ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AMinusMethid____n_minus(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2363 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2363);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos66] = 1;
   return;
@@ -12682,7 +12852,7 @@ void parser___parser_prod___AStarMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos68]) return;
@@ -12691,26 +12861,29 @@ void parser___parser_prod___AStarMethid___init_astarmethid(val_t p0, val_t p1, i
   fra.me.line = 2388;
   fra.me.meth = LOCATE_parser___parser_prod___AStarMethid___init_astarmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2388 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2392 */
-  CALL_parser___parser_prod___AStarMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStarMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2393 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2393);
   }
-  ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStarMethid____n_star(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2394 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2394);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos68] = 1;
   return;
@@ -12831,7 +13004,7 @@ void parser___parser_prod___ASlashMethid___empty_init(val_t p0, int* init_table)
 }
 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;
-  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 tmp;
   if (init_table[itpos70]) return;
@@ -12840,26 +13013,29 @@ void parser___parser_prod___ASlashMethid___init_aslashmethid(val_t p0, val_t p1,
   fra.me.line = 2419;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashMethid___init_aslashmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2419 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2423 */
-  CALL_parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASlashMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2424 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2424);
   }
-  ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASlashMethid____n_slash(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2425 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2425);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos70] = 1;
   return;
@@ -12980,7 +13156,7 @@ void parser___parser_prod___APercentMethid___empty_init(val_t p0, int* init_tabl
 }
 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;
-  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 tmp;
   if (init_table[itpos72]) return;
@@ -12989,26 +13165,29 @@ void parser___parser_prod___APercentMethid___init_apercentmethid(val_t p0, val_t
   fra.me.line = 2450;
   fra.me.meth = LOCATE_parser___parser_prod___APercentMethid___init_apercentmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2450 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2454 */
-  CALL_parser___parser_prod___APercentMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APercentMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2455 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2455);
   }
-  ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APercentMethid____n_percent(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2456 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2456);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos72] = 1;
   return;
@@ -13129,7 +13308,7 @@ void parser___parser_prod___AEqMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos74]) return;
@@ -13138,26 +13317,29 @@ void parser___parser_prod___AEqMethid___init_aeqmethid(val_t p0, val_t p1, int*
   fra.me.line = 2481;
   fra.me.meth = LOCATE_parser___parser_prod___AEqMethid___init_aeqmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2481 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2485 */
-  CALL_parser___parser_prod___AEqMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AEqMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2486 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2486);
   }
-  ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AEqMethid____n_eq(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2487 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2487);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos74] = 1;
   return;
@@ -13278,7 +13460,7 @@ void parser___parser_prod___ANeMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos76]) return;
@@ -13287,26 +13469,29 @@ void parser___parser_prod___ANeMethid___init_anemethid(val_t p0, val_t p1, int*
   fra.me.line = 2512;
   fra.me.meth = LOCATE_parser___parser_prod___ANeMethid___init_anemethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2512 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2516 */
-  CALL_parser___parser_prod___ANeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2517 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2517);
   }
-  ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ANeMethid____n_ne(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2518 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2518);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos76] = 1;
   return;
@@ -13427,7 +13612,7 @@ void parser___parser_prod___ALeMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos78]) return;
@@ -13436,26 +13621,29 @@ void parser___parser_prod___ALeMethid___init_alemethid(val_t p0, val_t p1, int*
   fra.me.line = 2543;
   fra.me.meth = LOCATE_parser___parser_prod___ALeMethid___init_alemethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2543 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2547 */
-  CALL_parser___parser_prod___ALeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2548 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2548);
   }
-  ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALeMethid____n_le(fra.me.REG[2]) = fra.me.REG[1];
   /* ./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_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos78] = 1;
   return;
@@ -13576,7 +13764,7 @@ void parser___parser_prod___AGeMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos80]) return;
@@ -13585,26 +13773,29 @@ void parser___parser_prod___AGeMethid___init_agemethid(val_t p0, val_t p1, int*
   fra.me.line = 2574;
   fra.me.meth = LOCATE_parser___parser_prod___AGeMethid___init_agemethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2574 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2578 */
-  CALL_parser___parser_prod___AGeMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGeMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2579 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2579);
   }
-  ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AGeMethid____n_ge(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2580 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2580);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos80] = 1;
   return;
@@ -13725,7 +13916,7 @@ void parser___parser_prod___ALtMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos82]) return;
@@ -13734,26 +13925,29 @@ void parser___parser_prod___ALtMethid___init_altmethid(val_t p0, val_t p1, int*
   fra.me.line = 2605;
   fra.me.meth = LOCATE_parser___parser_prod___ALtMethid___init_altmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2605 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2609 */
-  CALL_parser___parser_prod___ALtMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALtMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2610 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2610);
   }
-  ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALtMethid____n_lt(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2611 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2611);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos82] = 1;
   return;
@@ -13874,7 +14068,7 @@ void parser___parser_prod___AGtMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos84]) return;
@@ -13883,26 +14077,29 @@ void parser___parser_prod___AGtMethid___init_agtmethid(val_t p0, val_t p1, int*
   fra.me.line = 2636;
   fra.me.meth = LOCATE_parser___parser_prod___AGtMethid___init_agtmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2636 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2640 */
-  CALL_parser___parser_prod___AGtMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGtMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2641 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2641);
   }
-  ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AGtMethid____n_gt(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2642 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2642);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos84] = 1;
   return;
@@ -14023,7 +14220,7 @@ void parser___parser_prod___ALlMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos86]) return;
@@ -14032,26 +14229,29 @@ void parser___parser_prod___ALlMethid___init_allmethid(val_t p0, val_t p1, int*
   fra.me.line = 2667;
   fra.me.meth = LOCATE_parser___parser_prod___ALlMethid___init_allmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2667 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2671 */
-  CALL_parser___parser_prod___ALlMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALlMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2672 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2672);
   }
-  ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALlMethid____n_ll(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2673 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2673);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos86] = 1;
   return;
@@ -14172,7 +14372,7 @@ void parser___parser_prod___AGgMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos88]) return;
@@ -14181,26 +14381,29 @@ void parser___parser_prod___AGgMethid___init_aggmethid(val_t p0, val_t p1, int*
   fra.me.line = 2698;
   fra.me.meth = LOCATE_parser___parser_prod___AGgMethid___init_aggmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2698 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2702 */
-  CALL_parser___parser_prod___AGgMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGgMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2703 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2703);
   }
-  ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AGgMethid____n_gg(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2704 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2704);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos88] = 1;
   return;
@@ -14321,7 +14524,7 @@ void parser___parser_prod___ABraMethid___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos90]) return;
@@ -14330,41 +14533,44 @@ void parser___parser_prod___ABraMethid___init_abramethid(val_t p0, val_t p1, val
   fra.me.line = 2729;
   fra.me.meth = LOCATE_parser___parser_prod___ABraMethid___init_abramethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2729 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2734 */
-  CALL_parser___parser_prod___ABraMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABraMethid___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:2735 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2735);
   }
-  ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ABraMethid____n_obra(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2736 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2736);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:2737 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2737);
   }
-  ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABraMethid____n_cbra(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2738 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2738);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos90] = 1;
   return;
@@ -14544,7 +14750,7 @@ void parser___parser_prod___AStarshipMethid___empty_init(val_t p0, int* init_tab
 }
 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;
-  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 tmp;
   if (init_table[itpos92]) return;
@@ -14553,26 +14759,29 @@ void parser___parser_prod___AStarshipMethid___init_astarshipmethid(val_t p0, val
   fra.me.line = 2774;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipMethid___init_astarshipmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2774 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2778 */
-  CALL_parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStarshipMethid___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:2779 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2779);
   }
-  ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStarshipMethid____n_starship(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2780 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2780);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos92] = 1;
   return;
@@ -14693,7 +14902,7 @@ void parser___parser_prod___AAssignMethid___empty_init(val_t p0, int* init_table
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos94]) return;
@@ -14702,41 +14911,44 @@ void parser___parser_prod___AAssignMethid___init_aassignmethid(val_t p0, val_t p
   fra.me.line = 2805;
   fra.me.meth = LOCATE_parser___parser_prod___AAssignMethid___init_aassignmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:2805 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2810 */
-  CALL_parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAssignMethid___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:2811 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2811);
   }
-  ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAssignMethid____n_id(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2812 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2812);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:2813 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2813);
   }
-  ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAssignMethid____n_assign(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2814 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2814);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos94] = 1;
   return;
@@ -14916,7 +15128,7 @@ void parser___parser_prod___ABraassignMethid___empty_init(val_t p0, int* init_ta
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos96]) return;
@@ -14925,56 +15137,59 @@ void parser___parser_prod___ABraassignMethid___init_abraassignmethid(val_t p0, v
   fra.me.line = 2850;
   fra.me.meth = LOCATE_parser___parser_prod___ABraassignMethid___init_abraassignmethid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2850 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2856 */
-  CALL_parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABraassignMethid___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:2857 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2857);
   }
-  ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ABraassignMethid____n_obra(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2858 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2858);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:2859 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2859);
   }
-  ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABraassignMethid____n_cbra(fra.me.REG[4]) = fra.me.REG[2];
   /* ./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, 2860);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:2861 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2861);
   }
-  ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ABraassignMethid____n_assign(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:2862 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2862);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -15367,11 +15582,16 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:2934 */
       REGB2 = REGB0;
@@ -15382,7 +15602,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 2935);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -15424,7 +15644,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 2938);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:2939 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -15439,19 +15659,19 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_params", LOCATE_parser___parser_prod, 2941);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:2943 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -15516,11 +15736,16 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:2956 */
       REGB2 = REGB0;
@@ -15531,7 +15756,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 2957);
       }
       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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -15573,7 +15798,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 2960);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:2961 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -15588,19 +15813,19 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_closure_decls", LOCATE_parser___parser_prod, 2963);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:2965 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -15610,7 +15835,7 @@ void parser___parser_prod___ASignature___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -15619,53 +15844,56 @@ void parser___parser_prod___ASignature___visit_all(val_t p0, val_t p1){
   fra.me.line = 2970;
   fra.me.meth = LOCATE_parser___parser_prod___ASignature___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:2970 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2972 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_params(fra.me.REG[0])!=NIT_NULL);
+  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, 2972);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASignature____n_params(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___visit_all_1));
+  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:2975 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:2976 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ASignature____n_type(fra.me.REG[0]);
-    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*/;
+    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, 2976);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:2978 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASignature____n_closure_decls(fra.me.REG[0])!=NIT_NULL);
+  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, 2978);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ASignature____n_closure_decls(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___ASignature___visit_all_2));
+  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));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -15728,7 +15956,7 @@ void parser___parser_prod___AParam___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos100 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParam].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -15738,32 +15966,35 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
   fra.me.line = 2986;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___init_aparam;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:2986 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:2992 */
-  CALL_parser___parser_prod___AParam___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AParam___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:2993 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 2993);
   }
-  ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:2994 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2994);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:2995 */
-  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:2996 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -15784,10 +16015,10 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 2997);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:2999 */
-  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3000 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -15808,7 +16039,7 @@ void parser___parser_prod___AParam___init_aparam(val_t p0, val_t p1, val_t p2, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3001);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos100] = 1;
@@ -15989,7 +16220,7 @@ void parser___parser_prod___AParam___replace_child(val_t p0, val_t p1, val_t p2)
   return;
 }
 void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -15998,69 +16229,72 @@ void parser___parser_prod___AParam___visit_all(val_t p0, val_t p1){
   fra.me.line = 3039;
   fra.me.meth = LOCATE_parser___parser_prod___AParam___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3039 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3041 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AParam____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 3041);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AParam____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]);
+  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:3042 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3043 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AParam____n_type(fra.me.REG[0]);
-    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*/;
+    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, 3043);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3045 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3046 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TDotdotdot, ID_parser___parser_nodes___TDotdotdot)) /*cast TDotdotdot*/;
+    fra.me.REG[2] = ATTR_parser___parser_nodes___AParam____n_dotdotdot(fra.me.REG[2]);
+    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("Cast failed", NULL, LOCATE_parser___parser_prod, 3046);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -16084,7 +16318,7 @@ void parser___parser_prod___AClosureDecl___empty_init(val_t p0, int* init_table)
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -16094,23 +16328,26 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
   fra.me.line = 3053;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___init_aclosuredecl;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3053 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3061 */
-  CALL_parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AClosureDecl___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:3062 */
-  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3063 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -16131,7 +16368,7 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3064);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:3066 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
@@ -16139,41 +16376,41 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3066);
   }
-  ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3067 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3067);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3068 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3068);
   }
-  ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[6]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3069 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3069);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3070 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3070);
   }
-  ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:3071 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3071);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3072 */
-  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:3073 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -16194,7 +16431,7 @@ void parser___parser_prod___AClosureDecl___init_aclosuredecl(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3074);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -16475,7 +16712,7 @@ void parser___parser_prod___AClosureDecl___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -16484,85 +16721,88 @@ void parser___parser_prod___AClosureDecl___visit_all(val_t p0, val_t p1){
   fra.me.line = 3132;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDecl___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3132 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3134 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3135 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_kwbreak(fra.me.REG[0]);
-    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*/;
+    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, 3135);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3137 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0])!=NIT_NULL);
+  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, 3137);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_bang(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3138 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 3138);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____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]);
+  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:3139 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0])!=NIT_NULL);
+  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, 3139);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_signature(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3140 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3141 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AClosureDecl____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 3141);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -16586,7 +16826,7 @@ void parser___parser_prod___AType___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos104 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AType].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -16596,19 +16836,22 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
   fra.me.line = 3148;
   fra.me.meth = LOCATE_parser___parser_prod___AType___init_atype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3148 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3154 */
-  CALL_parser___parser_prod___AType___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AType___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:3155 */
-  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3156 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -16629,7 +16872,7 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3157);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:3159 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
@@ -16637,13 +16880,13 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3159);
   }
-  ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3160 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3160);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___AType___init_atype_1));
   stack_frame_head = fra.me.prev;
   init_table[itpos104] = 1;
@@ -16674,15 +16917,15 @@ void parser___parser_prod___AType___init_atype(val_t p0, val_t p1, val_t p2, val
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 3162);
     }
     /* ./parser//parser_prod.nit:3163 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3163);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AType____n_types(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AType____n_types(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:3164 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -16817,11 +17060,16 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:3190 */
       REGB2 = REGB0;
@@ -16832,7 +17080,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
         nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3191);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -16874,7 +17122,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
             nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3194);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:3195 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -16889,19 +17137,19 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
             nit_abort("Uninitialized attribute %s", "_n_types", LOCATE_parser___parser_prod, 3197);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:3199 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -16911,7 +17159,7 @@ void parser___parser_prod___AType___replace_child(val_t p0, val_t p1, val_t p2){
   return;
 }
 void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -16920,53 +17168,56 @@ void parser___parser_prod___AType___visit_all(val_t p0, val_t p1){
   fra.me.line = 3204;
   fra.me.meth = LOCATE_parser___parser_prod___AType___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3204 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3206 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3207 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AType____n_kwnullable(fra.me.REG[0]);
-    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*/;
+    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, 3207);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3209 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 3209);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AType____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]);
+  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:3210 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AType____n_types(fra.me.REG[0])!=NIT_NULL);
+  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, 3210);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AType____n_types(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___AType___visit_all_1));
+  fra.me.REG[2] = ATTR_parser___parser_nodes___AType____n_types(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___AType___visit_all_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -17009,7 +17260,7 @@ void parser___parser_prod___ALabel___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos106]) return;
@@ -17018,41 +17269,44 @@ void parser___parser_prod___ALabel___init_alabel(val_t p0, val_t p1, val_t p2, i
   fra.me.line = 3218;
   fra.me.meth = LOCATE_parser___parser_prod___ALabel___init_alabel;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:3218 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3223 */
-  CALL_parser___parser_prod___ALabel___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALabel___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:3224 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3224);
   }
-  ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALabel____n_kwlabel(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3225 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3225);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:3226 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3226);
   }
-  ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ALabel____n_id(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3227 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3227);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos106] = 1;
   return;
@@ -17319,11 +17573,16 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:3277 */
       REGB2 = REGB0;
@@ -17334,7 +17593,7 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3278);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -17376,7 +17635,7 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3281);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:3282 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -17391,19 +17650,19 @@ void parser___parser_prod___ABlockExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_expr", LOCATE_parser___parser_prod, 3284);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABlockExpr____n_expr(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:3286 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -17476,7 +17735,7 @@ void parser___parser_prod___AVardeclExpr___empty_init(val_t p0, int* init_table)
 }
 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, int* init_table){
   int itpos110 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AVardeclExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -17486,49 +17745,52 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
   fra.me.line = 3301;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___init_avardeclexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3301 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3309 */
-  CALL_parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AVardeclExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:3310 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3310);
   }
-  ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3311 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3311);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3312 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3312);
   }
-  ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3313 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3313);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3314 */
-  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[6]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3315 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -17549,10 +17811,10 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3316);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:3318 */
-  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:3319 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -17573,10 +17835,10 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3320);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:3322 */
-  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:3323 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -17597,7 +17859,7 @@ void parser___parser_prod___AVardeclExpr___init_avardeclexpr(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3324);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos110] = 1;
@@ -17879,7 +18141,7 @@ void parser___parser_prod___AVardeclExpr___replace_child(val_t p0, val_t p1, val
   return;
 }
 void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -17888,102 +18150,105 @@ void parser___parser_prod___AVardeclExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3382;
   fra.me.meth = LOCATE_parser___parser_prod___AVardeclExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3382 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3384 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0])!=NIT_NULL);
+  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, 3384);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_kwvar(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3385 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AVardeclExpr____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 3385);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____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]);
+  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:3386 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3387 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_type(fra.me.REG[0]);
-    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*/;
+    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, 3387);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3389 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3390 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_assign(fra.me.REG[0]);
-    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*/;
+    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, 3390);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3392 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3393 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AVardeclExpr____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    fra.me.REG[2] = ATTR_parser___parser_nodes___AVardeclExpr____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, 3393);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -18203,7 +18468,7 @@ void parser___parser_prod___AReturnExpr___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -18212,61 +18477,64 @@ void parser___parser_prod___AReturnExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3440;
   fra.me.meth = LOCATE_parser___parser_prod___AReturnExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3440 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3442 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3443 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AReturnExpr____n_kwreturn(fra.me.REG[0]);
-    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*/;
+    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, 3443);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3445 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3446 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AReturnExpr____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 3446);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -18290,7 +18558,7 @@ void parser___parser_prod___ABreakExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -18300,32 +18568,35 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
   fra.me.line = 3453;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___init_abreakexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3453 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3459 */
-  CALL_parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABreakExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:3460 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3460);
   }
-  ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3461 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3461);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:3462 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3463 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18346,10 +18617,10 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3464);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:3466 */
-  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3467 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -18370,7 +18641,7 @@ void parser___parser_prod___ABreakExpr___init_abreakexpr(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3468);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -18551,7 +18822,7 @@ void parser___parser_prod___ABreakExpr___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -18560,69 +18831,72 @@ void parser___parser_prod___ABreakExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3506;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3506 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3508 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0])!=NIT_NULL);
+  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, 3508);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ABreakExpr____n_kwbreak(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3509 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3510 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    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*/;
+    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, 3510);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3512 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3513 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ABreakExpr____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 3513);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -18646,7 +18920,7 @@ void parser___parser_prod___AAbortExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos116]) return;
@@ -18655,26 +18929,29 @@ void parser___parser_prod___AAbortExpr___init_aabortexpr(val_t p0, val_t p1, int
   fra.me.line = 3520;
   fra.me.meth = LOCATE_parser___parser_prod___AAbortExpr___init_aabortexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3520 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3524 */
-  CALL_parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAbortExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:3525 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3525);
   }
-  ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAbortExpr____n_kwabort(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3526 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3526);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos116] = 1;
   return;
@@ -19068,7 +19345,7 @@ void parser___parser_prod___AContinueExpr___replace_child(val_t p0, val_t p1, va
   return;
 }
 void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -19077,86 +19354,89 @@ void parser___parser_prod___AContinueExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3606;
   fra.me.meth = LOCATE_parser___parser_prod___AContinueExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3606 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3608 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3609 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AContinueExpr____n_kwcontinue(fra.me.REG[0]);
-    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*/;
+    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, 3609);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3611 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3612 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    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*/;
+    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, 3612);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3614 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3615 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AContinueExpr____n_expr(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 3615);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -19180,7 +19460,7 @@ void parser___parser_prod___ADoExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -19190,32 +19470,35 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 3622;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___init_adoexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3622 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3628 */
-  CALL_parser___parser_prod___ADoExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ADoExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:3629 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3629);
   }
-  ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3630 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3630);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:3631 */
-  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3632 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19236,10 +19519,10 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3633);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:3635 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3636 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19260,7 +19543,7 @@ void parser___parser_prod___ADoExpr___init_adoexpr(val_t p0, val_t p1, val_t p2,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3637);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -19441,7 +19724,7 @@ void parser___parser_prod___ADoExpr___replace_child(val_t p0, val_t p1, val_t p2
   return;
 }
 void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -19450,69 +19733,72 @@ void parser___parser_prod___ADoExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3675;
   fra.me.meth = LOCATE_parser___parser_prod___ADoExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3675 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3677 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  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, 3677);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ADoExpr____n_kwdo(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3678 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3679 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ADoExpr____n_block(fra.me.REG[0]);
-    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*/;
+    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, 3679);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3681 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3682 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
+    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, 3682);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -19536,7 +19822,7 @@ void parser___parser_prod___AIfExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -19546,47 +19832,50 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 3689;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___init_aifexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:3689 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3696 */
-  CALL_parser___parser_prod___AIfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIfExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:3697 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3697);
   }
-  ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3698 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3698);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:3699 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3699);
   }
-  ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3700 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3700);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:3701 */
-  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3702 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19607,10 +19896,10 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3703);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
   /* ./parser//parser_prod.nit:3705 */
-  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:3706 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -19631,7 +19920,7 @@ void parser___parser_prod___AIfExpr___init_aifexpr(val_t p0, val_t p1, val_t p2,
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3707);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -19862,7 +20151,7 @@ void parser___parser_prod___AIfExpr___replace_child(val_t p0, val_t p1, val_t p2
   return;
 }
 void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -19871,77 +20160,80 @@ void parser___parser_prod___AIfExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3755;
   fra.me.meth = LOCATE_parser___parser_prod___AIfExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3755 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3757 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_kwif(fra.me.REG[0])!=NIT_NULL);
+  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, 3757);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____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]);
+  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:3758 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AIfExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  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, 3758);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____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]);
+  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:3759 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3760 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____n_then(fra.me.REG[0]);
-    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*/;
+    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, 3760);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3762 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3763 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AIfExpr____n_else(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 3763);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -19965,7 +20257,7 @@ void parser___parser_prod___AIfexprExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos124]) return;
@@ -19974,7 +20266,7 @@ void parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, v
   fra.me.line = 3770;
   fra.me.meth = LOCATE_parser___parser_prod___AIfexprExpr___init_aifexprexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -19982,6 +20274,7 @@ void parser___parser_prod___AIfexprExpr___init_aifexprexpr(val_t p0, val_t p1, v
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -19989,86 +20282,88 @@ 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:3770 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3779 */
-  CALL_parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIfexprExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:3780 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3780);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwif(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3781 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3781);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:3782 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3782);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_expr(fra.me.REG[7]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3783 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3783);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:3784 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3784);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwthen(fra.me.REG[7]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3785 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3785);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:3786 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3786);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_then(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:3787 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3787);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:3788 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3788);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_kwelse(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:3789 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3789);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:3790 */
   REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3790);
   }
-  ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___AIfexprExpr____n_else(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:3791 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3791);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -20480,7 +20775,7 @@ void parser___parser_prod___AWhileExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -20490,62 +20785,65 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
   fra.me.line = 3871;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___init_awhileexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:3871 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3879 */
-  CALL_parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AWhileExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:3880 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3880);
   }
-  ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3881 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3881);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3882 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3882);
   }
-  ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3883 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3883);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3884 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3884);
   }
-  ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[6]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3885 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3885);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:3886 */
-  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:3887 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20566,10 +20864,10 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3888);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   }
   /* ./parser//parser_prod.nit:3890 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:3891 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -20590,7 +20888,7 @@ void parser___parser_prod___AWhileExpr___init_awhileexpr(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3892);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -20871,7 +21169,7 @@ void parser___parser_prod___AWhileExpr___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -20880,85 +21178,88 @@ void parser___parser_prod___AWhileExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 3950;
   fra.me.meth = LOCATE_parser___parser_prod___AWhileExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:3950 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3952 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0])!=NIT_NULL);
+  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, 3952);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AWhileExpr____n_kwwhile(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3953 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  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, 3953);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AWhileExpr____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]);
+  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:3954 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  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, 3954);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AWhileExpr____n_kwdo(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:3955 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3956 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AWhileExpr____n_block(fra.me.REG[0]);
-    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*/;
+    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, 3956);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:3958 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:3959 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
+    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, 3959);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -20982,7 +21283,7 @@ void parser___parser_prod___ALoopExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -20992,32 +21293,35 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
   fra.me.line = 3966;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___init_aloopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:3966 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:3972 */
-  CALL_parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALoopExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:3973 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 3973);
   }
-  ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:3974 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3974);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:3975 */
-  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:3976 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21038,10 +21342,10 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3977);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:3979 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:3980 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21062,7 +21366,7 @@ void parser___parser_prod___ALoopExpr___init_aloopexpr(val_t p0, val_t p1, val_t
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 3981);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -21243,7 +21547,7 @@ void parser___parser_prod___ALoopExpr___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -21252,69 +21556,72 @@ void parser___parser_prod___ALoopExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 4019;
   fra.me.meth = LOCATE_parser___parser_prod___ALoopExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4019 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4021 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0])!=NIT_NULL);
+  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, 4021);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALoopExpr____n_kwloop(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:4022 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4023 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ALoopExpr____n_block(fra.me.REG[0]);
-    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*/;
+    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, 4023);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:4025 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4026 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
+    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, 4026);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -21338,7 +21645,7 @@ void parser___parser_prod___AForExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -21348,7 +21655,7 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 4033;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___init_aforexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -21356,6 +21663,7 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -21363,21 +21671,23 @@ 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:4033 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4042 */
-  CALL_parser___parser_prod___AForExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AForExpr___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:4043 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4043);
   }
-  ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4044 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4044);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___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:4050 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -21385,28 +21695,28 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4050);
   }
-  ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[7]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:4051 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4051);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:4052 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4052);
   }
-  ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:4053 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4053);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:4054 */
-  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:4055 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21427,10 +21737,10 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4056);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:4058 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:4059 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -21451,7 +21761,7 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4060);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -21482,15 +21792,15 @@ void parser___parser_prod___AForExpr___init_aforexpr(val_t p0, val_t p1, val_t p
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 4046);
     }
     /* ./parser//parser_prod.nit:4047 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(closctx->REG[0])!=NIT_NULL);
+    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, 4047);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AForExpr____n_ids(closctx->REG[0]);
+    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:4048 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -21574,11 +21884,16 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:4076 */
       REGB2 = REGB0;
@@ -21589,7 +21904,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
         nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4077);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -21631,7 +21946,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4080);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:4081 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -21646,19 +21961,19 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 4083);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:4085 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -21870,7 +22185,7 @@ void parser___parser_prod___AForExpr___replace_child(val_t p0, val_t p1, val_t p
   return;
 }
 void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -21879,93 +22194,96 @@ void parser___parser_prod___AForExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 4130;
   fra.me.meth = LOCATE_parser___parser_prod___AForExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4130 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4132 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0])!=NIT_NULL);
+  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, 4132);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____n_kwfor(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:4133 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_ids(fra.me.REG[0])!=NIT_NULL);
+  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, 4133);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____n_ids(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___AForExpr___visit_all_1));
+  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:4136 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  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, 4136);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____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]);
+  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:4137 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0])!=NIT_NULL);
+  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, 4137);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____n_kwdo(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:4138 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4139 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AForExpr____n_block(fra.me.REG[0]);
-    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*/;
+    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, 4139);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:4141 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4142 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
+    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, 4142);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -22009,7 +22327,7 @@ void parser___parser_prod___AAssertExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -22019,34 +22337,37 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
   fra.me.line = 4149;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___init_aassertexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:4149 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4156 */
-  CALL_parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAssertExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:4157 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4157);
   }
-  ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4158 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4158);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:4159 */
-  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4160 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22067,7 +22388,7 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4161);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   }
   /* ./parser//parser_prod.nit:4163 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -22075,15 +22396,15 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4163);
   }
-  ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:4164 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4164);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:4165 */
-  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:4166 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -22104,7 +22425,7 @@ void parser___parser_prod___AAssertExpr___init_aassertexpr(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4167);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___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;
@@ -22335,7 +22656,7 @@ void parser___parser_prod___AAssertExpr___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -22344,77 +22665,80 @@ void parser___parser_prod___AAssertExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 4215;
   fra.me.meth = LOCATE_parser___parser_prod___AAssertExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4215 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4217 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0])!=NIT_NULL);
+  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, 4217);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____n_kwassert(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:4218 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4219 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____n_id(fra.me.REG[0]);
-    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*/;
+    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, 4219);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:4221 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AAssertExpr____n_expr(fra.me.REG[0])!=NIT_NULL);
+  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, 4221);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____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]);
+  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:4222 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:4223 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AAssertExpr____n_else(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AExpr, ID_parser___parser_nodes___AExpr)) /*cast AExpr*/;
+    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, 4223);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -22438,7 +22762,7 @@ void parser___parser_prod___AOnceExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos134]) return;
@@ -22447,41 +22771,44 @@ void parser___parser_prod___AOnceExpr___init_aonceexpr(val_t p0, val_t p1, val_t
   fra.me.line = 4230;
   fra.me.meth = LOCATE_parser___parser_prod___AOnceExpr___init_aonceexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4230 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4235 */
-  CALL_parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AOnceExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4236 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4236);
   }
-  ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AOnceExpr____n_kwonce(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4237 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4237);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4238 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4238);
   }
-  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4239 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4239);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos134] = 1;
   return;
@@ -22661,7 +22988,7 @@ void parser___parser_prod___ASendExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos136]) return;
@@ -22670,26 +22997,29 @@ void parser___parser_prod___ASendExpr___init_asendexpr(val_t p0, val_t p1, int*
   fra.me.line = 4275;
   fra.me.meth = LOCATE_parser___parser_prod___ASendExpr___init_asendexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:4275 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4279 */
-  CALL_parser___parser_prod___ASendExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASendExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:4280 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4280);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4281 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4281);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos136] = 1;
   return;
@@ -22810,7 +23140,7 @@ void parser___parser_prod___ABinopExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos138]) return;
@@ -22819,41 +23149,44 @@ void parser___parser_prod___ABinopExpr___init_abinopexpr(val_t p0, val_t p1, val
   fra.me.line = 4306;
   fra.me.meth = LOCATE_parser___parser_prod___ABinopExpr___init_abinopexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4306 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4311 */
-  CALL_parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABinopExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4312 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4312);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4313 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4313);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4314 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4314);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4315 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4315);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos138] = 1;
   return;
@@ -23033,7 +23366,7 @@ void parser___parser_prod___AOrExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos140]) return;
@@ -23042,41 +23375,44 @@ void parser___parser_prod___AOrExpr___init_aorexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4351;
   fra.me.meth = LOCATE_parser___parser_prod___AOrExpr___init_aorexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4351 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4356 */
-  CALL_parser___parser_prod___AOrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AOrExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4357 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4357);
   }
-  ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AOrExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4358 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4358);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4359 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4359);
   }
-  ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AOrExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4360 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4360);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos140] = 1;
   return;
@@ -23256,7 +23592,7 @@ void parser___parser_prod___AAndExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos142]) return;
@@ -23265,41 +23601,44 @@ void parser___parser_prod___AAndExpr___init_aandexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 4396;
   fra.me.meth = LOCATE_parser___parser_prod___AAndExpr___init_aandexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4396 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4401 */
-  CALL_parser___parser_prod___AAndExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAndExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4402 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4402);
   }
-  ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAndExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4403 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4403);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4404 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4404);
   }
-  ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAndExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4405 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4405);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos142] = 1;
   return;
@@ -23479,7 +23818,7 @@ void parser___parser_prod___AOrElseExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos144]) return;
@@ -23488,41 +23827,44 @@ void parser___parser_prod___AOrElseExpr___init_aorelseexpr(val_t p0, val_t p1, v
   fra.me.line = 4441;
   fra.me.meth = LOCATE_parser___parser_prod___AOrElseExpr___init_aorelseexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4441 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4446 */
-  CALL_parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AOrElseExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4447 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4447);
   }
-  ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./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_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4449 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4449);
   }
-  ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AOrElseExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4450 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4450);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos144] = 1;
   return;
@@ -23702,7 +24044,7 @@ void parser___parser_prod___ANotExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos146]) return;
@@ -23711,41 +24053,44 @@ void parser___parser_prod___ANotExpr___init_anotexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 4486;
   fra.me.meth = LOCATE_parser___parser_prod___ANotExpr___init_anotexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4486 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4491 */
-  CALL_parser___parser_prod___ANotExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANotExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4492 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4492);
   }
-  ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ANotExpr____n_kwnot(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4493 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4493);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4494 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4494);
   }
-  ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ANotExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4495 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4495);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos146] = 1;
   return;
@@ -23925,7 +24270,7 @@ void parser___parser_prod___AEqExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos148]) return;
@@ -23934,41 +24279,44 @@ void parser___parser_prod___AEqExpr___init_aeqexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4531;
   fra.me.meth = LOCATE_parser___parser_prod___AEqExpr___init_aeqexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4531 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4536 */
-  CALL_parser___parser_prod___AEqExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AEqExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4537 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4537);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4538 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4538);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4539 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4539);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4540 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4540);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos148] = 1;
   return;
@@ -24148,7 +24496,7 @@ void parser___parser_prod___AEeExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos150]) return;
@@ -24157,41 +24505,44 @@ void parser___parser_prod___AEeExpr___init_aeeexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4576;
   fra.me.meth = LOCATE_parser___parser_prod___AEeExpr___init_aeeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4576 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4581 */
-  CALL_parser___parser_prod___AEeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AEeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4582 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4582);
   }
-  ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AEeExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4583 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4583);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4584 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4584);
   }
-  ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AEeExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4585 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4585);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos150] = 1;
   return;
@@ -24371,7 +24722,7 @@ void parser___parser_prod___ANeExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos152]) return;
@@ -24380,41 +24731,44 @@ void parser___parser_prod___ANeExpr___init_aneexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4621;
   fra.me.meth = LOCATE_parser___parser_prod___ANeExpr___init_aneexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4621 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4626 */
-  CALL_parser___parser_prod___ANeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4627 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4627);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4628 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4628);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4629 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4629);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4630 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4630);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos152] = 1;
   return;
@@ -24594,7 +24948,7 @@ void parser___parser_prod___ALtExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos154]) return;
@@ -24603,41 +24957,44 @@ void parser___parser_prod___ALtExpr___init_altexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4666;
   fra.me.meth = LOCATE_parser___parser_prod___ALtExpr___init_altexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4666 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4671 */
-  CALL_parser___parser_prod___ALtExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALtExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4672 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4672);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4673 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4673);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4674 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4674);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4675 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4675);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos154] = 1;
   return;
@@ -24817,7 +25174,7 @@ void parser___parser_prod___ALeExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos156]) return;
@@ -24826,41 +25183,44 @@ void parser___parser_prod___ALeExpr___init_aleexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4711;
   fra.me.meth = LOCATE_parser___parser_prod___ALeExpr___init_aleexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4711 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4716 */
-  CALL_parser___parser_prod___ALeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4717 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4717);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4718 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4718);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4719 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4719);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4720 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4720);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos156] = 1;
   return;
@@ -25040,7 +25400,7 @@ void parser___parser_prod___ALlExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos158]) return;
@@ -25049,41 +25409,44 @@ void parser___parser_prod___ALlExpr___init_allexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4756;
   fra.me.meth = LOCATE_parser___parser_prod___ALlExpr___init_allexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4756 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4761 */
-  CALL_parser___parser_prod___ALlExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALlExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4762 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4762);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4763 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4763);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4764 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4764);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4765 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4765);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos158] = 1;
   return;
@@ -25263,7 +25626,7 @@ void parser___parser_prod___AGtExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos160]) return;
@@ -25272,41 +25635,44 @@ void parser___parser_prod___AGtExpr___init_agtexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4801;
   fra.me.meth = LOCATE_parser___parser_prod___AGtExpr___init_agtexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4801 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4806 */
-  CALL_parser___parser_prod___AGtExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGtExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4807 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4807);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4808 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4808);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4809 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4809);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4810 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4810);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos160] = 1;
   return;
@@ -25486,7 +25852,7 @@ void parser___parser_prod___AGeExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos162]) return;
@@ -25495,41 +25861,44 @@ void parser___parser_prod___AGeExpr___init_ageexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4846;
   fra.me.meth = LOCATE_parser___parser_prod___AGeExpr___init_ageexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4846 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4851 */
-  CALL_parser___parser_prod___AGeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4852 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4852);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4853 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4853);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4854 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4854);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4855 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4855);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos162] = 1;
   return;
@@ -25709,7 +26078,7 @@ void parser___parser_prod___AGgExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos164]) return;
@@ -25718,41 +26087,44 @@ void parser___parser_prod___AGgExpr___init_aggexpr(val_t p0, val_t p1, val_t p2,
   fra.me.line = 4891;
   fra.me.meth = LOCATE_parser___parser_prod___AGgExpr___init_aggexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4891 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4896 */
-  CALL_parser___parser_prod___AGgExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AGgExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4897 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4897);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4898 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4898);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4899 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4899);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4900 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4900);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos164] = 1;
   return;
@@ -25932,7 +26304,7 @@ void parser___parser_prod___AIsaExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos166]) return;
@@ -25941,41 +26313,44 @@ void parser___parser_prod___AIsaExpr___init_aisaexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 4936;
   fra.me.meth = LOCATE_parser___parser_prod___AIsaExpr___init_aisaexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4936 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4941 */
-  CALL_parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIsaExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4942 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4942);
   }
-  ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIsaExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4943 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4943);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4944 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4944);
   }
-  ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AIsaExpr____n_type(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4945 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4945);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos166] = 1;
   return;
@@ -26155,7 +26530,7 @@ void parser___parser_prod___APlusExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos168]) return;
@@ -26164,41 +26539,44 @@ void parser___parser_prod___APlusExpr___init_aplusexpr(val_t p0, val_t p1, val_t
   fra.me.line = 4981;
   fra.me.meth = LOCATE_parser___parser_prod___APlusExpr___init_aplusexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:4981 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:4986 */
-  CALL_parser___parser_prod___APlusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APlusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:4987 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4987);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:4988 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4988);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:4989 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 4989);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:4990 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 4990);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos168] = 1;
   return;
@@ -26378,7 +26756,7 @@ void parser___parser_prod___AMinusExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos170]) return;
@@ -26387,41 +26765,44 @@ void parser___parser_prod___AMinusExpr___init_aminusexpr(val_t p0, val_t p1, val
   fra.me.line = 5026;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusExpr___init_aminusexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5026 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5031 */
-  CALL_parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AMinusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5032 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5032);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5033 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5033);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5034 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5034);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5035 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5035);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos170] = 1;
   return;
@@ -26601,7 +26982,7 @@ void parser___parser_prod___AStarshipExpr___empty_init(val_t p0, int* init_table
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos172]) return;
@@ -26610,41 +26991,44 @@ void parser___parser_prod___AStarshipExpr___init_astarshipexpr(val_t p0, val_t p
   fra.me.line = 5071;
   fra.me.meth = LOCATE_parser___parser_prod___AStarshipExpr___init_astarshipexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5071 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5076 */
-  CALL_parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStarshipExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5077 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5077);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5078 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5078);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5079 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5079);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5080 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5080);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos172] = 1;
   return;
@@ -26824,7 +27208,7 @@ void parser___parser_prod___AStarExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos174]) return;
@@ -26833,41 +27217,44 @@ void parser___parser_prod___AStarExpr___init_astarexpr(val_t p0, val_t p1, val_t
   fra.me.line = 5116;
   fra.me.meth = LOCATE_parser___parser_prod___AStarExpr___init_astarexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5116 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5121 */
-  CALL_parser___parser_prod___AStarExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStarExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5122 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5122);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5123 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5123);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5124 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5124);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5125 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5125);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos174] = 1;
   return;
@@ -27047,7 +27434,7 @@ void parser___parser_prod___ASlashExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos176]) return;
@@ -27056,41 +27443,44 @@ void parser___parser_prod___ASlashExpr___init_aslashexpr(val_t p0, val_t p1, val
   fra.me.line = 5161;
   fra.me.meth = LOCATE_parser___parser_prod___ASlashExpr___init_aslashexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5161 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5166 */
-  CALL_parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASlashExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5167 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5167);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5168 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5168);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5169 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5169);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5170 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5170);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos176] = 1;
   return;
@@ -27270,7 +27660,7 @@ void parser___parser_prod___APercentExpr___empty_init(val_t p0, int* init_table)
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos178]) return;
@@ -27279,41 +27669,44 @@ void parser___parser_prod___APercentExpr___init_apercentexpr(val_t p0, val_t p1,
   fra.me.line = 5206;
   fra.me.meth = LOCATE_parser___parser_prod___APercentExpr___init_apercentexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5206 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5211 */
-  CALL_parser___parser_prod___APercentExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APercentExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5212 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5212);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5213 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5213);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5214 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5214);
   }
-  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ABinopExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5215 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5215);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos178] = 1;
   return;
@@ -27493,7 +27886,7 @@ void parser___parser_prod___AUminusExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos180]) return;
@@ -27502,41 +27895,44 @@ void parser___parser_prod___AUminusExpr___init_auminusexpr(val_t p0, val_t p1, v
   fra.me.line = 5251;
   fra.me.meth = LOCATE_parser___parser_prod___AUminusExpr___init_auminusexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5251 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5256 */
-  CALL_parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AUminusExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5257 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5257);
   }
-  ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AUminusExpr____n_minus(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5258 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5258);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5259 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5259);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5260 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5260);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos180] = 1;
   return;
@@ -27716,7 +28112,7 @@ void parser___parser_prod___ANewExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -27726,47 +28122,50 @@ void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 5296;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___init_anewexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5296 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5303 */
-  CALL_parser___parser_prod___ANewExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANewExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:5304 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5304);
   }
-  ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5305 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5305);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5306 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5306);
   }
-  ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5307 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5307);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5308 */
-  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:5309 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -27787,7 +28186,7 @@ void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5310);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+    CALL_parser___parser_prod___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___ANewExpr___init_anewexpr_1));
   stack_frame_head = fra.me.prev;
@@ -27819,15 +28218,15 @@ void parser___parser_prod___ANewExpr___init_anewexpr(val_t p0, val_t p1, val_t p
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5313);
     }
     /* ./parser//parser_prod.nit:5314 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5314);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ANewExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ANewExpr____n_args(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:5315 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -28012,11 +28411,16 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5351 */
       REGB2 = REGB0;
@@ -28027,7 +28431,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5352);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -28069,7 +28473,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5355);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5356 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -28084,19 +28488,19 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5358);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5360 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -28106,7 +28510,7 @@ void parser___parser_prod___ANewExpr___replace_child(val_t p0, val_t p1, val_t p
   return;
 }
 void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -28115,61 +28519,64 @@ void parser___parser_prod___ANewExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 5365;
   fra.me.meth = LOCATE_parser___parser_prod___ANewExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5365 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5367 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0])!=NIT_NULL);
+  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, 5367);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____n_kwnew(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:5368 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_type(fra.me.REG[0])!=NIT_NULL);
+  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, 5368);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____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]);
+  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:5369 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:5370 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____n_id(fra.me.REG[0]);
-    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*/;
+    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, 5370);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:5372 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ANewExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  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, 5372);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ANewExpr____n_args(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___ANewExpr___visit_all_1));
+  fra.me.REG[2] = ATTR_parser___parser_nodes___ANewExpr____n_args(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___ANewExpr___visit_all_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -28212,7 +28619,7 @@ void parser___parser_prod___AAttrExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos184]) return;
@@ -28221,41 +28628,44 @@ void parser___parser_prod___AAttrExpr___init_aattrexpr(val_t p0, val_t p1, val_t
   fra.me.line = 5380;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrExpr___init_aattrexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:5380 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5385 */
-  CALL_parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAttrExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:5386 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5386);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5387 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5387);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:5388 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5388);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5389 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5389);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos184] = 1;
   return;
@@ -28435,7 +28845,7 @@ void parser___parser_prod___AAttrAssignExpr___empty_init(val_t p0, int* init_tab
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos186]) return;
@@ -28444,71 +28854,74 @@ void parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr(val_t p0, val
   fra.me.line = 5425;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrAssignExpr___init_aattrassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5425 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5432 */
-  CALL_parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAttrAssignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:5433 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5433);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5434 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5434);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5435 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5435);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5436 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5436);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5437 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5437);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:5438 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5438);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5439 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5439);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:5440 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5440);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -28804,7 +29217,7 @@ void parser___parser_prod___AAttrReassignExpr___empty_init(val_t p0, int* init_t
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos188]) return;
@@ -28813,71 +29226,74 @@ void parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr(val_t p0,
   fra.me.line = 5498;
   fra.me.meth = LOCATE_parser___parser_prod___AAttrReassignExpr___init_aattrreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5498 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5505 */
-  CALL_parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAttrReassignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:5506 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5506);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5507 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5507);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5508 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5508);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5509 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5509);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5510 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5510);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:5511 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5511);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5512 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5512);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:5513 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5513);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -29173,7 +29589,7 @@ void parser___parser_prod___ACallExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos190]) return;
@@ -29182,45 +29598,48 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
   fra.me.line = 5571;
   fra.me.meth = LOCATE_parser___parser_prod___ACallExpr___init_acallexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:5571 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5578 */
-  CALL_parser___parser_prod___ACallExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACallExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:5579 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5579);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5580 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5580);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:5581 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5581);
   }
-  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5582 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5582);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___ACallExpr___init_acallexpr_1));
   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_2));
   stack_frame_head = fra.me.prev;
@@ -29252,15 +29671,15 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5584);
     }
     /* ./parser//parser_prod.nit:5585 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5585);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(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:5586 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -29289,15 +29708,15 @@ void parser___parser_prod___ACallExpr___init_acallexpr(val_t p0, val_t p1, val_t
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5589);
     }
     /* ./parser//parser_prod.nit:5590 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    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, 5590);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0]);
+    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:5591 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -29431,11 +29850,16 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5617 */
       REGB2 = REGB0;
@@ -29446,7 +29870,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5618);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -29488,7 +29912,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5621);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5622 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -29503,19 +29927,19 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5624);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5626 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -29529,11 +29953,16 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5629 */
       REGB2 = REGB0;
@@ -29544,7 +29973,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5630);
       }
       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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -29586,7 +30015,7 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5633);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5634 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -29601,19 +30030,19 @@ void parser___parser_prod___ACallExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 5636);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5638 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -29731,7 +30160,7 @@ void parser___parser_prod___ACallAssignExpr___empty_init(val_t p0, int* init_tab
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos192]) return;
@@ -29740,47 +30169,50 @@ void parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val
   fra.me.line = 5658;
   fra.me.meth = LOCATE_parser___parser_prod___ACallAssignExpr___init_acallassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:5658 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5666 */
-  CALL_parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACallAssignExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:5667 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5667);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5668 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5668);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:5669 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5669);
   }
-  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5670 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5670);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___ACallAssignExpr___init_acallassignexpr_1));
   /* ./parser//parser_prod.nit:5676 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
@@ -29788,26 +30220,26 @@ void parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5676);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:5677 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5677);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:5678 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5678);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:5679 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5679);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -29837,15 +30269,15 @@ void parser___parser_prod___ACallAssignExpr___init_acallassignexpr(val_t p0, val
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5672);
     }
     /* ./parser//parser_prod.nit:5673 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[6])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5673);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____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:5674 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[6]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -29979,11 +30411,16 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5704 */
       REGB2 = REGB0;
@@ -29994,7 +30431,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5705);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -30036,7 +30473,7 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5708);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5709 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -30051,19 +30488,19 @@ void parser___parser_prod___ACallAssignExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5711);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5713 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -30269,7 +30706,7 @@ void parser___parser_prod___ACallReassignExpr___empty_init(val_t p0, int* init_t
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos194]) return;
@@ -30278,47 +30715,50 @@ void parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0,
   fra.me.line = 5752;
   fra.me.meth = LOCATE_parser___parser_prod___ACallReassignExpr___init_acallreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
+  /* ./parser//parser_prod.nit:5752 */
+  fra.me.REG[6] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5760 */
-  CALL_parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACallReassignExpr___empty_init(fra.me.REG[6])(fra.me.REG[6], init_table);
   /* ./parser//parser_prod.nit:5761 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5761);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[6]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5762 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5762);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:5763 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5763);
   }
-  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ACallFormExpr____n_id(fra.me.REG[6]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5764 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5764);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___ACallReassignExpr___init_acallreassignexpr_1));
   /* ./parser//parser_prod.nit:5770 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
@@ -30326,26 +30766,26 @@ void parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0,
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5770);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[6]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:5771 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5771);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   /* ./parser//parser_prod.nit:5772 */
   REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5772);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[6]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:5773 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5773);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -30375,15 +30815,15 @@ void parser___parser_prod___ACallReassignExpr___init_acallreassignexpr(val_t p0,
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5766);
     }
     /* ./parser//parser_prod.nit:5767 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[6])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5767);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ACallFormExpr____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:5768 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[6]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -30517,11 +30957,16 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5798 */
       REGB2 = REGB0;
@@ -30532,7 +30977,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5799);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -30574,7 +31019,7 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5802);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5803 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -30589,19 +31034,19 @@ void parser___parser_prod___ACallReassignExpr___replace_child(val_t p0, val_t p1
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5805);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ACallFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5807 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -30807,7 +31252,7 @@ void parser___parser_prod___ASuperExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -30817,19 +31262,22 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
   fra.me.line = 5846;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___init_asuperexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5846 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5852 */
-  CALL_parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASuperExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:5853 */
-  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5854 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -30850,7 +31298,7 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5855);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:5857 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
@@ -30858,13 +31306,13 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5857);
   }
-  ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5858 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5858);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___ASuperExpr___init_asuperexpr_1));
   stack_frame_head = fra.me.prev;
   init_table[itpos196] = 1;
@@ -30895,15 +31343,15 @@ void parser___parser_prod___ASuperExpr___init_asuperexpr(val_t p0, val_t p1, val
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5860);
     }
     /* ./parser//parser_prod.nit:5861 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5861);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ASuperExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ASuperExpr____n_args(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:5862 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -31038,11 +31486,16 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5888 */
       REGB2 = REGB0;
@@ -31053,7 +31506,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5889);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -31095,7 +31548,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5892);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5893 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -31110,19 +31563,19 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5895);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5897 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -31132,7 +31585,7 @@ void parser___parser_prod___ASuperExpr___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -31141,53 +31594,56 @@ void parser___parser_prod___ASuperExpr___visit_all(val_t p0, val_t p1){
   fra.me.line = 5902;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExpr___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:5902 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5904 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:5905 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperExpr____n_qualified(fra.me.REG[0]);
-    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*/;
+    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, 5905);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:5907 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0])!=NIT_NULL);
+  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, 5907);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperExpr____n_kwsuper(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:5908 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASuperExpr____n_args(fra.me.REG[0])!=NIT_NULL);
+  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, 5908);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___ASuperExpr____n_args(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___ASuperExpr___visit_all_1));
+  fra.me.REG[2] = ATTR_parser___parser_nodes___ASuperExpr____n_args(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___ASuperExpr___visit_all_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -31230,7 +31686,7 @@ void parser___parser_prod___AInitExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos198]) return;
@@ -31239,43 +31695,46 @@ void parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t
   fra.me.line = 5916;
   fra.me.meth = LOCATE_parser___parser_prod___AInitExpr___init_ainitexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5916 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5922 */
-  CALL_parser___parser_prod___AInitExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AInitExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:5923 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5923);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5924 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5924);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:5925 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5925);
   }
-  ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AInitExpr____n_kwinit(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:5926 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5926);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___AInitExpr___init_ainitexpr_1));
   stack_frame_head = fra.me.prev;
   init_table[itpos198] = 1;
@@ -31306,15 +31765,15 @@ void parser___parser_prod___AInitExpr___init_ainitexpr(val_t p0, val_t p1, val_t
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5928);
     }
     /* ./parser//parser_prod.nit:5929 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AInitExpr____n_args(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5929);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AInitExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AInitExpr____n_args(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:5930 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -31448,11 +31907,16 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:5956 */
       REGB2 = REGB0;
@@ -31463,7 +31927,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5957);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -31505,7 +31969,7 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5960);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:5961 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -31520,19 +31984,19 @@ void parser___parser_prod___AInitExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5963);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AInitExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:5965 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -31622,7 +32086,7 @@ void parser___parser_prod___ABraExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos200]) return;
@@ -31631,30 +32095,33 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
   fra.me.line = 5982;
   fra.me.meth = LOCATE_parser___parser_prod___ABraExpr___init_abraexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:5982 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:5988 */
-  CALL_parser___parser_prod___ABraExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABraExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:5989 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 5989);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:5990 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 5990);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___ABraExpr___init_abraexpr_1));
   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_2));
   stack_frame_head = fra.me.prev;
@@ -31686,15 +32153,15 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5992);
     }
     /* ./parser//parser_prod.nit:5993 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 5993);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(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:5994 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -31723,15 +32190,15 @@ void parser___parser_prod___ABraExpr___init_abraexpr(val_t p0, val_t p1, val_t p
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 5997);
     }
     /* ./parser//parser_prod.nit:5998 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    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, 5998);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(closctx->REG[0]);
+    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:5999 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -31815,11 +32282,16 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6015 */
       REGB2 = REGB0;
@@ -31830,7 +32302,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6016);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -31872,7 +32344,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6019);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6020 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -31887,19 +32359,19 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6022);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6024 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -31913,11 +32385,16 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6027 */
       REGB2 = REGB0;
@@ -31928,7 +32405,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
         nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6028);
       }
       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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -31970,7 +32447,7 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6031);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6032 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -31985,19 +32462,19 @@ void parser___parser_prod___ABraExpr___replace_child(val_t p0, val_t p1, val_t p
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6034);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASendExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6036 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -32107,7 +32584,7 @@ void parser___parser_prod___ABraAssignExpr___empty_init(val_t p0, int* init_tabl
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos202]) return;
@@ -32116,32 +32593,35 @@ void parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t
   fra.me.line = 6055;
   fra.me.meth = LOCATE_parser___parser_prod___ABraAssignExpr___init_abraassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:6055 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6062 */
-  CALL_parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABraAssignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:6063 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6063);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6064 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6064);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraAssignExpr___init_abraassignexpr_1));
   /* ./parser//parser_prod.nit:6070 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -32149,26 +32629,26 @@ void parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6070);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:6071 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6071);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:6072 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6072);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:6073 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6073);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -32198,15 +32678,15 @@ void parser___parser_prod___ABraAssignExpr___init_abraassignexpr(val_t p0, val_t
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6066);
     }
     /* ./parser//parser_prod.nit:6067 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6067);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(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:6068 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -32290,11 +32770,16 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6088 */
       REGB2 = REGB0;
@@ -32305,7 +32790,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6089);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -32347,7 +32832,7 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6092);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6093 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -32362,19 +32847,19 @@ void parser___parser_prod___ABraAssignExpr___replace_child(val_t p0, val_t p1, v
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6095);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6097 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -32572,7 +33057,7 @@ void parser___parser_prod___ABraReassignExpr___empty_init(val_t p0, int* init_ta
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos204]) return;
@@ -32581,32 +33066,35 @@ void parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, v
   fra.me.line = 6135;
   fra.me.meth = LOCATE_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:6135 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6142 */
-  CALL_parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABraReassignExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:6143 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6143);
   }
-  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASendExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6144 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6144);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_parser___parser_prod___ABraReassignExpr___init_abrareassignexpr_1));
   /* ./parser//parser_prod.nit:6150 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -32614,26 +33102,26 @@ void parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6150);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:6151 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6151);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:6152 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6152);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:6153 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6153);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -32663,15 +33151,15 @@ void parser___parser_prod___ABraReassignExpr___init_abrareassignexpr(val_t p0, v
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6146);
     }
     /* ./parser//parser_prod.nit:6147 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[5])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6147);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(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:6148 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -32755,11 +33243,16 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6168 */
       REGB2 = REGB0;
@@ -32770,7 +33263,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6169);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -32812,7 +33305,7 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6172);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6173 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -32827,19 +33320,19 @@ void parser___parser_prod___ABraReassignExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6175);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ABraFormExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6177 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -33037,7 +33530,7 @@ void parser___parser_prod___AClosureCallExpr___empty_init(val_t p0, int* init_ta
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos206]) return;
@@ -33046,30 +33539,33 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
   fra.me.line = 6215;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6215 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6221 */
-  CALL_parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AClosureCallExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:6222 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6222);
   }
-  ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AClosureCallExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6223 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6223);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___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___AClosureCallExpr___init_aclosurecallexpr_1));
   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_2));
   stack_frame_head = fra.me.prev;
@@ -33101,15 +33597,15 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6225);
     }
     /* ./parser//parser_prod.nit:6226 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_args(closctx->REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_args(closctx->REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6226);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(closctx->REG[0]);
+    fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(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:6227 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -33138,15 +33634,15 @@ void parser___parser_prod___AClosureCallExpr___init_aclosurecallexpr(val_t p0, v
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 6230);
     }
     /* ./parser//parser_prod.nit:6231 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[0])!=NIT_NULL);
+    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, 6231);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(closctx->REG[0]);
+    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:6232 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -33230,11 +33726,16 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6248 */
       REGB2 = REGB0;
@@ -33245,7 +33746,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
         nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6249);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -33287,7 +33788,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6252);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6253 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -33302,19 +33803,19 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_args", LOCATE_parser___parser_prod, 6255);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_args(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6257 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -33328,11 +33829,16 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6260 */
       REGB2 = REGB0;
@@ -33343,7 +33849,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
         nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6261);
       }
       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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -33385,7 +33891,7 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6264);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6265 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -33400,19 +33906,19 @@ void parser___parser_prod___AClosureCallExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_closure_defs", LOCATE_parser___parser_prod, 6267);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureCallExpr____n_closure_defs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6269 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
@@ -33522,7 +34028,7 @@ void parser___parser_prod___AVarExpr___empty_init(val_t p0, int* init_table){
 }
 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;
-  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 tmp;
   if (init_table[itpos208]) return;
@@ -33531,26 +34037,29 @@ void parser___parser_prod___AVarExpr___init_avarexpr(val_t p0, val_t p1, int* in
   fra.me.line = 6288;
   fra.me.meth = LOCATE_parser___parser_prod___AVarExpr___init_avarexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6288 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6292 */
-  CALL_parser___parser_prod___AVarExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AVarExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6293 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6293);
   }
-  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6294 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6294);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos208] = 1;
   return;
@@ -33671,7 +34180,7 @@ void parser___parser_prod___AVarAssignExpr___empty_init(val_t p0, int* init_tabl
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos210]) return;
@@ -33680,56 +34189,59 @@ void parser___parser_prod___AVarAssignExpr___init_avarassignexpr(val_t p0, val_t
   fra.me.line = 6319;
   fra.me.meth = LOCATE_parser___parser_prod___AVarAssignExpr___init_avarassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6319 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6325 */
-  CALL_parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AVarAssignExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:6326 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6326);
   }
-  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6327 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6327);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:6328 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6328);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_assign(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:6329 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6329);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:6330 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6330);
   }
-  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAssignFormExpr____n_value(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:6331 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6331);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -33967,7 +34479,7 @@ void parser___parser_prod___AVarReassignExpr___empty_init(val_t p0, int* init_ta
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos212]) return;
@@ -33976,56 +34488,59 @@ void parser___parser_prod___AVarReassignExpr___init_avarreassignexpr(val_t p0, v
   fra.me.line = 6378;
   fra.me.meth = LOCATE_parser___parser_prod___AVarReassignExpr___init_avarreassignexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:6378 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6384 */
-  CALL_parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AVarReassignExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:6385 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6385);
   }
-  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AVarFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6386 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6386);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:6387 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6387);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_assign_op(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:6388 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6388);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:6389 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6389);
   }
-  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AReassignFormExpr____n_value(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:6390 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6390);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -34263,7 +34778,7 @@ void parser___parser_prod___ARangeExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos214 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ARangeExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos214]) return;
@@ -34272,41 +34787,44 @@ void parser___parser_prod___ARangeExpr___init_arangeexpr(val_t p0, val_t p1, val
   fra.me.line = 6437;
   fra.me.meth = LOCATE_parser___parser_prod___ARangeExpr___init_arangeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6437 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6442 */
-  CALL_parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ARangeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:6443 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6443);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6444 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6444);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:6445 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6445);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:6446 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6446);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos214] = 1;
   return;
@@ -34486,7 +35004,7 @@ void parser___parser_prod___ACrangeExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos216 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACrangeExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos216]) return;
@@ -34495,41 +35013,44 @@ void parser___parser_prod___ACrangeExpr___init_acrangeexpr(val_t p0, val_t p1, v
   fra.me.line = 6482;
   fra.me.meth = LOCATE_parser___parser_prod___ACrangeExpr___init_acrangeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6482 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6487 */
-  CALL_parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACrangeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:6488 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6488);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6489 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6489);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:6490 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6490);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:6491 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6491);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos216] = 1;
   return;
@@ -34709,7 +35230,7 @@ void parser___parser_prod___AOrangeExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos218 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AOrangeExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos218]) return;
@@ -34718,41 +35239,44 @@ void parser___parser_prod___AOrangeExpr___init_aorangeexpr(val_t p0, val_t p1, v
   fra.me.line = 6527;
   fra.me.meth = LOCATE_parser___parser_prod___AOrangeExpr___init_aorangeexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:6527 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6532 */
-  CALL_parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AOrangeExpr___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:6533 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6533);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6534 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6534);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   /* ./parser//parser_prod.nit:6535 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6535);
   }
-  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ARangeExpr____n_expr2(fra.me.REG[3]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:6536 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6536);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  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[itpos218] = 1;
   return;
@@ -35019,11 +35543,16 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
   }
   fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6586 */
       REGB2 = REGB0;
@@ -35034,7 +35563,7 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6587);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -35076,7 +35605,7 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6590);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6591 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -35091,19 +35620,19 @@ void parser___parser_prod___AArrayExpr___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6593);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AArrayExpr____n_exprs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6595 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -35176,7 +35705,7 @@ void parser___parser_prod___ASelfExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1, 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[1];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos222]) return;
@@ -35185,26 +35714,29 @@ void parser___parser_prod___ASelfExpr___init_aselfexpr(val_t p0, val_t p1, int*
   fra.me.line = 6610;
   fra.me.meth = LOCATE_parser___parser_prod___ASelfExpr___init_aselfexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6610 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6614 */
-  CALL_parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASelfExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6615 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6615);
   }
-  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASelfExpr____n_kwself(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6616 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6616);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos222] = 1;
   return;
@@ -35390,7 +35922,7 @@ void parser___parser_prod___ATrueExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, int* init_table){
   int itpos226 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ATrueExpr].i;
-  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 tmp;
   if (init_table[itpos226]) return;
@@ -35399,26 +35931,29 @@ void parser___parser_prod___ATrueExpr___init_atrueexpr(val_t p0, val_t p1, int*
   fra.me.line = 6657;
   fra.me.meth = LOCATE_parser___parser_prod___ATrueExpr___init_atrueexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6657 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6661 */
-  CALL_parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ATrueExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6662 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6662);
   }
-  ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ATrueExpr____n_kwtrue(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6663 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6663);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos226] = 1;
   return;
@@ -35539,7 +36074,7 @@ void parser___parser_prod___AFalseExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, int* init_table){
   int itpos228 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFalseExpr].i;
-  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 tmp;
   if (init_table[itpos228]) return;
@@ -35548,26 +36083,29 @@ void parser___parser_prod___AFalseExpr___init_afalseexpr(val_t p0, val_t p1, int
   fra.me.line = 6688;
   fra.me.meth = LOCATE_parser___parser_prod___AFalseExpr___init_afalseexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6688 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6692 */
-  CALL_parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AFalseExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6693 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6693);
   }
-  ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AFalseExpr____n_kwfalse(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6694 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6694);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos228] = 1;
   return;
@@ -35688,7 +36226,7 @@ void parser___parser_prod___ANullExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, int* init_table){
   int itpos230 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ANullExpr].i;
-  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 tmp;
   if (init_table[itpos230]) return;
@@ -35697,26 +36235,29 @@ void parser___parser_prod___ANullExpr___init_anullexpr(val_t p0, val_t p1, int*
   fra.me.line = 6719;
   fra.me.meth = LOCATE_parser___parser_prod___ANullExpr___init_anullexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6719 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6723 */
-  CALL_parser___parser_prod___ANullExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ANullExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6724 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6724);
   }
-  ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ANullExpr____n_kwnull(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6725 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6725);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos230] = 1;
   return;
@@ -35837,7 +36378,7 @@ void parser___parser_prod___AIntExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, int* init_table){
   int itpos232 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AIntExpr].i;
-  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 tmp;
   if (init_table[itpos232]) return;
@@ -35846,26 +36387,29 @@ void parser___parser_prod___AIntExpr___init_aintexpr(val_t p0, val_t p1, int* in
   fra.me.line = 6750;
   fra.me.meth = LOCATE_parser___parser_prod___AIntExpr___init_aintexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6750 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6754 */
-  CALL_parser___parser_prod___AIntExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIntExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6755 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6755);
   }
-  ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIntExpr____n_number(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6756 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6756);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos232] = 1;
   return;
@@ -35986,7 +36530,7 @@ void parser___parser_prod___AFloatExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, int* init_table){
   int itpos234 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFloatExpr].i;
-  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 tmp;
   if (init_table[itpos234]) return;
@@ -35995,26 +36539,29 @@ void parser___parser_prod___AFloatExpr___init_afloatexpr(val_t p0, val_t p1, int
   fra.me.line = 6781;
   fra.me.meth = LOCATE_parser___parser_prod___AFloatExpr___init_afloatexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6781 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6785 */
-  CALL_parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AFloatExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6786 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6786);
   }
-  ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AFloatExpr____n_float(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6787 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6787);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos234] = 1;
   return;
@@ -36135,7 +36682,7 @@ void parser___parser_prod___ACharExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, int* init_table){
   int itpos236 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACharExpr].i;
-  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 tmp;
   if (init_table[itpos236]) return;
@@ -36144,26 +36691,29 @@ void parser___parser_prod___ACharExpr___init_acharexpr(val_t p0, val_t p1, int*
   fra.me.line = 6812;
   fra.me.meth = LOCATE_parser___parser_prod___ACharExpr___init_acharexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6812 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6816 */
-  CALL_parser___parser_prod___ACharExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACharExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6817 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6817);
   }
-  ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ACharExpr____n_char(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6818 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6818);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos236] = 1;
   return;
@@ -36284,7 +36834,7 @@ void parser___parser_prod___AStringExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, int* init_table){
   int itpos238 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AStringExpr].i;
-  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 tmp;
   if (init_table[itpos238]) return;
@@ -36293,26 +36843,29 @@ void parser___parser_prod___AStringExpr___init_astringexpr(val_t p0, val_t p1, i
   fra.me.line = 6843;
   fra.me.meth = LOCATE_parser___parser_prod___AStringExpr___init_astringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6843 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6847 */
-  CALL_parser___parser_prod___AStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6848 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6848);
   }
-  ATTR_parser___parser_nodes___AStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStringExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6849 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6849);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos238] = 1;
   return;
@@ -36433,7 +36986,7 @@ void parser___parser_prod___AStartStringExpr___empty_init(val_t p0, int* init_ta
 }
 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;
-  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 tmp;
   if (init_table[itpos240]) return;
@@ -36442,26 +36995,29 @@ void parser___parser_prod___AStartStringExpr___init_astartstringexpr(val_t p0, v
   fra.me.line = 6874;
   fra.me.meth = LOCATE_parser___parser_prod___AStartStringExpr___init_astartstringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6874 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6878 */
-  CALL_parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AStartStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6879 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6879);
   }
-  ATTR_parser___parser_nodes___AStartStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AStartStringExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6880 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6880);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos240] = 1;
   return;
@@ -36582,7 +37138,7 @@ void parser___parser_prod___AMidStringExpr___empty_init(val_t p0, int* init_tabl
 }
 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;
-  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 tmp;
   if (init_table[itpos242]) return;
@@ -36591,26 +37147,29 @@ void parser___parser_prod___AMidStringExpr___init_amidstringexpr(val_t p0, val_t
   fra.me.line = 6905;
   fra.me.meth = LOCATE_parser___parser_prod___AMidStringExpr___init_amidstringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6905 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6909 */
-  CALL_parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AMidStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6910 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6910);
   }
-  ATTR_parser___parser_nodes___AMidStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AMidStringExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6911 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6911);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos242] = 1;
   return;
@@ -36731,7 +37290,7 @@ void parser___parser_prod___AEndStringExpr___empty_init(val_t p0, int* init_tabl
 }
 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;
-  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 tmp;
   if (init_table[itpos244]) return;
@@ -36740,26 +37299,29 @@ void parser___parser_prod___AEndStringExpr___init_aendstringexpr(val_t p0, val_t
   fra.me.line = 6936;
   fra.me.meth = LOCATE_parser___parser_prod___AEndStringExpr___init_aendstringexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:6936 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:6940 */
-  CALL_parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AEndStringExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:6941 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 6941);
   }
-  ATTR_parser___parser_nodes___AEndStringExpr____n_string(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AEndStringExpr____n_string(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:6942 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 6942);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos244] = 1;
   return;
@@ -36967,11 +37529,16 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:6981 */
       REGB2 = REGB0;
@@ -36982,7 +37549,7 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
         nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6982);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -37024,7 +37591,7 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6985);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:6986 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -37039,19 +37606,19 @@ void parser___parser_prod___ASuperstringExpr___replace_child(val_t p0, val_t p1,
             nit_abort("Uninitialized attribute %s", "_n_exprs", LOCATE_parser___parser_prod, 6988);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ASuperstringExpr____n_exprs(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:6990 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -37124,7 +37691,7 @@ void parser___parser_prod___AParExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, int* init_table){
   int itpos248 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AParExpr].i;
-  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 tmp;
   if (init_table[itpos248]) return;
@@ -37133,26 +37700,29 @@ void parser___parser_prod___AParExpr___init_aparexpr(val_t p0, val_t p1, int* in
   fra.me.line = 7005;
   fra.me.meth = LOCATE_parser___parser_prod___AParExpr___init_aparexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7005 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7009 */
-  CALL_parser___parser_prod___AParExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AParExpr___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7010 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7010);
   }
-  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AProxyExpr____n_expr(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7011 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7011);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos248] = 1;
   return;
@@ -37273,7 +37843,7 @@ void parser___parser_prod___AAsCastExpr___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos250 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsCastExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos250]) return;
@@ -37282,56 +37852,59 @@ void parser___parser_prod___AAsCastExpr___init_aascastexpr(val_t p0, val_t p1, v
   fra.me.line = 7036;
   fra.me.meth = LOCATE_parser___parser_prod___AAsCastExpr___init_aascastexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7036 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7042 */
-  CALL_parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAsCastExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7043 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7043);
   }
-  ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAsCastExpr____n_expr(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7044 */
   REGB0 = TAG_Bool(fra.me.REG[1]==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[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7045 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7045);
   }
-  ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAsCastExpr____n_kwas(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7046 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7046);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7047 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7047);
   }
-  ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAsCastExpr____n_type(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7048 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7048);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos250] = 1;
   return;
@@ -37569,7 +38142,7 @@ void parser___parser_prod___AAsNotnullExpr___empty_init(val_t p0, int* init_tabl
 }
 void parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, int* init_table){
   int itpos252 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotnullExpr].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos252]) return;
@@ -37578,71 +38151,74 @@ void parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr(val_t p0, val_t
   fra.me.line = 7095;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotnullExpr___init_aasnotnullexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:7095 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7102 */
-  CALL_parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAsNotnullExpr___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:7103 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7103);
   }
-  ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_expr(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7104 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7104);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7105 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7105);
   }
-  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwas(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7106 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7106);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7107 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7107);
   }
-  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnot(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7108 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7108);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7109 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7109);
   }
-  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAsNotnullExpr____n_kwnull(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:7110 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7110);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
   init_table[itpos252] = 1;
   return;
@@ -37938,7 +38514,7 @@ void parser___parser_prod___AIssetAttrExpr___empty_init(val_t p0, int* init_tabl
 }
 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;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos254]) return;
@@ -37947,56 +38523,59 @@ void parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr(val_t p0, val_t
   fra.me.line = 7168;
   fra.me.meth = LOCATE_parser___parser_prod___AIssetAttrExpr___init_aissetattrexpr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7168 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7174 */
-  CALL_parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AIssetAttrExpr___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7175 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7175);
   }
-  ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AIssetAttrExpr____n_kwisset(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7176 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7176);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7177 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7177);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_expr(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7178 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7178);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7179 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7179);
   }
-  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAttrFormExpr____n_id(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7180 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7180);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___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;
   return;
@@ -38234,7 +38813,7 @@ void parser___parser_prod___APlusAssignOp___empty_init(val_t p0, int* init_table
 }
 void parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0, val_t p1, int* init_table){
   int itpos256 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___APlusAssignOp].i;
-  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 tmp;
   if (init_table[itpos256]) return;
@@ -38243,26 +38822,29 @@ void parser___parser_prod___APlusAssignOp___init_aplusassignop(val_t p0, val_t p
   fra.me.line = 7227;
   fra.me.meth = LOCATE_parser___parser_prod___APlusAssignOp___init_aplusassignop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7227 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7231 */
-  CALL_parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___APlusAssignOp___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7232 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7232);
   }
-  ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___APlusAssignOp____n_pluseq(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7233 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7233);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos256] = 1;
   return;
@@ -38383,7 +38965,7 @@ void parser___parser_prod___AMinusAssignOp___empty_init(val_t p0, int* init_tabl
 }
 void parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0, val_t p1, int* init_table){
   int itpos258 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AMinusAssignOp].i;
-  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 tmp;
   if (init_table[itpos258]) return;
@@ -38392,26 +38974,29 @@ void parser___parser_prod___AMinusAssignOp___init_aminusassignop(val_t p0, val_t
   fra.me.line = 7258;
   fra.me.meth = LOCATE_parser___parser_prod___AMinusAssignOp___init_aminusassignop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7258 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7262 */
-  CALL_parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AMinusAssignOp___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7263 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7263);
   }
-  ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AMinusAssignOp____n_minuseq(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7264 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7264);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos258] = 1;
   return;
@@ -38532,7 +39117,7 @@ void parser___parser_prod___AClosureDef___empty_init(val_t p0, int* init_table){
 }
 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 itpos260 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AClosureDef].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -38542,7 +39127,7 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   fra.me.line = 7289;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___init_aclosuredef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -38550,6 +39135,7 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -38557,37 +39143,39 @@ 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:7289 */
+  fra.me.REG[7] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7298 */
-  CALL_parser___parser_prod___AClosureDef___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AClosureDef___empty_init(fra.me.REG[7])(fra.me.REG[7], init_table);
   /* ./parser//parser_prod.nit:7299 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7299);
   }
-  ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[7]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7300 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7300);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
   /* ./parser//parser_prod.nit:7301 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7301);
   }
-  ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[7]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7302 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7302);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___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:7308 */
-  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[7]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:7309 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -38608,10 +39196,10 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7310);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:7312 */
-  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]) = fra.me.REG[5];
+  ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[7]) = fra.me.REG[5];
   /* ./parser//parser_prod.nit:7313 */
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -38632,10 +39220,10 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7314);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
   }
   /* ./parser//parser_prod.nit:7316 */
-  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]) = fra.me.REG[6];
+  ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[7]) = fra.me.REG[6];
   /* ./parser//parser_prod.nit:7317 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -38656,7 +39244,7 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7318);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
   }
   stack_frame_head = fra.me.prev;
   init_table[itpos260] = 1;
@@ -38687,15 +39275,15 @@ void parser___parser_prod___AClosureDef___init_aclosuredef(val_t p0, val_t p1, v
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7304);
     }
     /* ./parser//parser_prod.nit:7305 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(closctx->REG[0])!=NIT_NULL);
+    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, 7305);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AClosureDef____n_ids(closctx->REG[0]);
+    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:7306 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[7]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -38829,11 +39417,16 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:7344 */
       REGB2 = REGB0;
@@ -38844,7 +39437,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
         nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 7345);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -38886,7 +39479,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
             nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 7348);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:7349 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -38901,19 +39494,19 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
             nit_abort("Uninitialized attribute %s", "_n_ids", LOCATE_parser___parser_prod, 7351);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:7353 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -39076,7 +39669,7 @@ void parser___parser_prod___AClosureDef___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -39085,110 +39678,113 @@ void parser___parser_prod___AClosureDef___visit_all(val_t p0, val_t p1){
   fra.me.line = 7388;
   fra.me.meth = LOCATE_parser___parser_prod___AClosureDef___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7388 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7390 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0])!=NIT_NULL);
+  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, 7390);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_bang(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:7391 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 7391);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____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]);
+  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:7392 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AClosureDef____n_ids(fra.me.REG[0])!=NIT_NULL);
+  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, 7392);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_ids(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___AClosureDef___visit_all_1));
+  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:7395 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:7396 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_kwdo(fra.me.REG[0]);
-    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*/;
+    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, 7396);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:7398 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:7399 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AClosureDef____n_expr(fra.me.REG[0]);
-    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*/;
+    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, 7399);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:7401 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:7402 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___ALabelable____n_label(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ALabel, ID_parser___parser_nodes___ALabel)) /*cast ALabel*/;
+    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, 7402);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -39232,7 +39828,7 @@ void parser___parser_prod___ASimpleClosureId___empty_init(val_t p0, int* init_ta
 }
 void parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0, val_t p1, int* init_table){
   int itpos262 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASimpleClosureId].i;
-  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 tmp;
   if (init_table[itpos262]) return;
@@ -39241,26 +39837,29 @@ void parser___parser_prod___ASimpleClosureId___init_asimpleclosureid(val_t p0, v
   fra.me.line = 7409;
   fra.me.meth = LOCATE_parser___parser_prod___ASimpleClosureId___init_asimpleclosureid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7409 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7413 */
-  CALL_parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASimpleClosureId___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7414 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7414);
   }
-  ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASimpleClosureId____n_id(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7415 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7415);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos262] = 1;
   return;
@@ -39381,7 +39980,7 @@ void parser___parser_prod___ABreakClosureId___empty_init(val_t p0, int* init_tab
 }
 void parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0, val_t p1, int* init_table){
   int itpos264 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ABreakClosureId].i;
-  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 tmp;
   if (init_table[itpos264]) return;
@@ -39390,26 +39989,29 @@ void parser___parser_prod___ABreakClosureId___init_abreakclosureid(val_t p0, val
   fra.me.line = 7440;
   fra.me.meth = LOCATE_parser___parser_prod___ABreakClosureId___init_abreakclosureid;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7440 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7444 */
-  CALL_parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ABreakClosureId___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7445 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7445);
   }
-  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ABreakClosureId____n_kwbreak(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7446 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7446);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos264] = 1;
   return;
@@ -39530,7 +40132,7 @@ void parser___parser_prod___AModuleName___empty_init(val_t p0, int* init_table){
 }
 void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos266 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AModuleName].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -39540,19 +40142,22 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
   fra.me.line = 7471;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___init_amodulename;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7471 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7477 */
-  CALL_parser___parser_prod___AModuleName___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AModuleName___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7478 */
-  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7479 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -39573,7 +40178,7 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7480);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___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:7487 */
@@ -39582,13 +40187,13 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7487);
   }
-  ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7488 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7488);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos266] = 1;
   return;
@@ -39618,15 +40223,15 @@ void parser___parser_prod___AModuleName___init_amodulename(val_t p0, val_t p1, v
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7483);
     }
     /* ./parser//parser_prod.nit:7484 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(closctx->REG[0])!=NIT_NULL);
+    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, 7484);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AModuleName____n_path(closctx->REG[0]);
+    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:7485 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -39711,11 +40316,16 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:7503 */
       REGB2 = REGB0;
@@ -39726,7 +40336,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
         nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 7504);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -39768,7 +40378,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
             nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 7507);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:7508 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -39783,19 +40393,19 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
             nit_abort("Uninitialized attribute %s", "_n_path", LOCATE_parser___parser_prod, 7510);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:7512 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -39855,7 +40465,7 @@ void parser___parser_prod___AModuleName___replace_child(val_t p0, val_t p1, val_
   return;
 }
 void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -39864,53 +40474,56 @@ void parser___parser_prod___AModuleName___visit_all(val_t p0, val_t p1){
   fra.me.line = 7527;
   fra.me.meth = LOCATE_parser___parser_prod___AModuleName___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7527 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7529 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:7530 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AModuleName____n_quad(fra.me.REG[0]);
-    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*/;
+    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, 7530);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:7532 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_path(fra.me.REG[0])!=NIT_NULL);
+  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, 7532);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AModuleName____n_path(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___AModuleName___visit_all_1));
+  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:7535 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AModuleName____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 7535);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AModuleName____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]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -39953,7 +40566,7 @@ void parser___parser_prod___AExternCalls___empty_init(val_t p0, int* init_table)
 }
 void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos268 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AExternCalls].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos268]) return;
@@ -39962,28 +40575,31 @@ void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1,
   fra.me.line = 7541;
   fra.me.meth = LOCATE_parser___parser_prod___AExternCalls___init_aexterncalls;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./parser//parser_prod.nit:7541 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7546 */
-  CALL_parser___parser_prod___AExternCalls___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AExternCalls___empty_init(fra.me.REG[3])(fra.me.REG[3], init_table);
   /* ./parser//parser_prod.nit:7547 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7547);
   }
-  ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AExternCalls____n_kwimport(fra.me.REG[3]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7548 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7548);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___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[itpos268] = 1;
@@ -40014,15 +40630,15 @@ void parser___parser_prod___AExternCalls___init_aexterncalls(val_t p0, val_t p1,
       nit_abort("Assert failed", NULL, LOCATE_parser___parser_prod, 7550);
     }
     /* ./parser//parser_prod.nit:7551 */
-    REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(closctx->REG[0])!=NIT_NULL);
+    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, 7551);
     }
-    fra.me.REG[1] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(closctx->REG[0]);
+    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:7552 */
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
     stack_frame_head = fra.me.prev;
     return;
   }
@@ -40106,11 +40722,16 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:7568 */
       REGB2 = REGB0;
@@ -40121,7 +40742,7 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
         nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 7569);
       }
       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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -40163,7 +40784,7 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 7572);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:7573 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -40178,19 +40799,19 @@ void parser___parser_prod___AExternCalls___replace_child(val_t p0, val_t p1, val
             nit_abort("Uninitialized attribute %s", "_n_extern_calls", LOCATE_parser___parser_prod, 7575);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AExternCalls____n_extern_calls(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:7577 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -40342,7 +40963,7 @@ void parser___parser_prod___ASuperExternCall___empty_init(val_t p0, int* init_ta
 }
 void parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0, val_t p1, int* init_table){
   int itpos272 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ASuperExternCall].i;
-  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 tmp;
   if (init_table[itpos272]) return;
@@ -40351,26 +40972,29 @@ void parser___parser_prod___ASuperExternCall___init_asuperexterncall(val_t p0, v
   fra.me.line = 7609;
   fra.me.meth = LOCATE_parser___parser_prod___ASuperExternCall___init_asuperexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7609 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7613 */
-  CALL_parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ASuperExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7614 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7614);
   }
-  ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ASuperExternCall____n_kwsuper(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7615 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7615);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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;
@@ -40491,7 +41115,7 @@ void parser___parser_prod___ALocalPropExternCall___empty_init(val_t p0, int* ini
 }
 void parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val_t p0, val_t p1, int* init_table){
   int itpos274 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ALocalPropExternCall].i;
-  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 tmp;
   if (init_table[itpos274]) return;
@@ -40500,26 +41124,29 @@ void parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall(val
   fra.me.line = 7640;
   fra.me.meth = LOCATE_parser___parser_prod___ALocalPropExternCall___init_alocalpropexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7640 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7644 */
-  CALL_parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ALocalPropExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7645 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7645);
   }
-  ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ALocalPropExternCall____n_methid(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7646 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7646);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos274] = 1;
   return;
@@ -40640,7 +41267,7 @@ void parser___parser_prod___AFullPropExternCall___empty_init(val_t p0, int* init
 }
 void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos276 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AFullPropExternCall].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -40650,32 +41277,35 @@ void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t
   fra.me.line = 7671;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___init_afullpropexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7671 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7677 */
-  CALL_parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AFullPropExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7678 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7678);
   }
-  ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7679 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7679);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7680 */
-  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7681 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -40696,7 +41326,7 @@ void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7682);
     }
-    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+    CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   }
   /* ./parser//parser_prod.nit:7684 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
@@ -40704,13 +41334,13 @@ void parser___parser_prod___AFullPropExternCall___init_afullpropexterncall(val_t
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7684);
   }
-  ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7685 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7685);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos276] = 1;
   return;
@@ -40889,7 +41519,7 @@ void parser___parser_prod___AFullPropExternCall___replace_child(val_t p0, val_t
   return;
 }
 void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -40898,53 +41528,56 @@ void parser___parser_prod___AFullPropExternCall___visit_all(val_t p0, val_t p1){
   fra.me.line = 7722;
   fra.me.meth = LOCATE_parser___parser_prod___AFullPropExternCall___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7722 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7724 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0])!=NIT_NULL);
+  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, 7724);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AFullPropExternCall____n_classid(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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:7725 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:7726 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___AFullPropExternCall____n_quad(fra.me.REG[0]);
-    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*/;
+    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, 7726);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:7728 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AFullPropExternCall____n_methid(fra.me.REG[0])!=NIT_NULL);
+  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, 7728);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___AFullPropExternCall____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]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -40967,7 +41600,7 @@ void parser___parser_prod___AInitPropExternCall___empty_init(val_t p0, int* init
 }
 void parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t p0, val_t p1, int* init_table){
   int itpos278 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AInitPropExternCall].i;
-  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 tmp;
   if (init_table[itpos278]) return;
@@ -40976,26 +41609,29 @@ void parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall(val_t
   fra.me.line = 7734;
   fra.me.meth = LOCATE_parser___parser_prod___AInitPropExternCall___init_ainitpropexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7734 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7738 */
-  CALL_parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AInitPropExternCall___empty_init(fra.me.REG[2])(fra.me.REG[2], init_table);
   /* ./parser//parser_prod.nit:7739 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7739);
   }
-  ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AInitPropExternCall____n_classid(fra.me.REG[2]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7740 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7740);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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[itpos278] = 1;
   return;
@@ -41116,7 +41752,7 @@ void parser___parser_prod___ACastAsExternCall___empty_init(val_t p0, int* init_t
 }
 void parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos280 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___ACastAsExternCall].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos280]) return;
@@ -41125,56 +41761,59 @@ void parser___parser_prod___ACastAsExternCall___init_acastasexterncall(val_t p0,
   fra.me.line = 7765;
   fra.me.meth = LOCATE_parser___parser_prod___ACastAsExternCall___init_acastasexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7765 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7771 */
-  CALL_parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___ACastAsExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7772 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7772);
   }
-  ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_from_type(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7773 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7773);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7774 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7774);
   }
-  ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_kwas(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7775 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7775);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7776 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7776);
   }
-  ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___ACastAsExternCall____n_to_type(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7777 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7777);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos280] = 1;
   return;
@@ -41412,7 +42051,7 @@ void parser___parser_prod___AAsNullableExternCall___empty_init(val_t p0, int* in
 }
 void parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos282 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNullableExternCall].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos282]) return;
@@ -41421,56 +42060,59 @@ void parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall(v
   fra.me.line = 7824;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNullableExternCall___init_aasnullableexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./parser//parser_prod.nit:7824 */
+  fra.me.REG[4] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7830 */
-  CALL_parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAsNullableExternCall___empty_init(fra.me.REG[4])(fra.me.REG[4], init_table);
   /* ./parser//parser_prod.nit:7831 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7831);
   }
-  ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_type(fra.me.REG[4]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7832 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7832);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7833 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7833);
   }
-  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwas(fra.me.REG[4]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7834 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7834);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./parser//parser_prod.nit:7835 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7835);
   }
-  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAsNullableExternCall____n_kwnullable(fra.me.REG[4]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7836 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7836);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   init_table[itpos282] = 1;
   return;
@@ -41708,7 +42350,7 @@ void parser___parser_prod___AAsNotNullableExternCall___empty_init(val_t p0, int*
 }
 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 itpos284 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_parser___parser_nodes___AAsNotNullableExternCall].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos284]) return;
@@ -41717,71 +42359,74 @@ void parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableextern
   fra.me.line = 7883;
   fra.me.meth = LOCATE_parser___parser_prod___AAsNotNullableExternCall___init_aasnotnullableexterncall;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
+  /* ./parser//parser_prod.nit:7883 */
+  fra.me.REG[5] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:7890 */
-  CALL_parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[0])(fra.me.REG[0], init_table);
+  CALL_parser___parser_prod___AAsNotNullableExternCall___empty_init(fra.me.REG[5])(fra.me.REG[5], init_table);
   /* ./parser//parser_prod.nit:7891 */
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7891);
   }
-  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_type(fra.me.REG[5]) = fra.me.REG[1];
   /* ./parser//parser_prod.nit:7892 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7892);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7893 */
   REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7893);
   }
-  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwas(fra.me.REG[5]) = fra.me.REG[2];
   /* ./parser//parser_prod.nit:7894 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7894);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7895 */
   REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7895);
   }
-  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[0]) = fra.me.REG[3];
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnot(fra.me.REG[5]) = fra.me.REG[3];
   /* ./parser//parser_prod.nit:7896 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7896);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   /* ./parser//parser_prod.nit:7897 */
   REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_parser___parser_prod, 7897);
   }
-  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_parser___parser_nodes___AAsNotNullableExternCall____n_kwnullable(fra.me.REG[5]) = fra.me.REG[4];
   /* ./parser//parser_prod.nit:7898 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_parser___parser_prod, 7898);
   }
-  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+  CALL_parser___parser_prod___ANode___parent__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
   stack_frame_head = fra.me.prev;
   init_table[itpos284] = 1;
   return;
@@ -42192,11 +42837,16 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:7975 */
       REGB2 = REGB0;
@@ -42207,7 +42857,7 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
         nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7976);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -42249,7 +42899,7 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7979);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:7980 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -42264,19 +42914,19 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
             nit_abort("Uninitialized attribute %s", "_n_id", LOCATE_parser___parser_prod, 7982);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:7984 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -42337,7 +42987,7 @@ void parser___parser_prod___AQualified___replace_child(val_t p0, val_t p1, val_t
   return;
 }
 void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -42346,44 +42996,47 @@ void parser___parser_prod___AQualified___visit_all(val_t p0, val_t p1){
   fra.me.line = 7999;
   fra.me.meth = LOCATE_parser___parser_prod___AQualified___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:7999 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:8001 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___AQualified____n_id(fra.me.REG[0])!=NIT_NULL);
+  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, 8001);
   }
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AQualified____n_id(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___AQualified___visit_all_1));
+  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:8004 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:8005 */
-    fra.me.REG[0] = ATTR_parser___parser_nodes___AQualified____n_classid(fra.me.REG[0]);
-    REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___TClassid, ID_parser___parser_nodes___TClassid)) /*cast TClassid*/;
+    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, 8005);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
   stack_frame_head = fra.me.prev;
   return;
@@ -42514,11 +43167,16 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
   }
   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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./parser//parser_prod.nit:8026 */
       REGB2 = REGB0;
@@ -42529,7 +43187,7 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
         nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 8027);
       }
       fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      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 {
@@ -42571,7 +43229,7 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
             nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 8030);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
+          CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[3])(fra.me.REG[3], REGB2, fra.me.REG[2]);
           /* ./parser//parser_prod.nit:8031 */
           REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
@@ -42586,19 +43244,19 @@ void parser___parser_prod___ADoc___replace_child(val_t p0, val_t p1, val_t p2){
             nit_abort("Uninitialized attribute %s", "_n_comment", LOCATE_parser___parser_prod, 8033);
           }
           fra.me.REG[3] = ATTR_parser___parser_nodes___ADoc____n_comment(fra.me.REG[0]);
-          CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
+          CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[3])(fra.me.REG[3], REGB2);
         }
         /* ./parser//parser_prod.nit:8035 */
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -42750,7 +43408,7 @@ void parser___parser_prod___Start___replace_child(val_t p0, val_t p1, val_t p2){
   return;
 }
 void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -42759,45 +43417,48 @@ void parser___parser_prod___Start___visit_all(val_t p0, val_t p1){
   fra.me.line = 8071;
   fra.me.meth = LOCATE_parser___parser_prod___Start___visit_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./parser//parser_prod.nit:8071 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./parser//parser_prod.nit:8073 */
-  fra.me.REG[2] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./parser//parser_prod.nit:8074 */
-    fra.me.REG[2] = ATTR_parser___parser_nodes___Start____n_base(fra.me.REG[0]);
-    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*/;
+    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, 8074);
     }
-    CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], 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:8076 */
-  REGB0 = TAG_Bool(ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0])!=NIT_NULL);
+  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, 8076);
   }
-  fra.me.REG[0] = ATTR_parser___parser_nodes___Start____n_eof(fra.me.REG[0]);
-  CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  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]);
   stack_frame_head = fra.me.prev;
   return;
 }
index 1a555d6..1c691bb 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/parser/parser_prod. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./parser/parser_prod. */
 #ifndef parser___parser_prod_sep
 #define parser___parser_prod_sep
 #include "parser___lexer._sep.h"
index fe67a64..e7cd99c 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/parser/tables. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./parser/tables. */
 #ifndef parser___tables_sep
 #define parser___tables_sep
 #include "standard._sep.h"
index 8e0e09f..2ad43f5 100644 (file)
@@ -30,7 +30,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:178 */
+    /* ./../lib/standard//kernel.nit:195 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./primitive_info.nit:35 */
     REGB2 = REGB1;
@@ -63,10 +63,10 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
     goto label1;
   }
   /* ./primitive_info.nit:43 */
-  fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[2])(fra.me.REG[2]);
   /* ./primitive_info.nit:44 */
   while(1) {
-    REGB2 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB2)) {
       /* ./primitive_info.nit:45 */
       fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[2])(fra.me.REG[2]);
@@ -82,7 +82,7 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
         REGB2 = CALL_metamodel___partial_order___PartialOrderElement_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
         if (UNTAG_Bool(REGB2)) {
           /* ./primitive_info.nit:49 */
-          fra.me.REG[3] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[2])(fra.me.REG[2]);
+          fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[2])(fra.me.REG[2]);
           ATTR_primitive_info___MMLocalClass____primitive_info_cache(fra.me.REG[0]) = fra.me.REG[3];
           /* ./primitive_info.nit:50 */
           REGB2 = TAG_Bool(true);
@@ -94,7 +94,7 @@ val_t primitive_info___MMLocalClass___primitive_info(val_t p0){
         }
       }
       /* ./primitive_info.nit:54 */
-      CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[2])(fra.me.REG[2]);
     } else {
       /* ./primitive_info.nit:44 */
       goto label3;
@@ -279,56 +279,71 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   /* ./primitive_info.nit:67 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./primitive_info.nit:67 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[4] = fra.me.REG[1];
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label13;
       label13: while(0);
       /* ./primitive_info.nit:68 */
@@ -337,91 +352,111 @@ val_t primitive_info___MMLocalClass___primitive_ctypes(val_t p0){
         nit_abort("Reciever is null", NULL, LOCATE_primitive_info, 68);
       }
       fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[5] = fra.me.REG[2];
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label14;
       label14: while(0);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[6] = fra.me.REG[3];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label15;
       label15: while(0);
       /* ./primitive_info.nit:69 */
       fra.me.REG[6] = NEW_PrimitiveInfo_primitive_info___PrimitiveInfo___init(fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
       /* ./primitive_info.nit:70 */
       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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label16;
     }
   }
@@ -1025,3 +1060,766 @@ val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
+val_t primitive_info___MMMethod___default_extern_name(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_primitive_info;
+  fra.me.line = 157;
+  fra.me.meth = LOCATE_primitive_info___MMMethod___default_extern_name;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./primitive_info.nit:159 */
+  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(0);
+    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[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_primitive_info___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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);
+    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];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  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];
+}
+val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+    static val_t once_value_1; /* Once value */
+      static val_t once_value_2; /* Once value */
+      static val_t once_value_3; /* Once value */
+        static val_t once_value_4; /* Once value */
+        static val_t once_value_5; /* Once value */
+          static val_t once_value_6; /* Once value */
+          static val_t once_value_7; /* Once value */
+            static val_t once_value_8; /* Once value */
+            static val_t once_value_9; /* Once value */
+              static val_t once_value_10; /* Once value */
+              static val_t once_value_11; /* Once value */
+               static val_t once_value_12; /* Once value */
+               static val_t once_value_13; /* Once value */
+               static val_t once_value_14; /* Once value */
+               static val_t once_value_15; /* Once value */
+               static val_t once_value_16; /* Once value */
+               static val_t once_value_17; /* Once value */
+               static val_t once_value_18; /* Once value */
+               static val_t once_value_19; /* Once value */
+               static val_t once_value_20; /* Once value */
+               static val_t once_value_21; /* Once value */
+               static val_t once_value_22; /* Once value */
+               static val_t once_value_23; /* Once value */
+               static val_t once_value_24; /* Once value */
+               static val_t once_value_25; /* Once value */
+               static val_t once_value_26; /* Once value */
+               static val_t once_value_27; /* Once value */
+               static val_t once_value_28; /* Once value */
+               static val_t once_value_29; /* Once value */
+               static val_t once_value_30; /* Once value */
+               static val_t once_value_31; /* Once value */
+               static val_t once_value_32; /* Once value */
+               static val_t once_value_33; /* Once value */
+               static val_t once_value_34; /* Once value */
+    static val_t once_value_35; /* Once value */
+    static val_t once_value_36; /* Once value */
+    static val_t once_value_37; /* Once value */
+    static val_t once_value_39; /* Once value */
+      static val_t once_value_40; /* Once value */
+      static val_t once_value_41; /* Once value */
+      static val_t once_value_42; /* Once value */
+      static val_t once_value_43; /* Once value */
+      static val_t once_value_44; /* Once value */
+      static val_t once_value_45; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_primitive_info;
+  fra.me.line = 162;
+  fra.me.meth = LOCATE_primitive_info___MMMethod___friendly_extern_name;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 6;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./primitive_info.nit:166 */
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    /* ./primitive_info.nit:168 */
+    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+    /* ./primitive_info.nit:169 */
+    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);
+      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];
+    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+      REGB0 = REGB1;
+    }
+    if (UNTAG_Bool(REGB0)) {
+      /* ./primitive_info.nit:170 */
+      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);
+        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];
+    } else {
+      /* ./primitive_info.nit:171 */
+      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);
+        once_value_3 = fra.me.REG[4];
+        register_static_object(&once_value_3);
+      } else fra.me.REG[4] = once_value_3;
+      fra.me.REG[4] = fra.me.REG[4];
+      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+        REGB0 = REGB1;
+      }
+      if (UNTAG_Bool(REGB0)) {
+        /* ./primitive_info.nit:172 */
+        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);
+          once_value_4 = fra.me.REG[4];
+          register_static_object(&once_value_4);
+        } else fra.me.REG[4] = once_value_4;
+        fra.me.REG[4] = fra.me.REG[4];
+        fra.me.REG[3] = fra.me.REG[4];
+      } else {
+        /* ./primitive_info.nit:173 */
+        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);
+          once_value_5 = fra.me.REG[4];
+          register_static_object(&once_value_5);
+        } else fra.me.REG[4] = once_value_5;
+        fra.me.REG[4] = fra.me.REG[4];
+        REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+          REGB0 = REGB1;
+        }
+        if (UNTAG_Bool(REGB0)) {
+          /* ./primitive_info.nit:174 */
+          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);
+            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];
+          fra.me.REG[3] = fra.me.REG[4];
+        } else {
+          /* ./primitive_info.nit:175 */
+          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);
+            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];
+          REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+          if (UNTAG_Bool(REGB0)) {
+          } else {
+            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+            REGB0 = REGB1;
+          }
+          if (UNTAG_Bool(REGB0)) {
+            /* ./primitive_info.nit:176 */
+            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);
+              once_value_8 = fra.me.REG[4];
+              register_static_object(&once_value_8);
+            } else fra.me.REG[4] = once_value_8;
+            fra.me.REG[4] = fra.me.REG[4];
+            fra.me.REG[3] = fra.me.REG[4];
+          } else {
+            /* ./primitive_info.nit:177 */
+            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);
+              once_value_9 = fra.me.REG[4];
+              register_static_object(&once_value_9);
+            } else fra.me.REG[4] = once_value_9;
+            fra.me.REG[4] = fra.me.REG[4];
+            REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+            if (UNTAG_Bool(REGB0)) {
+            } else {
+              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+              REGB0 = REGB1;
+            }
+            if (UNTAG_Bool(REGB0)) {
+              /* ./primitive_info.nit:178 */
+              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);
+               once_value_10 = fra.me.REG[4];
+               register_static_object(&once_value_10);
+              } else fra.me.REG[4] = once_value_10;
+              fra.me.REG[4] = fra.me.REG[4];
+              fra.me.REG[3] = fra.me.REG[4];
+            } else {
+              /* ./primitive_info.nit:179 */
+              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);
+               once_value_11 = fra.me.REG[4];
+               register_static_object(&once_value_11);
+              } else fra.me.REG[4] = once_value_11;
+              fra.me.REG[4] = fra.me.REG[4];
+              REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+              if (UNTAG_Bool(REGB0)) {
+              } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+              }
+              if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:180 */
+               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);
+               once_value_12 = fra.me.REG[4];
+               register_static_object(&once_value_12);
+               } else fra.me.REG[4] = once_value_12;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+              } else {
+               /* ./primitive_info.nit:181 */
+               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);
+               once_value_13 = fra.me.REG[4];
+               register_static_object(&once_value_13);
+               } else fra.me.REG[4] = once_value_13;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:182 */
+               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);
+               once_value_14 = fra.me.REG[4];
+               register_static_object(&once_value_14);
+               } else fra.me.REG[4] = once_value_14;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:183 */
+               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);
+               once_value_15 = fra.me.REG[4];
+               register_static_object(&once_value_15);
+               } else fra.me.REG[4] = once_value_15;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:184 */
+               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);
+               once_value_16 = fra.me.REG[4];
+               register_static_object(&once_value_16);
+               } else fra.me.REG[4] = once_value_16;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:185 */
+               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);
+               once_value_17 = fra.me.REG[4];
+               register_static_object(&once_value_17);
+               } else fra.me.REG[4] = once_value_17;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:186 */
+               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);
+               once_value_18 = fra.me.REG[4];
+               register_static_object(&once_value_18);
+               } else fra.me.REG[4] = once_value_18;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:187 */
+               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);
+               once_value_19 = fra.me.REG[4];
+               register_static_object(&once_value_19);
+               } else fra.me.REG[4] = once_value_19;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:188 */
+               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);
+               once_value_20 = fra.me.REG[4];
+               register_static_object(&once_value_20);
+               } else fra.me.REG[4] = once_value_20;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:189 */
+               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);
+               once_value_21 = fra.me.REG[4];
+               register_static_object(&once_value_21);
+               } else fra.me.REG[4] = once_value_21;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:190 */
+               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);
+               once_value_22 = fra.me.REG[4];
+               register_static_object(&once_value_22);
+               } else fra.me.REG[4] = once_value_22;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:191 */
+               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);
+               once_value_23 = fra.me.REG[4];
+               register_static_object(&once_value_23);
+               } else fra.me.REG[4] = once_value_23;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:192 */
+               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);
+               once_value_24 = fra.me.REG[4];
+               register_static_object(&once_value_24);
+               } else fra.me.REG[4] = once_value_24;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:193 */
+               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);
+               once_value_25 = fra.me.REG[4];
+               register_static_object(&once_value_25);
+               } else fra.me.REG[4] = once_value_25;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:194 */
+               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);
+               once_value_26 = fra.me.REG[4];
+               register_static_object(&once_value_26);
+               } else fra.me.REG[4] = once_value_26;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:195 */
+               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);
+               once_value_27 = fra.me.REG[4];
+               register_static_object(&once_value_27);
+               } else fra.me.REG[4] = once_value_27;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:196 */
+               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);
+               once_value_28 = fra.me.REG[4];
+               register_static_object(&once_value_28);
+               } else fra.me.REG[4] = once_value_28;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:197 */
+               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);
+               once_value_29 = fra.me.REG[4];
+               register_static_object(&once_value_29);
+               } else fra.me.REG[4] = once_value_29;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:198 */
+               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);
+               once_value_30 = fra.me.REG[4];
+               register_static_object(&once_value_30);
+               } else fra.me.REG[4] = once_value_30;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:199 */
+               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);
+               once_value_31 = fra.me.REG[4];
+               register_static_object(&once_value_31);
+               } else fra.me.REG[4] = once_value_31;
+               fra.me.REG[4] = fra.me.REG[4];
+               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
+               if (UNTAG_Bool(REGB0)) {
+               } else {
+               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+               REGB0 = REGB1;
+               }
+               if (UNTAG_Bool(REGB0)) {
+               /* ./primitive_info.nit:200 */
+               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);
+               once_value_32 = fra.me.REG[4];
+               register_static_object(&once_value_32);
+               } else fra.me.REG[4] = once_value_32;
+               fra.me.REG[4] = fra.me.REG[4];
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./../lib/standard//collection//array.nit:24 */
+               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, 24);
+               }
+               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+               /* ./primitive_info.nit:201 */
+               REGB1 = TAG_Int(1);
+               /* ./../lib/standard//kernel.nit:237 */
+               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+               /* ./primitive_info.nit:201 */
+               REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
+               REGB0 = TAG_Char('=');
+               REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
+               if (UNTAG_Bool(REGB2)) {
+               } else {
+               /* ./../lib/standard//kernel.nit:378 */
+               REGB0 = TAG_Bool((REGB1)==(REGB0));
+               /* ./primitive_info.nit:201 */
+               REGB2 = REGB0;
+               }
+               if (UNTAG_Bool(REGB2)) {
+               /* ./primitive_info.nit:202 */
+               REGB2 = TAG_Int(3);
+               fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+               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);
+               once_value_33 = fra.me.REG[5];
+               register_static_object(&once_value_33);
+               } else fra.me.REG[5] = once_value_33;
+               fra.me.REG[5] = fra.me.REG[5];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+               REGB2 = TAG_Int(0);
+               /* ./../lib/standard//collection//array.nit:24 */
+               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, 24);
+               }
+               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+               /* ./primitive_info.nit:202 */
+               REGB1 = TAG_Int(1);
+               /* ./../lib/standard//kernel.nit:237 */
+               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+               /* ./primitive_info.nit:202 */
+               fra.me.REG[5] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB1);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+               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);
+               once_value_34 = fra.me.REG[5];
+               register_static_object(&once_value_34);
+               } else fra.me.REG[5] = once_value_34;
+               fra.me.REG[5] = fra.me.REG[5];
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+               fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+               fra.me.REG[3] = fra.me.REG[4];
+               } else {
+               /* ./primitive_info.nit:204 */
+               fra.me.REG[3] = fra.me.REG[2];
+               }
+               }
+               }
+               }
+               }
+               }
+               }
+               }
+               }
+               }
+               }
+              }
+            }
+          }
+        }
+      }
+    }
+    /* ./primitive_info.nit:207 */
+    REGB1 = TAG_Int(5);
+    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    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);
+      once_value_35 = fra.me.REG[4];
+      register_static_object(&once_value_35);
+    } else fra.me.REG[4] = once_value_35;
+    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]);
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(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]);
+    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);
+      once_value_36 = fra.me.REG[4];
+      register_static_object(&once_value_36);
+    } else fra.me.REG[4] = once_value_36;
+    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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+    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);
+      once_value_37 = fra.me.REG[3];
+      register_static_object(&once_value_37);
+    } else fra.me.REG[3] = once_value_37;
+    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]);
+    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+    goto label38;
+  } else {
+    /* ./primitive_info.nit:209 */
+    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
+    if (!once_value_39) {
+      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);
+        once_value_40 = fra.me.REG[4];
+        register_static_object(&once_value_40);
+      } else fra.me.REG[4] = once_value_40;
+      fra.me.REG[4] = fra.me.REG[4];
+      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+      once_value_39 = fra.me.REG[4];
+      register_static_object(&once_value_39);
+    } else fra.me.REG[4] = once_value_39;
+    fra.me.REG[4] = fra.me.REG[4];
+    REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      REGB1 = REGB2;
+    }
+    if (UNTAG_Bool(REGB1)) {
+      /* ./primitive_info.nit:210 */
+      REGB1 = TAG_Int(3);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      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);
+        once_value_41 = fra.me.REG[3];
+        register_static_object(&once_value_41);
+      } else fra.me.REG[3] = once_value_41;
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
+      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[4])(fra.me.REG[4], fra.me.REG[3]);
+      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);
+        once_value_42 = fra.me.REG[3];
+        register_static_object(&once_value_42);
+      } else fra.me.REG[3] = once_value_42;
+      fra.me.REG[3] = fra.me.REG[3];
+      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]);
+      fra.me.REG[2] = fra.me.REG[4];
+      goto label38;
+    } else {
+      /* ./primitive_info.nit:212 */
+      REGB1 = TAG_Int(5);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      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);
+        once_value_43 = fra.me.REG[3];
+        register_static_object(&once_value_43);
+      } else fra.me.REG[3] = once_value_43;
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+      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);
+        once_value_44 = fra.me.REG[1];
+        register_static_object(&once_value_44);
+      } else fra.me.REG[1] = once_value_44;
+      fra.me.REG[1] = fra.me.REG[1];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(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]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
+      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);
+        once_value_45 = fra.me.REG[0];
+        register_static_object(&once_value_45);
+      } else fra.me.REG[0] = once_value_45;
+      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]);
+      fra.me.REG[2] = fra.me.REG[4];
+      goto label38;
+    }
+  }
+  label38: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
index ce1d56c..c92804b 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/primitive_info. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./primitive_info. */
 #ifndef primitive_info_sep
 #define primitive_info_sep
 #include "metamodel._sep.h"
@@ -26,6 +26,8 @@ extern const int SFT_primitive_info[];
 #define CALL_primitive_info___MMType___default_cvalue(recv) ((primitive_info___MMType___default_cvalue_t)CALL((recv), (SFT_primitive_info[6] + 2)))
 #define CALL_primitive_info___MMType___boxtype(recv) ((primitive_info___MMType___boxtype_t)CALL((recv), (SFT_primitive_info[6] + 3)))
 #define CALL_primitive_info___MMType___unboxtype(recv) ((primitive_info___MMType___unboxtype_t)CALL((recv), (SFT_primitive_info[6] + 4)))
+#define CALL_primitive_info___MMMethod___default_extern_name(recv) ((primitive_info___MMMethod___default_extern_name_t)CALL((recv), (SFT_primitive_info[7] + 0)))
+#define CALL_primitive_info___MMMethod___friendly_extern_name(recv) ((primitive_info___MMMethod___friendly_extern_name_t)CALL((recv), (SFT_primitive_info[7] + 1)))
 static const char * const LOCATE_primitive_info___MMLocalClass___primitive_info = "primitive_info::MMLocalClass::primitive_info";
 val_t primitive_info___MMLocalClass___primitive_info(val_t p0);
 typedef val_t (*primitive_info___MMLocalClass___primitive_info_t)(val_t p0);
@@ -62,4 +64,11 @@ static const char * const LOCATE_primitive_info___MMType___unboxtype = "primitiv
 val_t primitive_info___MMType___unboxtype(val_t p0, val_t p1);
 typedef val_t (*primitive_info___MMType___unboxtype_t)(val_t p0, val_t p1);
 val_t NEW_MMType_metamodel___static_type___MMType___init();
+static const char * const LOCATE_primitive_info___MMMethod___default_extern_name = "primitive_info::MMMethod::default_extern_name";
+val_t primitive_info___MMMethod___default_extern_name(val_t p0);
+typedef val_t (*primitive_info___MMMethod___default_extern_name_t)(val_t p0);
+static const char * const LOCATE_primitive_info___MMMethod___friendly_extern_name = "primitive_info::MMMethod::friendly_extern_name";
+val_t primitive_info___MMMethod___friendly_extern_name(val_t p0, val_t p1);
+typedef val_t (*primitive_info___MMMethod___friendly_extern_name_t)(val_t p0, val_t p1);
+val_t NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
 #endif
index 15fa0d1..c62f292 100644 (file)
@@ -169,6 +169,7 @@ void program___Program___finish_processing_classes(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_program;
@@ -186,47 +187,52 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -330,24 +336,27 @@ void program___Program___compute_main_method(val_t p0){
   return;
 }
 void program___Program___generate_allocation_iroutines(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_program;
   fra.me.line = 80;
   fra.me.meth = LOCATE_program___Program___generate_allocation_iroutines;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./program.nit:80 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./program.nit:83 */
-  fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_program___Program___generate_allocation_iroutines_1));
+  fra.me.REG[2] = CALL_program___Program___main_module(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_program___Program___generate_allocation_iroutines_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -369,14 +378,14 @@ void program___Program___generate_allocation_iroutines(val_t p0){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    closctx->REG[1] = fra.me.REG[0];
+    closctx->REG[2] = fra.me.REG[0];
     /* ./program.nit:84 */
-    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[1])(closctx->REG[1]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(true);
     } else {
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(closctx->REG[2])(closctx->REG[2]);
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = REGB1;
     }
@@ -384,7 +393,7 @@ void program___Program___generate_allocation_iroutines(val_t p0){
       goto label2;
     }
     /* ./program.nit:85 */
-    fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx->REG[1])(closctx->REG[1]);
+    fra.me.REG[0] = CALL_primitive_info___MMLocalClass___primitive_info(closctx->REG[2])(closctx->REG[2]);
     /* ./program.nit:86 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -400,46 +409,46 @@ void program___Program___generate_allocation_iroutines(val_t p0){
     }
     if (UNTAG_Bool(REGB0)) {
       /* ./program.nit:89 */
-      fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
       fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
-      closctx->REG[2] = fra.me.REG[0];
+      closctx->REG[3] = fra.me.REG[0];
       /* ./program.nit:90 */
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
-      closctx->REG[3] = fra.me.REG[0];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[3]);
+      closctx->REG[4] = fra.me.REG[0];
       /* ./program.nit:91 */
-      fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx->REG[3], NIT_NULL);
+      fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(closctx->REG[4], NIT_NULL);
       /* ./program.nit:92 */
-      fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
       fra.me.REG[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
-      closctx->REG[4] = fra.me.REG[1];
+      closctx->REG[5] = fra.me.REG[1];
       /* ./program.nit:94 */
-      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_3));
       /* ./program.nit:107 */
-      CALL_program___MMLocalClass___init_var_iroutine__eq(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+      CALL_program___MMLocalClass___init_var_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       /* ./program.nit:111 */
-      fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
       fra.me.REG[0] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[0]);
-      closctx->REG[4] = fra.me.REG[0];
+      closctx->REG[5] = fra.me.REG[0];
       /* ./program.nit:112 */
       REGB0 = TAG_Int(1);
       fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[4]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], closctx->REG[5]);
       /* ./program.nit:113 */
       fra.me.REG[0] = NEW_IRoutine_icode___icode_base___IRoutine___init(fra.me.REG[0], NIT_NULL);
       /* ./program.nit:114 */
-      fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[0])(closctx->REG[0]);
+      fra.me.REG[1] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
       fra.me.REG[1] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[1], fra.me.REG[0]);
-      closctx->REG[2] = fra.me.REG[1];
+      closctx->REG[3] = fra.me.REG[1];
       /* ./program.nit:115 */
-      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_5));
       /* ./program.nit:124 */
-      CALL_program___MMLocalClass___checknew_iroutine__eq(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+      CALL_program___MMLocalClass___checknew_iroutine__eq(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       /* ./program.nit:127 */
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[1])(closctx->REG[1]);
+      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(closctx->REG[2])(closctx->REG[2]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___generate_allocation_iroutines_7));
     }
     label2: while(0);
@@ -472,7 +481,7 @@ void program___Program___generate_allocation_iroutines(val_t p0){
           goto label4;
         }
         /* ./program.nit:96 */
-        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
         /* ./program.nit:97 */
         fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -520,15 +529,15 @@ void program___Program___generate_allocation_iroutines(val_t p0){
             goto label4;
           }
           /* ./program.nit:102 */
-          fra.me.REG[1] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(closctx->REG[4])(closctx->REG[4], fra.me.REG[1], closctx->REG[3], NIT_NULL);
+          fra.me.REG[1] = CALL_icode___icode_tools___ICodeBuilder___inline_routine(closctx->REG[5])(closctx->REG[5], fra.me.REG[1], closctx->REG[4], NIT_NULL);
           REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
           if (UNTAG_Bool(REGB0)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_program, 102);
           }
           /* ./program.nit:103 */
-          fra.me.REG[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], closctx->REG[2], fra.me.REG[1]);
-          CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[4])(closctx->REG[4], fra.me.REG[1]);
+          fra.me.REG[1] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], closctx->REG[3], fra.me.REG[1]);
+          CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[5])(closctx->REG[5], fra.me.REG[1]);
         }
         label4: while(0);
         stack_frame_head = fra.me.prev;
@@ -560,7 +569,7 @@ void program___Program___generate_allocation_iroutines(val_t p0){
           goto label6;
         }
         /* ./program.nit:117 */
-        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
         /* ./program.nit:118 */
         fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -601,7 +610,7 @@ void program___Program___generate_allocation_iroutines(val_t p0){
         }
         if (UNTAG_Bool(REGB0)) {
           /* ./program.nit:120 */
-          CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx->REG[2])(closctx->REG[2], fra.me.REG[0], closctx->REG[4]);
+          CALL_icode___icode_builder___ICodeBuilder___add_attr_check(closctx->REG[3])(closctx->REG[3], fra.me.REG[0], closctx->REG[5]);
         }
         label6: while(0);
         stack_frame_head = fra.me.prev;
@@ -632,13 +641,13 @@ void program___Program___generate_allocation_iroutines(val_t p0){
         fra.me.REG[0] = p0;
         CREG[0] = clos_fun0;
         /* ./program.nit:129 */
-        REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
+        REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init_for(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
           goto label8;
         }
         /* ./program.nit:130 */
-        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
+        fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
         /* ./program.nit:131 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
         if (UNTAG_Bool(REGB0)) {
@@ -646,7 +655,7 @@ void program___Program___generate_allocation_iroutines(val_t p0){
           nit_abort("Assert failed", NULL, LOCATE_program, 131);
         }
         /* ./program.nit:133 */
-        fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+        fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[1] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[1]);
         /* ./program.nit:134 */
         fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
@@ -658,11 +667,16 @@ void program___Program___generate_allocation_iroutines(val_t p0){
           nit_abort("Reciever is null", NULL, LOCATE_program, 135);
         }
         REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB2)) {
             /* ./program.nit:135 */
             REGB2 = REGB0;
@@ -674,14 +688,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:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB2 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB0 = REGB2;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label9;
           }
         }
@@ -697,10 +711,10 @@ void program___Program___generate_allocation_iroutines(val_t p0){
         fra.me.REG[4] = CALL_icode___icode_base___IRoutine___location(fra.me.REG[4])(fra.me.REG[4]);
         CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
         /* ./program.nit:138 */
-        fra.me.REG[4] = CALL_program___Program___main_module(closctx->REG[0])(closctx->REG[0]);
+        fra.me.REG[4] = CALL_program___Program___main_module(closctx->REG[1])(closctx->REG[1]);
         fra.me.REG[4] = NEW_ICodeBuilder_icode___icode_builder___ICodeBuilder___init(fra.me.REG[4], fra.me.REG[3]);
         /* ./program.nit:140 */
-        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[5] = NEW_IAllocateInstance_icode___icode_base___IAllocateInstance___init(fra.me.REG[5]);
         /* ./program.nit:141 */
         CALL_icode___icode_base___ICode___result__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
@@ -713,25 +727,25 @@ void program___Program___generate_allocation_iroutines(val_t p0){
         /* ./program.nit:144 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add_all(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
         /* ./program.nit:146 */
-        fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+        fra.me.REG[2] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[2] = NEW_IInitAttributes_icode___icode_base___IInitAttributes___init(fra.me.REG[2], fra.me.REG[1]);
         CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
         /* ./program.nit:147 */
         fra.me.REG[5] = NEW_IStaticCall_icode___icode_base___IStaticCall___init(fra.me.REG[0], fra.me.REG[5]);
         CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
         /* ./program.nit:148 */
-        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[1])(closctx->REG[1]);
+        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(closctx->REG[2])(closctx->REG[2]);
         fra.me.REG[1] = NEW_ICheckInstance_icode___icode_base___ICheckInstance___init(fra.me.REG[5], fra.me.REG[1]);
         CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
         /* ./program.nit:150 */
-        fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[1])(closctx->REG[1]);
+        fra.me.REG[1] = CALL_program___MMLocalClass___new_instance_iroutine(closctx->REG[2])(closctx->REG[2]);
         CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
         label8: while(0);
         stack_frame_head = fra.me.prev;
         return;
       }
 void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  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;
   fun_t CREG[1];
   val_t tmp;
@@ -740,22 +754,23 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
   fra.me.line = 156;
   fra.me.meth = LOCATE_program___Program___with_each_iroutines;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.closure_ctx = closctx_param;
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
   /* ./program.nit:161 */
-  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___mhe(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_program, 161);
   }
-  fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(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___with_each_iroutines_1));
+  fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_program___Program___with_each_iroutines_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label9;
@@ -779,9 +794,9 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    closctx->REG[0] = fra.me.REG[0];
+    closctx->REG[1] = fra.me.REG[0];
     /* ./program.nit:162 */
-    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx->REG[0])(closctx->REG[0]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(closctx->REG[1])(closctx->REG[1]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_iroutines_2));
     switch (closctx->has_broke) {
       case 0: break;
@@ -810,7 +825,7 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
       /* ./program.nit:163 */
-      closctx->REG[1] = NIT_NULL;
+      closctx->REG[2] = NIT_NULL;
       /* ./program.nit:166 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___local_local_properties(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], closctx, ((fun_t)OC_program___Program___with_each_iroutines_3));
@@ -820,24 +835,24 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
       }
       /* ./program.nit:177 */
       fra.me.REG[1] = CALL_program___MMLocalClass___init_var_iroutine(fra.me.REG[0])(fra.me.REG[0]);
-      closctx->REG[1] = fra.me.REG[1];
+      closctx->REG[2] = fra.me.REG[1];
       /* ./program.nit:178 */
-      REGB0 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+      REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+        REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[1])(closctx->REG[1], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         /* ./program.nit:179 */
-        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[1], closctx->REG[0]);
+        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
         if (closctx->closure_ctx->has_broke) {
           closctx->has_broke = 1;
           goto label5;
@@ -845,24 +860,24 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
       }
       /* ./program.nit:181 */
       fra.me.REG[1] = CALL_program___MMLocalClass___checknew_iroutine(fra.me.REG[0])(fra.me.REG[0]);
-      closctx->REG[1] = fra.me.REG[1];
+      closctx->REG[2] = fra.me.REG[1];
       /* ./program.nit:182 */
-      REGB0 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+      REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+        REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[1])(closctx->REG[1], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         /* ./program.nit:183 */
-        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[1], closctx->REG[0]);
+        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
         if (closctx->closure_ctx->has_broke) {
           closctx->has_broke = 1;
           goto label5;
@@ -870,6 +885,7 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
       }
       /* ./program.nit:185 */
       fra.me.REG[0] = CALL_program___MMLocalClass___new_instance_iroutine(fra.me.REG[0])(fra.me.REG[0]);
+      fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
       CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_program___Program___with_each_iroutines_6));
       switch (closctx->has_broke) {
         case 0: break;
@@ -902,26 +918,26 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
         if (UNTAG_Bool(REGB0)) {
           /* ./program.nit:168 */
           fra.me.REG[1] = CALL_icode___icode_base___MMAttribute___iroutine(fra.me.REG[0])(fra.me.REG[0]);
-          closctx->REG[1] = fra.me.REG[1];
+          closctx->REG[2] = fra.me.REG[1];
         } else {
           /* ./program.nit:169 */
           REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
           if (UNTAG_Bool(REGB0)) {
             /* ./program.nit:170 */
             fra.me.REG[0] = CALL_icode___icode_base___MMMethod___iroutine(fra.me.REG[0])(fra.me.REG[0]);
-            closctx->REG[1] = fra.me.REG[0];
+            closctx->REG[2] = fra.me.REG[0];
           }
         }
         /* ./program.nit:172 */
-        REGB0 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+        REGB0 = TAG_Bool(closctx->REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          REGB1 = TAG_Bool(closctx->REG[1]==NIT_NULL);
+          REGB1 = TAG_Bool(closctx->REG[2]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB0 = REGB1;
           } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[1])(closctx->REG[1], NIT_NULL);
+            REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[2])(closctx->REG[2], NIT_NULL);
             REGB0 = REGB1;
           }
         }
@@ -929,7 +945,7 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
           goto label4;
         }
         /* ./program.nit:173 */
-        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[1], closctx->REG[0]);
+        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, closctx->REG[2], closctx->REG[1]);
         if (closctx->closure_ctx->has_broke) {
           closctx->has_broke = 1;
           goto label4;
@@ -954,7 +970,7 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
         fra.me.REG[0] = p0;
         CREG[0] = clos_fun0;
         /* ./program.nit:186 */
-        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], closctx->REG[0]);
+        ((void (*)(struct stack_frame_t *, val_t, val_t))(closctx->closure_funs[0]))(closctx->closure_ctx, fra.me.REG[0], closctx->REG[1]);
         if (closctx->closure_ctx->has_broke) {
           closctx->has_broke = 1;
           goto label7;
@@ -964,7 +980,7 @@ void program___Program___with_each_iroutines(val_t p0, struct stack_frame_t *clo
         return;
       }
 void program___Program___with_each_methods(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  struct {struct stack_frame_t me;} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   fun_t CREG[1];
   val_t tmp;
@@ -973,21 +989,22 @@ void program___Program___with_each_methods(val_t p0, struct stack_frame_t *closc
   fra.me.line = 192;
   fra.me.meth = LOCATE_program___Program___with_each_methods;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.closure_ctx = closctx_param;
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
   /* ./program.nit:197 */
-  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___mhe(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  fra.me.REG[1] = CALL_program___Program___main_module(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_program, 197);
   }
-  fra.me.REG[0] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(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___with_each_methods_1));
+  fra.me.REG[1] = CALL_metamodel___partial_order___PartialOrderElement___greaters_and_self(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[1])(fra.me.REG[1], (&(fra.me)), ((fun_t)OC_program___Program___with_each_methods_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label7;
index cff483e..36155f3 100644 (file)
@@ -1,8 +1,9 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/program. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./program. */
 #ifndef program_sep
 #define program_sep
 #include "icode._sep.h"
 #include "primitive_info._sep.h"
+#include "mmloader._sep.h"
 #include <nit_common.h>
 
 extern const classtable_elt_t VFT_program___Program[];
index 107abdd..8deb82e 100644 (file)
@@ -210,6 +210,7 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -235,16 +236,21 @@ void separate_options___ToolContext___integrate_separate_options(val_t p0, val_t
   /* ./separate_options.nit:28 */
   fra.me.REG[1] = CALL_separate_options___ToolContext___separate_options(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_opts___OptionContext___rest(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./separate_options.nit:28 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./separate_options.nit:28 */
   if (UNTAG_Bool(REGB1)) {
index 68d4816..4f4b1a3 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/separate_options. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./separate_options. */
 #ifndef separate_options_sep
 #define separate_options_sep
 #include "native_interface._sep.h"
index 4b5f9f6..2172cb9 100644 (file)
@@ -159,7 +159,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___is_empty(v
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./../lib/standard//collection//abstract_collection.nit:83 */
     REGB2 = REGB1;
@@ -211,7 +211,7 @@ 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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(closctx->REG[1])+UNTAG_Int(REGB0));
     /* ./../lib/standard//collection//abstract_collection.nit:88 */
     closctx->REG[1] = REGB0;
@@ -411,7 +411,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___count(val_
     }
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(closctx->REG[2])+UNTAG_Int(REGB0));
       /* ./../lib/standard//collection//abstract_collection.nit:107 */
       closctx->REG[2] = REGB0;
@@ -423,6 +423,7 @@ val_t standard___collection___abstract_collection___NaiveCollection___first(val_
   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___collection___abstract_collection;
@@ -435,7 +436,12 @@ val_t standard___collection___abstract_collection___NaiveCollection___first(val_
   /* ./../lib/standard//collection//abstract_collection.nit:113 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//abstract_collection.nit:113 */
   if (UNTAG_Bool(REGB1)) {
@@ -948,7 +954,7 @@ val_t standard___collection___abstract_collection___Set___has_only(val_t p0, val
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./../lib/standard//collection//abstract_collection.nit:218 */
     REGB2 = REGB1;
@@ -963,7 +969,7 @@ val_t standard___collection___abstract_collection___Set___has_only(val_t p0, val
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./../lib/standard//collection//abstract_collection.nit:220 */
       REGB3 = REGB1;
@@ -1048,18 +1054,26 @@ val_t standard___collection___abstract_collection___MapRead_____bra(val_t p0, va
   return NIT_NULL;
 }
 val_t standard___collection___abstract_collection___MapRead___has_key(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
+  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_standard___collection___abstract_collection;
   fra.me.line = 246;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___has_key;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:246 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 246);
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//abstract_collection.nit:247 */
+  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;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return NIT_NULL;
+  return REGB0;
 }
 val_t standard___collection___abstract_collection___MapRead___iterator(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1075,31 +1089,116 @@ val_t standard___collection___abstract_collection___MapRead___iterator(val_t p0)
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-void standard___collection___abstract_collection___Map_____braeq(val_t p0, val_t p1, val_t p2){
+void standard___collection___abstract_collection___MapRead___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  val_t REGB0;
+  fun_t CREG[1];
+  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.meth = LOCATE_standard___collection___abstract_collection___MapRead___iterate;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.closure_ctx = closctx_param;
+  fra.me.closure_funs = CREG;
+  fra.me.REG[0] = p0;
+  CREG[0] = clos_fun0;
+  /* ./../lib/standard//collection//abstract_collection.nit:256 */
+  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 */
+  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 */
+      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 */
+      CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
+    } else {
+      /* ./../lib/standard//collection//abstract_collection.nit:257 */
+      goto label2;
+    }
+  }
+  label2: while(0);
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___abstract_collection___MapRead___values(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___collection___abstract_collection;
-  fra.me.line = 267;
-  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map_____braeq;
+  fra.me.line = 263;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___values;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:267 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 267);
+  /* ./../lib/standard//collection//abstract_collection.nit:263 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 263);
   stack_frame_head = fra.me.prev;
-  return;
+  return NIT_NULL;
+}
+val_t standard___collection___abstract_collection___MapRead___keys(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___collection___abstract_collection;
+  fra.me.line = 268;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___keys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:268 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 268);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+val_t standard___collection___abstract_collection___MapRead___is_empty(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___collection___abstract_collection;
+  fra.me.line = 273;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___is_empty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:273 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 273);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+val_t standard___collection___abstract_collection___MapRead___length(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___collection___abstract_collection;
+  fra.me.line = 276;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapRead___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:276 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 276);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
 }
-void standard___collection___abstract_collection___Map___remove_at(val_t p0, val_t p1){
+void standard___collection___abstract_collection___Map_____braeq(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_standard___collection___abstract_collection;
-  fra.me.line = 270;
-  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___remove_at;
+  fra.me.line = 304;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:270 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 270);
+  /* ./../lib/standard//collection//abstract_collection.nit:304 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 304);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1109,7 +1208,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 = 273;
+  fra.me.line = 307;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___recover_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1119,20 +1218,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:277 */
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//abstract_collection.nit:278 */
+  /* ./../lib/standard//collection//abstract_collection.nit:311 */
+  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 */
   while(1) {
-    REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[1])(fra.me.REG[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:279 */
+      /* ./../lib/standard//collection//abstract_collection.nit:313 */
       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___Iterator___item(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:280 */
-      CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./../lib/standard//collection//abstract_collection.nit:314 */
+      CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[1])(fra.me.REG[1]);
     } else {
-      /* ./../lib/standard//collection//abstract_collection.nit:278 */
+      /* ./../lib/standard//collection//abstract_collection.nit:312 */
       goto label1;
     }
   }
@@ -1140,47 +1239,377 @@ void standard___collection___abstract_collection___Map___recover_with(val_t p0,
   stack_frame_head = fra.me.prev;
   return;
 }
+void standard___collection___abstract_collection___Map___clear(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___collection___abstract_collection;
+  fra.me.line = 318;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:318 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 318);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___abstract_collection___Map___values(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___collection___abstract_collection;
+  fra.me.line = 321;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___values;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:321 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 321);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+val_t standard___collection___abstract_collection___Map___keys(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___collection___abstract_collection;
+  fra.me.line = 323;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Map___keys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:323 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 323);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+val_t standard___collection___abstract_collection___MapIterator___item(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___collection___abstract_collection;
+  fra.me.line = 328;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___item;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:328 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 328);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
 val_t standard___collection___abstract_collection___MapIterator___key(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___collection___abstract_collection;
-  fra.me.line = 288;
+  fra.me.line = 332;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:288 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 288);
+  /* ./../lib/standard//collection//abstract_collection.nit:332 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 332);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
+void standard___collection___abstract_collection___MapIterator___next(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___collection___abstract_collection;
+  fra.me.line = 336;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___next;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../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;
+}
+val_t standard___collection___abstract_collection___MapIterator___is_ok(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___collection___abstract_collection;
+  fra.me.line = 340;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapIterator___is_ok;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:340 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 340);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
+val_t standard___collection___abstract_collection___MapKeysIterator___iterator(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___collection___abstract_collection;
+  fra.me.line = 350;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:350 */
+  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);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___abstract_collection___MapKeysIterator___iterator__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___abstract_collection;
+  fra.me.line = 350;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//abstract_collection.nit:350 */
+  ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___abstract_collection___MapKeysIterator___is_ok(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___collection___abstract_collection;
+  fra.me.line = 353;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___is_ok;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:353 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void standard___collection___abstract_collection___MapKeysIterator___next(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___collection___abstract_collection;
+  fra.me.line = 354;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___next;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:354 */
+  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;
+  return;
+}
+val_t standard___collection___abstract_collection___MapKeysIterator___item(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___collection___abstract_collection;
+  fra.me.line = 355;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___item;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:355 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___abstract_collection___MapKeysIterator___init(val_t p0, val_t p1, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___MapKeysIterator].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} 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___collection___abstract_collection;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapKeysIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+val_t standard___collection___abstract_collection___MapValuesIterator___iterator(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___collection___abstract_collection;
+  fra.me.line = 361;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:361 */
+  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);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___abstract_collection___MapValuesIterator___iterator__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___abstract_collection;
+  fra.me.line = 361;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//abstract_collection.nit:361 */
+  ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___abstract_collection___MapValuesIterator___is_ok(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___collection___abstract_collection;
+  fra.me.line = 364;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___is_ok;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:364 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void standard___collection___abstract_collection___MapValuesIterator___next(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___collection___abstract_collection;
+  fra.me.line = 365;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___next;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:365 */
+  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;
+  return;
+}
+val_t standard___collection___abstract_collection___MapValuesIterator___item(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___collection___abstract_collection;
+  fra.me.line = 366;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___item;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//abstract_collection.nit:366 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___abstract_collection___MapValuesIterator___init(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___MapValuesIterator].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___collection___abstract_collection;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___MapValuesIterator___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
 val_t standard___collection___abstract_collection___SequenceRead___first(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___collection___abstract_collection;
-  fra.me.line = 299;
+  fra.me.line = 373;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:303 */
+  /* ./../lib/standard//collection//abstract_collection.nit:377 */
   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, 303);
+    nit_abort("Assert %s  failed", "'not_empty'", LOCATE_standard___collection___abstract_collection, 377);
   }
-  /* ./../lib/standard//collection//abstract_collection.nit:304 */
+  /* ./../lib/standard//collection//abstract_collection.nit:378 */
   REGB0 = TAG_Int(0);
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(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];
 }
+val_t standard___collection___abstract_collection___SequenceRead_____bra(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_standard___collection___abstract_collection;
+  fra.me.line = 381;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead_____bra;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:381 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 381);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
+}
 val_t standard___collection___abstract_collection___SequenceRead___last(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -1188,26 +1617,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 = 307;
+  fra.me.line = 386;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___last;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:311 */
+  /* ./../lib/standard//collection//abstract_collection.nit:390 */
   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, 311);
+    nit_abort("Assert %s  failed", "'not_empty'", LOCATE_standard___collection___abstract_collection, 390);
   }
-  /* ./../lib/standard//collection//abstract_collection.nit:312 */
+  /* ./../lib/standard//collection//abstract_collection.nit:391 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//abstract_collection.nit:312 */
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+  /* ./../lib/standard//collection//abstract_collection.nit:391 */
+  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);
   stack_frame_head = fra.me.prev;
@@ -1220,7 +1649,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 = 315;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___index_of;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1229,13 +1658,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:319 */
+  /* ./../lib/standard//collection//abstract_collection.nit:399 */
   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:320 */
+  /* ./../lib/standard//collection//abstract_collection.nit:400 */
   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:321 */
+      /* ./../lib/standard//collection//abstract_collection.nit:401 */
       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)) {
@@ -1253,19 +1682,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:322 */
+      /* ./../lib/standard//collection//abstract_collection.nit:402 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ./../lib/standard//collection//abstract_collection.nit:320 */
+      /* ./../lib/standard//collection//abstract_collection.nit:400 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//abstract_collection.nit:324 */
+  /* ./../lib/standard//collection//abstract_collection.nit:404 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//abstract_collection.nit:324 */
+  /* ./../lib/standard//collection//abstract_collection.nit:404 */
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
@@ -1277,12 +1706,12 @@ 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 = 327;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___SequenceRead___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:327 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 327);
+  /* ./../lib/standard//collection//abstract_collection.nit:407 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 407);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1292,7 +1721,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 = 336;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___first__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1300,9 +1729,9 @@ 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:339 */
+  /* ./../lib/standard//collection//abstract_collection.nit:419 */
   REGB0 = TAG_Int(0);
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
+  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;
 }
@@ -1310,10 +1739,11 @@ void standard___collection___abstract_collection___Sequence___last__eq(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___collection___abstract_collection;
-  fra.me.line = 341;
+  fra.me.line = 421;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___last__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1321,24 +1751,29 @@ 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:345 */
+  /* ./../lib/standard//collection//abstract_collection.nit:425 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//abstract_collection.nit:346 */
+  /* ./../lib/standard//collection//abstract_collection.nit:426 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//abstract_collection.nit:346 */
+  /* ./../lib/standard//collection//abstract_collection.nit:426 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//abstract_collection.nit:347 */
+    /* ./../lib/standard//collection//abstract_collection.nit:427 */
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//abstract_collection.nit:347 */
-    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
+    /* ./../lib/standard//collection//abstract_collection.nit:427 */
+    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:349 */
+    /* ./../lib/standard//collection//abstract_collection.nit:429 */
     REGB1 = TAG_Int(0);
-    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
+    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;
   return;
@@ -1348,7 +1783,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 = 353;
+  fra.me.line = 433;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1356,7 +1791,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:354 */
+  /* ./../lib/standard//collection//abstract_collection.nit:434 */
   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;
@@ -1366,12 +1801,12 @@ 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 = 356;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___push;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:356 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 356);
+  /* ./../lib/standard//collection//abstract_collection.nit:436 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 436);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1380,7 +1815,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 = 359;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___append;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1396,7 +1831,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:360 */
+    /* ./../lib/standard//collection//abstract_collection.nit:440 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___abstract_collection;
     fra.me.line = 0;
@@ -1417,12 +1852,12 @@ 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 = 362;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___pop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:362 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 362);
+  /* ./../lib/standard//collection//abstract_collection.nit:442 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 442);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1431,12 +1866,12 @@ 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 = 365;
+  fra.me.line = 445;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___unshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:365 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 365);
+  /* ./../lib/standard//collection//abstract_collection.nit:445 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 445);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1445,59 +1880,68 @@ 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 = 368;
+  fra.me.line = 448;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___shift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:368 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 368);
+  /* ./../lib/standard//collection//abstract_collection.nit:448 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 448);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
-val_t standard___collection___abstract_collection___IndexedIterator___index(val_t p0){
+void standard___collection___abstract_collection___Sequence_____braeq(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_standard___collection___abstract_collection;
-  fra.me.line = 377;
-  fra.me.meth = LOCATE_standard___collection___abstract_collection___IndexedIterator___index;
+  fra.me.line = 452;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:377 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 377);
+  /* ./../lib/standard//collection//abstract_collection.nit:452 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 452);
   stack_frame_head = fra.me.prev;
-  return NIT_NULL;
+  return;
 }
-val_t standard___collection___abstract_collection___IndexedIterator___key(val_t p0){
+void standard___collection___abstract_collection___Sequence___remove_at(val_t p0, val_t p1){
   struct {struct stack_frame_t me;} fra;
-  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___abstract_collection;
-  fra.me.line = 380;
-  fra.me.meth = LOCATE_standard___collection___abstract_collection___IndexedIterator___key;
+  fra.me.line = 455;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___Sequence___remove_at;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:381 */
-  REGB0 = CALL_standard___collection___abstract_collection___IndexedIterator___index(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:455 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 455);
   stack_frame_head = fra.me.prev;
-  return REGB0;
+  return;
+}
+val_t standard___collection___abstract_collection___IndexedIterator___index(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___collection___abstract_collection;
+  fra.me.line = 462;
+  fra.me.meth = LOCATE_standard___collection___abstract_collection___IndexedIterator___index;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  /* ./../lib/standard//collection//abstract_collection.nit:462 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 462);
+  stack_frame_head = fra.me.prev;
+  return NIT_NULL;
 }
 val_t standard___collection___abstract_collection___CoupleMap___couple_at(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_standard___collection___abstract_collection;
-  fra.me.line = 387;
+  fra.me.line = 469;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMap___couple_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//abstract_collection.nit:387 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 387);
+  /* ./../lib/standard//collection//abstract_collection.nit:469 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___abstract_collection, 469);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -1508,7 +1952,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 = 391;
+  fra.me.line = 473;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMap_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1516,9 +1960,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:393 */
+  /* ./../lib/standard//collection//abstract_collection.nit:475 */
   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:394 */
+  /* ./../lib/standard//collection//abstract_collection.nit:476 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1532,13 +1976,13 @@ val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0,
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//abstract_collection.nit:395 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___abstract_collection, 395);
+    /* ./../lib/standard//collection//abstract_collection.nit:477 */
+    nit_abort("Aborted", NULL, LOCATE_standard___collection___abstract_collection, 477);
   } else {
-    /* ./../lib/standard//collection//abstract_collection.nit:397 */
+    /* ./../lib/standard//collection//abstract_collection.nit:479 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 397);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 479);
     }
     fra.me.REG[1] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[1])(fra.me.REG[1]);
     goto label1;
@@ -1547,64 +1991,29 @@ val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0,
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t standard___collection___abstract_collection___CoupleMap___has_key(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___collection___abstract_collection;
-  fra.me.line = 401;
-  fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMap___has_key;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//abstract_collection.nit:401 */
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___CoupleMap___couple_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
 val_t standard___collection___abstract_collection___CoupleMapIterator___item(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___collection___abstract_collection;
-  fra.me.line = 409;
+  fra.me.line = 489;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:409 */
+  /* ./../lib/standard//collection//abstract_collection.nit:489 */
   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, 409);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 489);
   }
   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, 409);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 489);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1618,23 +2027,23 @@ 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 = 413;
+  fra.me.line = 493;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:413 */
+  /* ./../lib/standard//collection//abstract_collection.nit:493 */
   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, 413);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 493);
   }
   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, 413);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___abstract_collection, 493);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1648,17 +2057,17 @@ 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 = 415;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:415 */
+  /* ./../lib/standard//collection//abstract_collection.nit:495 */
   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, 415);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 495);
   }
   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]);
@@ -1673,17 +2082,17 @@ 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 = 417;
+  fra.me.line = 497;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:419 */
+  /* ./../lib/standard//collection//abstract_collection.nit:499 */
   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, 419);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___abstract_collection, 499);
   }
   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]);
@@ -1691,13 +2100,13 @@ void standard___collection___abstract_collection___CoupleMapIterator___next(val_
   return;
 }
 void standard___collection___abstract_collection___CoupleMapIterator___init(val_t p0, val_t p1, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMapIterator].i;
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMapIterator].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos2]) return;
+  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 = 424;
+  fra.me.line = 504;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___CoupleMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1705,10 +2114,10 @@ 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:424 */
+  /* ./../lib/standard//collection//abstract_collection.nit:504 */
   ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
+  init_table[itpos4] = 1;
   return;
 }
 val_t standard___collection___abstract_collection___Couple___first(val_t p0){
@@ -1716,13 +2125,13 @@ 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 = 432;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:432 */
+  /* ./../lib/standard//collection//abstract_collection.nit:512 */
   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];
@@ -1732,7 +2141,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 = 432;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___first__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1740,7 +2149,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:432 */
+  /* ./../lib/standard//collection//abstract_collection.nit:512 */
   ATTR_standard___collection___abstract_collection___Couple____first(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1750,13 +2159,13 @@ 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 = 435;
+  fra.me.line = 515;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___second;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//abstract_collection.nit:435 */
+  /* ./../lib/standard//collection//abstract_collection.nit:515 */
   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];
@@ -1766,7 +2175,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 = 435;
+  fra.me.line = 515;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___second__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1774,19 +2183,19 @@ 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:435 */
+  /* ./../lib/standard//collection//abstract_collection.nit:515 */
   ATTR_standard___collection___abstract_collection___Couple____second(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
 void standard___collection___abstract_collection___Couple___init(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___Couple].i;
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___abstract_collection___Couple].i;
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t tmp;
-  if (init_table[itpos3]) return;
+  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 = 438;
+  fra.me.line = 518;
   fra.me.meth = LOCATE_standard___collection___abstract_collection___Couple___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1796,11 +2205,11 @@ 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:441 */
+  /* ./../lib/standard//collection//abstract_collection.nit:521 */
   ATTR_standard___collection___abstract_collection___Couple____first(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//abstract_collection.nit:442 */
+  /* ./../lib/standard//collection//abstract_collection.nit:522 */
   ATTR_standard___collection___abstract_collection___Couple____second(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
+  init_table[itpos5] = 1;
   return;
 }
index d1c5910..eae428c 100644 (file)
@@ -26,6 +26,10 @@ extern const classtable_elt_t VFT_standard___collection___abstract_collection___
 
 extern const classtable_elt_t VFT_standard___collection___abstract_collection___MapIterator[];
 
+extern const classtable_elt_t VFT_standard___collection___abstract_collection___MapKeysIterator[];
+
+extern const classtable_elt_t VFT_standard___collection___abstract_collection___MapValuesIterator[];
+
 extern const classtable_elt_t VFT_standard___collection___abstract_collection___SequenceRead[];
 
 extern const classtable_elt_t VFT_standard___collection___abstract_collection___Sequence[];
@@ -91,54 +95,80 @@ extern const int SFT_standard___collection___abstract_collection[];
 #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 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)
 #define CALL_standard___collection___abstract_collection___Map_____braeq(recv) ((standard___collection___abstract_collection___Map_____braeq_t)CALL((recv), (SFT_standard___collection___abstract_collection[31] + 1)))
-#define CALL_standard___collection___abstract_collection___Map___remove_at(recv) ((standard___collection___abstract_collection___Map___remove_at_t)CALL((recv), (SFT_standard___collection___abstract_collection[31] + 2)))
-#define CALL_standard___collection___abstract_collection___Map___recover_with(recv) ((standard___collection___abstract_collection___Map___recover_with_t)CALL((recv), (SFT_standard___collection___abstract_collection[31] + 3)))
+#define CALL_standard___collection___abstract_collection___Map___recover_with(recv) ((standard___collection___abstract_collection___Map___recover_with_t)CALL((recv), (SFT_standard___collection___abstract_collection[31] + 2)))
+#define CALL_standard___collection___abstract_collection___Map___clear(recv) ((standard___collection___abstract_collection___Map___clear_t)CALL((recv), (SFT_standard___collection___abstract_collection[31] + 3)))
 #define ID_standard___collection___abstract_collection___MapIterator (SFT_standard___collection___abstract_collection[32])
 #define COLOR_standard___collection___abstract_collection___MapIterator (SFT_standard___collection___abstract_collection[33])
 #define INIT_TABLE_POS_standard___collection___abstract_collection___MapIterator (SFT_standard___collection___abstract_collection[34] + 0)
-#define CALL_standard___collection___abstract_collection___MapIterator___key(recv) ((standard___collection___abstract_collection___MapIterator___key_t)CALL((recv), (SFT_standard___collection___abstract_collection[34] + 1)))
-#define ID_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[35])
-#define COLOR_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[36])
-#define INIT_TABLE_POS_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[37] + 0)
-#define CALL_standard___collection___abstract_collection___SequenceRead___last(recv) ((standard___collection___abstract_collection___SequenceRead___last_t)CALL((recv), (SFT_standard___collection___abstract_collection[37] + 1)))
-#define CALL_standard___collection___abstract_collection___SequenceRead___index_of(recv) ((standard___collection___abstract_collection___SequenceRead___index_of_t)CALL((recv), (SFT_standard___collection___abstract_collection[37] + 2)))
-#define ID_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[38])
-#define COLOR_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[39])
-#define INIT_TABLE_POS_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[40] + 0)
-#define CALL_standard___collection___abstract_collection___Sequence___first__eq(recv) ((standard___collection___abstract_collection___Sequence___first__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 1)))
-#define CALL_standard___collection___abstract_collection___Sequence___last__eq(recv) ((standard___collection___abstract_collection___Sequence___last__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 2)))
-#define CALL_standard___collection___abstract_collection___Sequence___push(recv) ((standard___collection___abstract_collection___Sequence___push_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 3)))
-#define CALL_standard___collection___abstract_collection___Sequence___append(recv) ((standard___collection___abstract_collection___Sequence___append_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 4)))
-#define CALL_standard___collection___abstract_collection___Sequence___pop(recv) ((standard___collection___abstract_collection___Sequence___pop_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 5)))
-#define CALL_standard___collection___abstract_collection___Sequence___unshift(recv) ((standard___collection___abstract_collection___Sequence___unshift_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 6)))
-#define CALL_standard___collection___abstract_collection___Sequence___shift(recv) ((standard___collection___abstract_collection___Sequence___shift_t)CALL((recv), (SFT_standard___collection___abstract_collection[40] + 7)))
-#define ID_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[41])
-#define COLOR_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[42])
-#define INIT_TABLE_POS_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[43] + 0)
-#define CALL_standard___collection___abstract_collection___IndexedIterator___index(recv) ((standard___collection___abstract_collection___IndexedIterator___index_t)CALL((recv), (SFT_standard___collection___abstract_collection[43] + 1)))
-#define ID_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[44])
-#define COLOR_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[45])
-#define INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[46] + 0)
-#define CALL_standard___collection___abstract_collection___CoupleMap___couple_at(recv) ((standard___collection___abstract_collection___CoupleMap___couple_at_t)CALL((recv), (SFT_standard___collection___abstract_collection[46] + 1)))
-#define ID_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[47])
-#define COLOR_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[48])
-#define ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[49] + 0))
-#define INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[50] + 0)
-#define CALL_standard___collection___abstract_collection___CoupleMapIterator___init(recv) ((standard___collection___abstract_collection___CoupleMapIterator___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[50] + 1)))
-#define ID_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[51])
-#define COLOR_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[52])
-#define ATTR_standard___collection___abstract_collection___Couple____first(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[53] + 0))
-#define ATTR_standard___collection___abstract_collection___Couple____second(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[53] + 1))
-#define INIT_TABLE_POS_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[54] + 0)
-#define CALL_standard___collection___abstract_collection___Couple___first(recv) ((standard___collection___abstract_collection___Couple___first_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 1)))
-#define CALL_standard___collection___abstract_collection___Couple___first__eq(recv) ((standard___collection___abstract_collection___Couple___first__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 2)))
-#define CALL_standard___collection___abstract_collection___Couple___second(recv) ((standard___collection___abstract_collection___Couple___second_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 3)))
-#define CALL_standard___collection___abstract_collection___Couple___second__eq(recv) ((standard___collection___abstract_collection___Couple___second__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 4)))
-#define CALL_standard___collection___abstract_collection___Couple___init(recv) ((standard___collection___abstract_collection___Couple___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 5)))
+#define CALL_standard___collection___abstract_collection___MapIterator___item(recv) ((standard___collection___abstract_collection___MapIterator___item_t)CALL((recv), (SFT_standard___collection___abstract_collection[34] + 1)))
+#define CALL_standard___collection___abstract_collection___MapIterator___key(recv) ((standard___collection___abstract_collection___MapIterator___key_t)CALL((recv), (SFT_standard___collection___abstract_collection[34] + 2)))
+#define CALL_standard___collection___abstract_collection___MapIterator___next(recv) ((standard___collection___abstract_collection___MapIterator___next_t)CALL((recv), (SFT_standard___collection___abstract_collection[34] + 3)))
+#define CALL_standard___collection___abstract_collection___MapIterator___is_ok(recv) ((standard___collection___abstract_collection___MapIterator___is_ok_t)CALL((recv), (SFT_standard___collection___abstract_collection[34] + 4)))
+#define ID_standard___collection___abstract_collection___MapKeysIterator (SFT_standard___collection___abstract_collection[35])
+#define COLOR_standard___collection___abstract_collection___MapKeysIterator (SFT_standard___collection___abstract_collection[36])
+#define ATTR_standard___collection___abstract_collection___MapKeysIterator_____atiterator(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[37] + 0))
+#define INIT_TABLE_POS_standard___collection___abstract_collection___MapKeysIterator (SFT_standard___collection___abstract_collection[38] + 0)
+#define CALL_standard___collection___abstract_collection___MapKeysIterator___iterator(recv) ((standard___collection___abstract_collection___MapKeysIterator___iterator_t)CALL((recv), (SFT_standard___collection___abstract_collection[38] + 1)))
+#define CALL_standard___collection___abstract_collection___MapKeysIterator___iterator__eq(recv) ((standard___collection___abstract_collection___MapKeysIterator___iterator__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[38] + 2)))
+#define CALL_standard___collection___abstract_collection___MapKeysIterator___init(recv) ((standard___collection___abstract_collection___MapKeysIterator___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[38] + 3)))
+#define ID_standard___collection___abstract_collection___MapValuesIterator (SFT_standard___collection___abstract_collection[39])
+#define COLOR_standard___collection___abstract_collection___MapValuesIterator (SFT_standard___collection___abstract_collection[40])
+#define ATTR_standard___collection___abstract_collection___MapValuesIterator_____atiterator(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[41] + 0))
+#define INIT_TABLE_POS_standard___collection___abstract_collection___MapValuesIterator (SFT_standard___collection___abstract_collection[42] + 0)
+#define CALL_standard___collection___abstract_collection___MapValuesIterator___iterator(recv) ((standard___collection___abstract_collection___MapValuesIterator___iterator_t)CALL((recv), (SFT_standard___collection___abstract_collection[42] + 1)))
+#define CALL_standard___collection___abstract_collection___MapValuesIterator___iterator__eq(recv) ((standard___collection___abstract_collection___MapValuesIterator___iterator__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[42] + 2)))
+#define CALL_standard___collection___abstract_collection___MapValuesIterator___init(recv) ((standard___collection___abstract_collection___MapValuesIterator___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[42] + 3)))
+#define ID_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[43])
+#define COLOR_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[44])
+#define INIT_TABLE_POS_standard___collection___abstract_collection___SequenceRead (SFT_standard___collection___abstract_collection[45] + 0)
+#define CALL_standard___collection___abstract_collection___SequenceRead_____bra(recv) ((standard___collection___abstract_collection___SequenceRead_____bra_t)CALL((recv), (SFT_standard___collection___abstract_collection[45] + 1)))
+#define CALL_standard___collection___abstract_collection___SequenceRead___last(recv) ((standard___collection___abstract_collection___SequenceRead___last_t)CALL((recv), (SFT_standard___collection___abstract_collection[45] + 2)))
+#define CALL_standard___collection___abstract_collection___SequenceRead___index_of(recv) ((standard___collection___abstract_collection___SequenceRead___index_of_t)CALL((recv), (SFT_standard___collection___abstract_collection[45] + 3)))
+#define ID_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[46])
+#define COLOR_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[47])
+#define INIT_TABLE_POS_standard___collection___abstract_collection___Sequence (SFT_standard___collection___abstract_collection[48] + 0)
+#define CALL_standard___collection___abstract_collection___Sequence___first__eq(recv) ((standard___collection___abstract_collection___Sequence___first__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 1)))
+#define CALL_standard___collection___abstract_collection___Sequence___last__eq(recv) ((standard___collection___abstract_collection___Sequence___last__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 2)))
+#define CALL_standard___collection___abstract_collection___Sequence___push(recv) ((standard___collection___abstract_collection___Sequence___push_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 3)))
+#define CALL_standard___collection___abstract_collection___Sequence___append(recv) ((standard___collection___abstract_collection___Sequence___append_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 4)))
+#define CALL_standard___collection___abstract_collection___Sequence___pop(recv) ((standard___collection___abstract_collection___Sequence___pop_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 5)))
+#define CALL_standard___collection___abstract_collection___Sequence___unshift(recv) ((standard___collection___abstract_collection___Sequence___unshift_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 6)))
+#define CALL_standard___collection___abstract_collection___Sequence___shift(recv) ((standard___collection___abstract_collection___Sequence___shift_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 7)))
+#define CALL_standard___collection___abstract_collection___Sequence_____braeq(recv) ((standard___collection___abstract_collection___Sequence_____braeq_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 8)))
+#define CALL_standard___collection___abstract_collection___Sequence___remove_at(recv) ((standard___collection___abstract_collection___Sequence___remove_at_t)CALL((recv), (SFT_standard___collection___abstract_collection[48] + 9)))
+#define ID_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[49])
+#define COLOR_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[50])
+#define INIT_TABLE_POS_standard___collection___abstract_collection___IndexedIterator (SFT_standard___collection___abstract_collection[51] + 0)
+#define CALL_standard___collection___abstract_collection___IndexedIterator___index(recv) ((standard___collection___abstract_collection___IndexedIterator___index_t)CALL((recv), (SFT_standard___collection___abstract_collection[51] + 1)))
+#define ID_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[52])
+#define COLOR_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[53])
+#define INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMap (SFT_standard___collection___abstract_collection[54] + 0)
+#define CALL_standard___collection___abstract_collection___CoupleMap___couple_at(recv) ((standard___collection___abstract_collection___CoupleMap___couple_at_t)CALL((recv), (SFT_standard___collection___abstract_collection[54] + 1)))
+#define ID_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[55])
+#define COLOR_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[56])
+#define ATTR_standard___collection___abstract_collection___CoupleMapIterator____iter(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[57] + 0))
+#define INIT_TABLE_POS_standard___collection___abstract_collection___CoupleMapIterator (SFT_standard___collection___abstract_collection[58] + 0)
+#define CALL_standard___collection___abstract_collection___CoupleMapIterator___init(recv) ((standard___collection___abstract_collection___CoupleMapIterator___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[58] + 1)))
+#define ID_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[59])
+#define COLOR_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[60])
+#define ATTR_standard___collection___abstract_collection___Couple____first(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[61] + 0))
+#define ATTR_standard___collection___abstract_collection___Couple____second(recv) ATTR(recv, (SFT_standard___collection___abstract_collection[61] + 1))
+#define INIT_TABLE_POS_standard___collection___abstract_collection___Couple (SFT_standard___collection___abstract_collection[62] + 0)
+#define CALL_standard___collection___abstract_collection___Couple___first(recv) ((standard___collection___abstract_collection___Couple___first_t)CALL((recv), (SFT_standard___collection___abstract_collection[62] + 1)))
+#define CALL_standard___collection___abstract_collection___Couple___first__eq(recv) ((standard___collection___abstract_collection___Couple___first__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[62] + 2)))
+#define CALL_standard___collection___abstract_collection___Couple___second(recv) ((standard___collection___abstract_collection___Couple___second_t)CALL((recv), (SFT_standard___collection___abstract_collection[62] + 3)))
+#define CALL_standard___collection___abstract_collection___Couple___second__eq(recv) ((standard___collection___abstract_collection___Couple___second__eq_t)CALL((recv), (SFT_standard___collection___abstract_collection[62] + 4)))
+#define CALL_standard___collection___abstract_collection___Couple___init(recv) ((standard___collection___abstract_collection___Couple___init_t)CALL((recv), (SFT_standard___collection___abstract_collection[62] + 5)))
 static const char * const LOCATE_standard___collection___abstract_collection___Collection___iterator = "abstract_collection::Collection::iterator";
 val_t standard___collection___abstract_collection___Collection___iterator(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___Collection___iterator_t)(val_t p0);
@@ -280,24 +310,96 @@ typedef val_t (*standard___collection___abstract_collection___MapRead_____bra_t)
 static const char * const 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);
 typedef val_t (*standard___collection___abstract_collection___MapRead___has_key_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___abstract_collection___MapRead___iterator = "abstract_collection::MapRead::(abstract_collection::Collection::iterator)";
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___iterator = "abstract_collection::MapRead::iterator";
 val_t standard___collection___abstract_collection___MapRead___iterator(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___MapRead___iterator_t)(val_t p0);
+typedef void (*CLOS_standard___collection___abstract_collection___MapRead___iterate_0)(struct stack_frame_t *, val_t, val_t);
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___iterate = "abstract_collection::MapRead::iterate";
+void standard___collection___abstract_collection___MapRead___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+typedef void (*standard___collection___abstract_collection___MapRead___iterate_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___values = "abstract_collection::MapRead::values";
+val_t standard___collection___abstract_collection___MapRead___values(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapRead___values_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___keys = "abstract_collection::MapRead::keys";
+val_t standard___collection___abstract_collection___MapRead___keys(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapRead___keys_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___is_empty = "abstract_collection::MapRead::is_empty";
+val_t standard___collection___abstract_collection___MapRead___is_empty(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapRead___is_empty_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapRead___length = "abstract_collection::MapRead::length";
+val_t standard___collection___abstract_collection___MapRead___length(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapRead___length_t)(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___Map_____braeq = "abstract_collection::Map::[]=";
 void standard___collection___abstract_collection___Map_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___collection___abstract_collection___Map_____braeq_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_standard___collection___abstract_collection___Map___remove_at = "abstract_collection::Map::remove_at";
-void standard___collection___abstract_collection___Map___remove_at(val_t p0, val_t p1);
-typedef void (*standard___collection___abstract_collection___Map___remove_at_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___abstract_collection___Map___recover_with = "abstract_collection::Map::recover_with";
 void standard___collection___abstract_collection___Map___recover_with(val_t p0, val_t p1);
 typedef void (*standard___collection___abstract_collection___Map___recover_with_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___abstract_collection___Map___clear = "abstract_collection::Map::clear";
+void standard___collection___abstract_collection___Map___clear(val_t p0);
+typedef void (*standard___collection___abstract_collection___Map___clear_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___Map___values = "abstract_collection::Map::(abstract_collection::MapRead::values)";
+val_t standard___collection___abstract_collection___Map___values(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___Map___values_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___Map___keys = "abstract_collection::Map::(abstract_collection::MapRead::keys)";
+val_t standard___collection___abstract_collection___Map___keys(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___Map___keys_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapIterator___item = "abstract_collection::MapIterator::item";
+val_t standard___collection___abstract_collection___MapIterator___item(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapIterator___item_t)(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___MapIterator___key = "abstract_collection::MapIterator::key";
 val_t standard___collection___abstract_collection___MapIterator___key(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___MapIterator___key_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapIterator___next = "abstract_collection::MapIterator::next";
+void standard___collection___abstract_collection___MapIterator___next(val_t p0);
+typedef void (*standard___collection___abstract_collection___MapIterator___next_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapIterator___is_ok = "abstract_collection::MapIterator::is_ok";
+val_t standard___collection___abstract_collection___MapIterator___is_ok(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapIterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator = "abstract_collection::MapKeysIterator::iterator";
+val_t standard___collection___abstract_collection___MapKeysIterator___iterator(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapKeysIterator___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___iterator__eq = "abstract_collection::MapKeysIterator::iterator=";
+void standard___collection___abstract_collection___MapKeysIterator___iterator__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___abstract_collection___MapKeysIterator___iterator__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___is_ok = "abstract_collection::MapKeysIterator::(abstract_collection::Iterator::is_ok)";
+val_t standard___collection___abstract_collection___MapKeysIterator___is_ok(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapKeysIterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___next = "abstract_collection::MapKeysIterator::(abstract_collection::Iterator::next)";
+void standard___collection___abstract_collection___MapKeysIterator___next(val_t p0);
+typedef void (*standard___collection___abstract_collection___MapKeysIterator___next_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___item = "abstract_collection::MapKeysIterator::(abstract_collection::Iterator::item)";
+val_t standard___collection___abstract_collection___MapKeysIterator___item(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapKeysIterator___item_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapKeysIterator___init = "abstract_collection::MapKeysIterator::init";
+void standard___collection___abstract_collection___MapKeysIterator___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___abstract_collection___MapKeysIterator___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_MapKeysIterator_standard___collection___abstract_collection___MapKeysIterator___init(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator = "abstract_collection::MapValuesIterator::iterator";
+val_t standard___collection___abstract_collection___MapValuesIterator___iterator(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapValuesIterator___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___iterator__eq = "abstract_collection::MapValuesIterator::iterator=";
+void standard___collection___abstract_collection___MapValuesIterator___iterator__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___abstract_collection___MapValuesIterator___iterator__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___is_ok = "abstract_collection::MapValuesIterator::(abstract_collection::Iterator::is_ok)";
+val_t standard___collection___abstract_collection___MapValuesIterator___is_ok(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapValuesIterator___is_ok_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___next = "abstract_collection::MapValuesIterator::(abstract_collection::Iterator::next)";
+void standard___collection___abstract_collection___MapValuesIterator___next(val_t p0);
+typedef void (*standard___collection___abstract_collection___MapValuesIterator___next_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___item = "abstract_collection::MapValuesIterator::(abstract_collection::Iterator::item)";
+val_t standard___collection___abstract_collection___MapValuesIterator___item(val_t p0);
+typedef val_t (*standard___collection___abstract_collection___MapValuesIterator___item_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___MapValuesIterator___init = "abstract_collection::MapValuesIterator::init";
+void standard___collection___abstract_collection___MapValuesIterator___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___abstract_collection___MapValuesIterator___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_MapValuesIterator_standard___collection___abstract_collection___MapValuesIterator___init(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___SequenceRead___first = "abstract_collection::SequenceRead::(abstract_collection::Collection::first)";
 val_t standard___collection___abstract_collection___SequenceRead___first(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___SequenceRead___first_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___SequenceRead_____bra = "abstract_collection::SequenceRead::[]";
+val_t standard___collection___abstract_collection___SequenceRead_____bra(val_t p0, val_t p1);
+typedef val_t (*standard___collection___abstract_collection___SequenceRead_____bra_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___abstract_collection___SequenceRead___last = "abstract_collection::SequenceRead::last";
 val_t standard___collection___abstract_collection___SequenceRead___last(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___SequenceRead___last_t)(val_t p0);
@@ -334,31 +436,31 @@ typedef void (*standard___collection___abstract_collection___Sequence___unshift_
 static const char * const LOCATE_standard___collection___abstract_collection___Sequence___shift = "abstract_collection::Sequence::shift";
 val_t standard___collection___abstract_collection___Sequence___shift(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___Sequence___shift_t)(val_t p0);
+static const char * const LOCATE_standard___collection___abstract_collection___Sequence_____braeq = "abstract_collection::Sequence::[]=";
+void standard___collection___abstract_collection___Sequence_____braeq(val_t p0, val_t p1, val_t p2);
+typedef void (*standard___collection___abstract_collection___Sequence_____braeq_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_standard___collection___abstract_collection___Sequence___remove_at = "abstract_collection::Sequence::remove_at";
+void standard___collection___abstract_collection___Sequence___remove_at(val_t p0, val_t p1);
+typedef void (*standard___collection___abstract_collection___Sequence___remove_at_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___abstract_collection___IndexedIterator___index = "abstract_collection::IndexedIterator::index";
 val_t standard___collection___abstract_collection___IndexedIterator___index(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___IndexedIterator___index_t)(val_t p0);
-static const char * const LOCATE_standard___collection___abstract_collection___IndexedIterator___key = "abstract_collection::IndexedIterator::(abstract_collection::MapIterator::key)";
-val_t standard___collection___abstract_collection___IndexedIterator___key(val_t p0);
-typedef val_t (*standard___collection___abstract_collection___IndexedIterator___key_t)(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___CoupleMap___couple_at = "abstract_collection::CoupleMap::couple_at";
 val_t standard___collection___abstract_collection___CoupleMap___couple_at(val_t p0, val_t p1);
 typedef val_t (*standard___collection___abstract_collection___CoupleMap___couple_at_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___abstract_collection___CoupleMap_____bra = "abstract_collection::CoupleMap::(abstract_collection::MapRead::[])";
 val_t standard___collection___abstract_collection___CoupleMap_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___collection___abstract_collection___CoupleMap_____bra_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___abstract_collection___CoupleMap___has_key = "abstract_collection::CoupleMap::(abstract_collection::MapRead::has_key)";
-val_t standard___collection___abstract_collection___CoupleMap___has_key(val_t p0, val_t p1);
-typedef val_t (*standard___collection___abstract_collection___CoupleMap___has_key_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___item = "abstract_collection::CoupleMapIterator::(abstract_collection::Iterator::item)";
+static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___item = "abstract_collection::CoupleMapIterator::(abstract_collection::MapIterator::item)";
 val_t standard___collection___abstract_collection___CoupleMapIterator___item(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___CoupleMapIterator___item_t)(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___key = "abstract_collection::CoupleMapIterator::(abstract_collection::MapIterator::key)";
 val_t standard___collection___abstract_collection___CoupleMapIterator___key(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___CoupleMapIterator___key_t)(val_t p0);
-static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___is_ok = "abstract_collection::CoupleMapIterator::(abstract_collection::Iterator::is_ok)";
+static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___is_ok = "abstract_collection::CoupleMapIterator::(abstract_collection::MapIterator::is_ok)";
 val_t standard___collection___abstract_collection___CoupleMapIterator___is_ok(val_t p0);
 typedef val_t (*standard___collection___abstract_collection___CoupleMapIterator___is_ok_t)(val_t p0);
-static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___next = "abstract_collection::CoupleMapIterator::(abstract_collection::Iterator::next)";
+static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___next = "abstract_collection::CoupleMapIterator::(abstract_collection::MapIterator::next)";
 void standard___collection___abstract_collection___CoupleMapIterator___next(val_t p0);
 typedef void (*standard___collection___abstract_collection___CoupleMapIterator___next_t)(val_t p0);
 static const char * const LOCATE_standard___collection___abstract_collection___CoupleMapIterator___init = "abstract_collection::CoupleMapIterator::init";
index 391ec15..1d762af 100644 (file)
@@ -6,17 +6,17 @@ val_t standard___collection___array___AbstractArrayRead___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 = 23;
+  fra.me.line = 24;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -47,7 +47,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./../lib/standard//collection//array.nit:26 */
     REGB2 = REGB1;
@@ -77,21 +77,26 @@ val_t standard___collection___array___AbstractArrayRead___has(val_t p0, val_t p1
   fra.me.REG[1] = p1;
   /* ./../lib/standard//collection//array.nit:30 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:32 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ./../lib/standard//collection//array.nit:32 */
     if (UNTAG_Bool(REGB2)) {
       /* ./../lib/standard//collection//array.nit:33 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -110,7 +115,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ./../lib/standard//collection//array.nit:34 */
       REGB0 = REGB3;
@@ -148,21 +153,26 @@ val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val
   fra.me.REG[1] = p1;
   /* ./../lib/standard//collection//array.nit:41 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:43 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ./../lib/standard//collection//array.nit:43 */
     if (UNTAG_Bool(REGB2)) {
       /* ./../lib/standard//collection//array.nit:44 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -182,7 +192,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
       /* ./../lib/standard//collection//array.nit:45 */
       REGB0 = REGB3;
@@ -200,45 +210,6 @@ val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val
   stack_frame_head = fra.me.prev;
   return REGB2;
 }
-val_t standard___collection___array___AbstractArrayRead___has_key(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___collection___array;
-  fra.me.line = 50;
-  fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___has_key;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:50 */
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:50 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    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, 23);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  } else {
-    /* ./../lib/standard//collection//array.nit:50 */
-    REGB0 = TAG_Bool(false);
-    REGB1 = REGB0;
-  }
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB1;
-}
 val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -249,7 +220,7 @@ val_t standard___collection___array___AbstractArrayRead___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___array;
-  fra.me.line = 52;
+  fra.me.line = 50;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -258,25 +229,30 @@ val_t standard___collection___array___AbstractArrayRead___count(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:54 */
+  /* ./../lib/standard//collection//array.nit:52 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:55 */
+  /* ./../lib/standard//collection//array.nit:53 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:57 */
+  /* ./../lib/standard//collection//array.nit:55 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:57 */
+    /* ./../lib/standard//collection//array.nit:55 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//collection//array.nit:58 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+      /* ./../lib/standard//collection//array.nit:56 */
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
       REGB3 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB3)) {
       } else {
@@ -291,24 +267,24 @@ val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t
       }
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:58 */
+        /* ./../lib/standard//collection//array.nit:56 */
         REGB0 = REGB3;
       }
-      /* ./../lib/standard//collection//array.nit:59 */
+      /* ./../lib/standard//collection//array.nit:57 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:59 */
+      /* ./../lib/standard//collection//array.nit:57 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:57 */
+      /* ./../lib/standard//collection//array.nit:55 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:61 */
+  /* ./../lib/standard//collection//array.nit:59 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -320,7 +296,7 @@ val_t standard___collection___array___AbstractArrayRead___index_of(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 = 64;
+  fra.me.line = 62;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___index_of;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -328,7 +304,7 @@ val_t standard___collection___array___AbstractArrayRead___index_of(val_t p0, val
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:64 */
+  /* ./../lib/standard//collection//array.nit:62 */
   REGB0 = TAG_Int(0);
   REGB0 = CALL_standard___collection___array___AbstractArrayRead___index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
   goto label1;
@@ -343,7 +319,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of(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 = 66;
+  fra.me.line = 64;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___last_index_of;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -351,16 +327,16 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:66 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   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);
@@ -388,21 +364,26 @@ val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:72 */
+  /* ./../lib/standard//collection//array.nit:74 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:72 */
+    /* ./../lib/standard//collection//array.nit:74 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:73 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* ./../lib/standard//collection//array.nit:75 */
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -416,27 +397,27 @@ val_t standard___collection___array___AbstractArrayRead___index_of_from(val_t p0
         }
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//collection//array.nit:74 */
+        /* ./../lib/standard//collection//array.nit:76 */
         REGB2 = REGB0;
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:76 */
+      /* ./../lib/standard//collection//array.nit:78 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:76 */
+      /* ./../lib/standard//collection//array.nit:78 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:72 */
+      /* ./../lib/standard//collection//array.nit:74 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//array.nit:78 */
+  /* ./../lib/standard//collection//array.nit:80 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:78 */
+  /* ./../lib/standard//collection//array.nit:80 */
   REGB2 = REGB0;
   goto label1;
   label1: while(0);
@@ -451,7 +432,7 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(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 = 81;
+  fra.me.line = 83;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___last_index_of_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -461,15 +442,20 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//collection//array.nit:84 */
+  /* ./../lib/standard//collection//array.nit:88 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:84 */
+    /* ./../lib/standard//collection//array.nit:88 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:85 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* ./../lib/standard//collection//array.nit:89 */
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
       REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -483,28 +469,28 @@ val_t standard___collection___array___AbstractArrayRead___last_index_of_from(val
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:86 */
+        /* ./../lib/standard//collection//array.nit:90 */
         REGB1 = REGB0;
         goto label1;
       } else {
-        /* ./../lib/standard//collection//array.nit:88 */
+        /* ./../lib/standard//collection//array.nit:92 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:88 */
+        /* ./../lib/standard//collection//array.nit:92 */
         REGB0 = REGB2;
       }
     } else {
-      /* ./../lib/standard//collection//array.nit:84 */
+      /* ./../lib/standard//collection//array.nit:88 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//array.nit:91 */
+  /* ./../lib/standard//collection//array.nit:95 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:91 */
+  /* ./../lib/standard//collection//array.nit:95 */
   REGB1 = REGB0;
   goto label1;
   label1: while(0);
@@ -515,10 +501,11 @@ val_t standard___collection___array___AbstractArrayRead___reversed(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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___collection___array;
-  fra.me.line = 94;
+  fra.me.line = 98;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___reversed;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -526,38 +513,43 @@ val_t standard___collection___array___AbstractArrayRead___reversed(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:96 */
+  /* ./../lib/standard//collection//array.nit:103 */
   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, 96);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 103);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:97 */
+  /* ./../lib/standard//collection//array.nit:104 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  /* ./../lib/standard//collection//array.nit:98 */
+  /* ./../lib/standard//collection//array.nit:105 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:98 */
+    /* ./../lib/standard//collection//array.nit:105 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:99 */
+      /* ./../lib/standard//collection//array.nit:106 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:99 */
+      /* ./../lib/standard//collection//array.nit:106 */
       REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:100 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* ./../lib/standard//collection//array.nit:107 */
+      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___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     } else {
-      /* ./../lib/standard//collection//array.nit:98 */
+      /* ./../lib/standard//collection//array.nit:105 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:102 */
+  /* ./../lib/standard//collection//array.nit:109 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -573,7 +565,7 @@ void standard___collection___array___AbstractArrayRead___copy_to(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 = 105;
+  fra.me.line = 112;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___copy_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -585,27 +577,32 @@ void standard___collection___array___AbstractArrayRead___copy_to(val_t p0, val_t
   REGB1 = p2;
   fra.me.REG[1] = p3;
   REGB2 = p4;
-  /* ./../lib/standard//collection//array.nit:109 */
+  /* ./../lib/standard//collection//array.nit:122 */
   while(1) {
     REGB3 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB3));
-    /* ./../lib/standard//collection//array.nit:109 */
+    /* ./../lib/standard//collection//array.nit:122 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//collection//array.nit:110 */
+      /* ./../lib/standard//collection//array.nit:123 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:110 */
+      /* ./../lib/standard//collection//array.nit:123 */
       REGB1 = REGB3;
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:111 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB4);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
+      /* ./../lib/standard//collection//array.nit:124 */
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB4);
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
     } else {
-      /* ./../lib/standard//collection//array.nit:109 */
+      /* ./../lib/standard//collection//array.nit:122 */
       goto label1;
     }
   }
@@ -622,31 +619,36 @@ void standard___collection___array___AbstractArrayRead___output(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 = 115;
+  fra.me.line = 128;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:117 */
+  /* ./../lib/standard//collection//array.nit:130 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:119 */
+  /* ./../lib/standard//collection//array.nit:132 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:119 */
+    /* ./../lib/standard//collection//array.nit:132 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:120 */
-      fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ./../lib/standard//collection//array.nit:121 */
+      /* ./../lib/standard//collection//array.nit:133 */
+      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:134 */
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -663,18 +665,18 @@ void standard___collection___array___AbstractArrayRead___output(val_t p0){
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 121);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 134);
         }
         CALL_standard___kernel___Object___output(fra.me.REG[1])(fra.me.REG[1]);
       }
-      /* ./../lib/standard//collection//array.nit:122 */
+      /* ./../lib/standard//collection//array.nit:135 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:122 */
+      /* ./../lib/standard//collection//array.nit:135 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:119 */
+      /* ./../lib/standard//collection//array.nit:132 */
       goto label1;
     }
   }
@@ -687,13 +689,13 @@ val_t standard___collection___array___AbstractArrayRead___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 = 126;
+  fra.me.line = 139;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:126 */
+  /* ./../lib/standard//collection//array.nit:139 */
   fra.me.REG[0] = NEW_ArrayIterator_standard___collection___array___ArrayIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -710,7 +712,7 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(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 = 128;
+  fra.me.line = 141;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArrayRead_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -720,7 +722,7 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(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:131 */
+  /* ./../lib/standard//collection//array.nit:144 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___collection___array___AbstractArray, ID_standard___collection___array___AbstractArray)) /*cast AbstractArray[E]*/;
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
@@ -733,32 +735,32 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:133 */
+  /* ./../lib/standard//collection//array.nit:146 */
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 133);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 146);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:133 */
+  /* ./../lib/standard//collection//array.nit:146 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB2)==(REGB1));
-    /* ./../lib/standard//collection//array.nit:133 */
+    /* ./../lib/standard//collection//array.nit:146 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -767,21 +769,26 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./../lib/standard//collection//array.nit:134 */
+  /* ./../lib/standard//collection//array.nit:147 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:135 */
+  /* ./../lib/standard//collection//array.nit:148 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:135 */
+    /* ./../lib/standard//collection//array.nit:148 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:136 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
+      /* ./../lib/standard//collection//array.nit:149 */
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
       REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 136);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 149);
       }
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
+      fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[3]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -800,19 +807,19 @@ val_t standard___collection___array___AbstractArrayRead_____eqeq(val_t p0, val_t
         REGB0 = REGB2;
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:137 */
+      /* ./../lib/standard//collection//array.nit:150 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:137 */
+      /* ./../lib/standard//collection//array.nit:150 */
       REGB3 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:135 */
+      /* ./../lib/standard//collection//array.nit:148 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//array.nit:139 */
+  /* ./../lib/standard//collection//array.nit:152 */
   REGB3 = TAG_Bool(true);
   REGB0 = REGB3;
   goto label1;
@@ -840,12 +847,12 @@ void standard___collection___array___AbstractArray___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 = 147;
+  fra.me.line = 161;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//collection//array.nit:147 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___array, 147);
+  /* ./../lib/standard//collection//array.nit:161 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___collection___array, 161);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -854,7 +861,7 @@ void standard___collection___array___AbstractArray___push(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 = 149;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___push;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -862,7 +869,7 @@ void standard___collection___array___AbstractArray___push(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:149 */
+  /* ./../lib/standard//collection//array.nit:166 */
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -874,30 +881,30 @@ val_t standard___collection___array___AbstractArray___pop(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 = 151;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___pop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:153 */
+  /* ./../lib/standard//collection//array.nit:170 */
   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___array, 153);
+    nit_abort("Assert %s  failed", "'not_empty'", LOCATE_standard___collection___array, 170);
   }
-  /* ./../lib/standard//collection//array.nit:154 */
+  /* ./../lib/standard//collection//array.nit:171 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:155 */
+  /* ./../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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:155 */
+  /* ./../lib/standard//collection//array.nit:172 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
-  /* ./../lib/standard//collection//array.nit:156 */
+  /* ./../lib/standard//collection//array.nit:173 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -911,7 +918,7 @@ val_t standard___collection___array___AbstractArray___shift(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 = 159;
+  fra.me.line = 176;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___shift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -919,56 +926,61 @@ val_t standard___collection___array___AbstractArray___shift(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:161 */
+  /* ./../lib/standard//collection//array.nit:178 */
   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___array, 161);
+    nit_abort("Assert %s  failed", "'not_empty'", LOCATE_standard___collection___array, 178);
   }
-  /* ./../lib/standard//collection//array.nit:162 */
+  /* ./../lib/standard//collection//array.nit:179 */
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:163 */
+  /* ./../lib/standard//collection//array.nit:180 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:165 */
+  /* ./../lib/standard//collection//array.nit:182 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:165 */
+    /* ./../lib/standard//collection//array.nit:182 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:166 */
+      /* ./../lib/standard//collection//array.nit:183 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:166 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:167 */
+      /* ./../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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:167 */
+      /* ./../lib/standard//collection//array.nit:184 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:165 */
+      /* ./../lib/standard//collection//array.nit:182 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:169 */
+  /* ./../lib/standard//collection//array.nit:186 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:169 */
+  /* ./../lib/standard//collection//array.nit:186 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:170 */
+  /* ./../lib/standard//collection//array.nit:187 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -978,10 +990,11 @@ void standard___collection___array___AbstractArray___unshift(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 REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 173;
+  fra.me.line = 190;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___unshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -990,46 +1003,51 @@ void standard___collection___array___AbstractArray___unshift(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:23 */
+  /* ./../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, 23);
+    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:175 */
+  /* ./../lib/standard//collection//array.nit:192 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:176 */
+  /* ./../lib/standard//collection//array.nit:193 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:176 */
+    /* ./../lib/standard//collection//array.nit:193 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:177 */
+      /* ./../lib/standard//collection//array.nit:194 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:177 */
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:178 */
+      /* ./../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:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:178 */
+      /* ./../lib/standard//collection//array.nit:195 */
       REGB1 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:176 */
+      /* ./../lib/standard//collection//array.nit:193 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:180 */
+  /* ./../lib/standard//collection//array.nit:197 */
   REGB1 = TAG_Int(0);
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
+  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;
   return;
 }
@@ -1041,7 +1059,7 @@ void standard___collection___array___AbstractArray___insert(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 = 183;
+  fra.me.line = 200;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___insert;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1050,36 +1068,36 @@ void standard___collection___array___AbstractArray___insert(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:185 */
+  /* ./../lib/standard//collection//array.nit:207 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./../lib/standard//collection//array.nit:185 */
+  /* ./../lib/standard//collection//array.nit:207 */
   CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:186 */
+  /* ./../lib/standard//collection//array.nit:208 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:186 */
+  /* ./../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);
-  /* ./../lib/standard//collection//array.nit:187 */
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
+  /* ./../lib/standard//collection//array.nit:209 */
+  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;
 }
@@ -1089,7 +1107,7 @@ void standard___collection___array___AbstractArray___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 = 190;
+  fra.me.line = 212;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1097,15 +1115,15 @@ void standard___collection___array___AbstractArray___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:23 */
+  /* ./../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, 23);
+    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:190 */
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
+  /* ./../lib/standard//collection//array.nit:212 */
+  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;
 }
@@ -1115,13 +1133,13 @@ void standard___collection___array___AbstractArray___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 = 192;
+  fra.me.line = 214;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:192 */
+  /* ./../lib/standard//collection//array.nit:214 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1133,7 +1151,7 @@ void standard___collection___array___AbstractArray___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 = 194;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1141,9 +1159,9 @@ void standard___collection___array___AbstractArray___remove(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:194 */
+  /* ./../lib/standard//collection//array.nit:216 */
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1151,10 +1169,11 @@ void standard___collection___array___AbstractArray___remove_all(val_t p0, val_t
   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___collection___array;
-  fra.me.line = 196;
+  fra.me.line = 218;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1162,22 +1181,27 @@ void standard___collection___array___AbstractArray___remove_all(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:198 */
+  /* ./../lib/standard//collection//array.nit:220 */
   REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:199 */
+  /* ./../lib/standard//collection//array.nit:221 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:199 */
+    /* ./../lib/standard//collection//array.nit:221 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:200 */
-      CALL_standard___collection___abstract_collection___Map___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ./../lib/standard//collection//array.nit:201 */
+      /* ./../lib/standard//collection//array.nit:222 */
+      CALL_standard___collection___abstract_collection___Sequence___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* ./../lib/standard//collection//array.nit:223 */
       REGB1 = CALL_standard___collection___array___AbstractArrayRead___index_of_from(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0);
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:199 */
+      /* ./../lib/standard//collection//array.nit:221 */
       goto label1;
     }
   }
@@ -1194,7 +1218,7 @@ void standard___collection___array___AbstractArray___remove_at(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 = 205;
+  fra.me.line = 227;
   fra.me.meth = LOCATE_standard___collection___array___AbstractArray___remove_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1202,75 +1226,116 @@ void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:208 */
+  /* ./../lib/standard//collection//array.nit:230 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-  /* ./../lib/standard//collection//array.nit:208 */
+  /* ./../lib/standard//collection//array.nit:230 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:208 */
+    /* ./../lib/standard//collection//array.nit:230 */
     REGB3 = TAG_Bool(false);
     REGB2 = REGB3;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:209 */
+    /* ./../lib/standard//collection//array.nit:231 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:210 */
+    /* ./../lib/standard//collection//array.nit:232 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:210 */
+      /* ./../lib/standard//collection//array.nit:232 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./../lib/standard//collection//array.nit:211 */
+        /* ./../lib/standard//collection//array.nit:233 */
         REGB0 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* ./../lib/standard//collection//array.nit:211 */
-        fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB2);
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:212 */
+        /* ./../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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//collection//array.nit:212 */
+        /* ./../lib/standard//collection//array.nit:234 */
         REGB2 = REGB0;
       } else {
-        /* ./../lib/standard//collection//array.nit:210 */
+        /* ./../lib/standard//collection//array.nit:232 */
         goto label1;
       }
     }
     label1: while(0);
-    /* ./../lib/standard//collection//array.nit:214 */
+    /* ./../lib/standard//collection//array.nit:236 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:214 */
+    /* ./../lib/standard//collection//array.nit:236 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
   }
   stack_frame_head = fra.me.prev;
   return;
 }
+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;
+  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___collection___array;
+  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[0] = NIT_NULL;
+  fra.me.REG[1] = 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);
+  /* ./../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;
+  return;
+}
 void standard___collection___array___Array___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   fun_t CREG[1];
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 231;
+  fra.me.line = 266;
   fra.me.meth = LOCATE_standard___collection___array___Array___iterate;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1281,50 +1346,55 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       ((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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
@@ -1341,45 +1411,55 @@ 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 = 243;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_standard___collection___array___Array_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1393,7 +1473,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 = 249;
+  fra.me.line = 284;
   fra.me.meth = LOCATE_standard___collection___array___Array_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1402,75 +1482,95 @@ 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:251 */
+  /* ./../lib/standard//collection//array.nit:286 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:251 */
+  /* ./../lib/standard//collection//array.nit:286 */
   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, 251);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 286);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
   } else {
-    /* ./../lib/standard//collection//array.nit:251 */
+    /* ./../lib/standard//collection//array.nit:286 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 251);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 286);
   }
-  /* ./../lib/standard//collection//array.nit:252 */
+  /* ./../lib/standard//collection//array.nit:287 */
   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, 252);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 287);
   }
   REGB2 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:252 */
+  /* ./../lib/standard//collection//array.nit:287 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:253 */
+    /* ./../lib/standard//collection//array.nit:288 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:253 */
+    /* ./../lib/standard//collection//array.nit:288 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB2);
   }
-  /* ./../lib/standard//collection//array.nit:255 */
+  /* ./../lib/standard//collection//array.nit:290 */
   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, 255);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 290);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:255 */
+  /* ./../lib/standard//collection//array.nit:290 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:256 */
+    /* ./../lib/standard//collection//array.nit:291 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:256 */
+    /* ./../lib/standard//collection//array.nit:291 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB2;
   }
-  /* ./../lib/standard//collection//array.nit:258 */
+  /* ./../lib/standard//collection//array.nit:293 */
   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, 258);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 293);
   }
-  /* ./../lib/standard//collection//array.nit:655 */
+  /* ./../lib/standard//collection//array.nit:719 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1479,10 +1579,11 @@ void standard___collection___array___Array___add(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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 261;
+  fra.me.line = 296;
   fra.me.meth = LOCATE_standard___collection___array___Array___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1490,44 +1591,49 @@ 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:263 */
+  /* ./../lib/standard//collection//array.nit:298 */
   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, 263);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 298);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:264 */
+  /* ./../lib/standard//collection//array.nit:299 */
   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, 264);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 299);
   }
   REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-  /* ./../lib/standard//collection//array.nit:264 */
+  /* ./../lib/standard//collection//array.nit:299 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//array.nit:265 */
+    /* ./../lib/standard//collection//array.nit:300 */
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:265 */
+    /* ./../lib/standard//collection//array.nit:300 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
   }
-  /* ./../lib/standard//collection//array.nit:267 */
+  /* ./../lib/standard//collection//array.nit:302 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:267 */
+  /* ./../lib/standard//collection//array.nit:302 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
-  /* ./../lib/standard//collection//array.nit:268 */
+  /* ./../lib/standard//collection//array.nit:303 */
   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, 268);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 303);
   }
-  /* ./../lib/standard//collection//array.nit:655 */
+  /* ./../lib/standard//collection//array.nit:719 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1541,7 +1647,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 = 271;
+  fra.me.line = 306;
   fra.me.meth = LOCATE_standard___collection___array___Array___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1550,70 +1656,85 @@ 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:273 */
+  /* ./../lib/standard//collection//array.nit:308 */
   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, 273);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 308);
   }
   REGB1 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:274 */
+  /* ./../lib/standard//collection//array.nit:309 */
   if (UNTAG_Bool(REGB2)) {
     goto label1;
   }
-  /* ./../lib/standard//collection//array.nit:275 */
+  /* ./../lib/standard//collection//array.nit:310 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:214 */
+    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:231 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:275 */
+    /* ./../lib/standard//collection//array.nit:310 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:221 */
+      /* ./../lib/standard//kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:275 */
+      /* ./../lib/standard//collection//array.nit:310 */
       REGB3 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:275 */
+      /* ./../lib/standard//collection//array.nit:310 */
       REGB1 = REGB3;
     } else {
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//array.nit:648 */
+  /* ./../lib/standard//collection//array.nit:712 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB1), sizeof(val_t));
-  /* ./../lib/standard//collection//array.nit:277 */
+  /* ./../lib/standard//collection//array.nit:312 */
   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, 277);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 312);
   }
   REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]);
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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:234 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
-  /* ./../lib/standard//collection//array.nit:277 */
+  /* ./../lib/standard//collection//array.nit:312 */
   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, 277);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 312);
     }
     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, 277);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 312);
     }
-    /* ./../lib/standard//collection//array.nit:656 */
+    /* ./../lib/standard//collection//array.nit:720 */
     (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:278 */
+  /* ./../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:279 */
+  /* ./../lib/standard//collection//array.nit:314 */
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1627,16 +1748,16 @@ 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 = 282;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_standard___collection___array___Array___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:285 */
+  /* ./../lib/standard//collection//array.nit:320 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:286 */
+  /* ./../lib/standard//collection//array.nit:321 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1651,7 +1772,7 @@ void standard___collection___array___Array___with_items(val_t p0, val_t p1, int*
   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 = 289;
+  fra.me.line = 324;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1660,32 +1781,33 @@ 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:289 */
+  /* ./../lib/standard//collection//array.nit:324 */
+  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, 289);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 324);
   }
-  /* ./../lib/standard//collection//array.nit:292 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
-  ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:293 */
+  /* ./../lib/standard//collection//array.nit:327 */
+  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:328 */
   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, 293);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___array, 328);
   }
   REGB0 = ATTR_standard___collection___array___Array____capacity(fra.me.REG[1]);
-  ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:23 */
+  ATTR_standard___collection___array___Array____capacity(fra.me.REG[2]) = REGB0;
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:294 */
-  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//collection//array.nit:329 */
+  ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
   return;
@@ -1695,11 +1817,12 @@ void standard___collection___array___Array___with_capacity(val_t p0, val_t p1, 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[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 297;
+  fra.me.line = 332;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1707,22 +1830,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:300 */
+  /* ./../lib/standard//collection//array.nit:335 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:300 */
+  /* ./../lib/standard//collection//array.nit:335 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 300);
+    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 335);
   }
-  /* ./../lib/standard//collection//array.nit:648 */
+  /* ./../lib/standard//collection//array.nit:712 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ./../lib/standard//collection//array.nit:301 */
+  /* ./../lib/standard//collection//array.nit:336 */
   ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:302 */
+  /* ./../lib/standard//collection//array.nit:337 */
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:303 */
+  /* ./../lib/standard//collection//array.nit:338 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1739,7 +1867,7 @@ void standard___collection___array___Array___filled_with(val_t p0, val_t p1, val
   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 = 306;
+  fra.me.line = 341;
   fra.me.meth = LOCATE_standard___collection___array___Array___filled_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1749,41 +1877,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:309 */
+  /* ./../lib/standard//collection//array.nit:344 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:309 */
+  /* ./../lib/standard//collection//array.nit:344 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 309);
+    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 344);
   }
-  /* ./../lib/standard//collection//array.nit:648 */
+  /* ./../lib/standard//collection//array.nit:712 */
   fra.me.REG[2] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ./../lib/standard//collection//array.nit:310 */
+  /* ./../lib/standard//collection//array.nit:345 */
   ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:311 */
+  /* ./../lib/standard//collection//array.nit:346 */
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:312 */
+  /* ./../lib/standard//collection//array.nit:347 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:313 */
+  /* ./../lib/standard//collection//array.nit:348 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:314 */
+  /* ./../lib/standard//collection//array.nit:349 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:314 */
+    /* ./../lib/standard//collection//array.nit:349 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:315 */
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, fra.me.REG[1]);
-      /* ./../lib/standard//collection//array.nit:316 */
+      /* ./../lib/standard//collection//array.nit:350 */
+      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:351 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:316 */
+      /* ./../lib/standard//collection//array.nit:351 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:314 */
+      /* ./../lib/standard//collection//array.nit:349 */
       goto label1;
     }
   }
@@ -1797,11 +1935,12 @@ void standard___collection___array___Array___with_native(val_t p0, val_t p1, val
   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[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 320;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_standard___collection___array___Array___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1810,48 +1949,56 @@ 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:323 */
+  /* ./../lib/standard//collection//array.nit:358 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:323 */
+  /* ./../lib/standard//collection//array.nit:358 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 323);
+    nit_abort("Assert %s  failed", "'positive'", LOCATE_standard___collection___array, 358);
   }
-  /* ./../lib/standard//collection//array.nit:324 */
+  /* ./../lib/standard//collection//array.nit:359 */
   ATTR_standard___collection___array___Array____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:325 */
+  /* ./../lib/standard//collection//array.nit:360 */
   ATTR_standard___collection___array___Array____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//array.nit:326 */
+  /* ./../lib/standard//collection//array.nit:361 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
   return;
 }
 val_t standard___collection___array___Array___intern_items(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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_standard___collection___array;
-  fra.me.line = 332;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_standard___collection___array___Array___intern_items;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:334 */
-  fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:367 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/standard//collection//array.nit:369 */
+  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, 334);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___array, 369);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void standard___collection___array___Array___sort(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
   struct {struct stack_frame_t me;} fra;
@@ -1862,7 +2009,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 = 339;
+  fra.me.line = 374;
   fra.me.meth = LOCATE_standard___collection___array___Array___sort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1871,18 +2018,18 @@ 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:343 */
+  /* ./../lib/standard//collection//array.nit:378 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:343 */
+  /* ./../lib/standard//collection//array.nit:378 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   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) {
@@ -1897,10 +2044,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:343 */
+    /* ./../lib/standard//collection//array.nit:378 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___collection___array;
-    fra.me.line = 343;
+    fra.me.line = 378;
     fra.me.meth = LOCATE_standard___collection___array___Array___sort;
     fra.me.has_broke = 0;
     fra.me.REG_size = 2;
@@ -1931,7 +2078,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 = 346;
+  fra.me.line = 381;
   fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1945,342 +2092,442 @@ void standard___collection___array___Array___sub_sort(val_t p0, val_t p1, val_t
   REGB0 = p1;
   REGB1 = p2;
   CREG[0] = clos_fun0;
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:350 */
+  /* ./../lib/standard//collection//array.nit:385 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:351 */
+    /* ./../lib/standard//collection//array.nit:386 */
     goto label1;
   } else {
-    /* ./../lib/standard//collection//array.nit:352 */
+    /* ./../lib/standard//collection//array.nit:387 */
     REGB2 = TAG_Int(7);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:352 */
+    /* ./../lib/standard//collection//array.nit:387 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[1] = fra.me.REG[0];
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label2;
       label2: while(0);
-      /* ./../lib/standard//collection//array.nit:354 */
+      /* ./../lib/standard//collection//array.nit:389 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:355 */
+      /* ./../lib/standard//collection//array.nit:390 */
       REGB3 = REGB1;
-      /* ./../lib/standard//collection//array.nit:356 */
+      /* ./../lib/standard//collection//array.nit:391 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:356 */
+        /* ./../lib/standard//collection//array.nit:391 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./../lib/standard//collection//array.nit:357 */
+          /* ./../lib/standard//collection//array.nit:392 */
           while(1) {
-            /* ./../lib/standard//kernel.nit:214 */
+            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:231 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:357 */
+            /* ./../lib/standard//collection//array.nit:392 */
             if (UNTAG_Bool(REGB4)) {
-              /* ./../lib/standard//collection//array.nit:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB4 = REGB2;
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB5 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB6 = TAG_Bool(false);
                REGB5 = REGB6;
               }
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label3;
               label3: while(0);
-              /* ./../lib/standard//collection//array.nit:357 */
+              /* ./../lib/standard//collection//array.nit:392 */
               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;
               }
               REGB5 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:214 */
+              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:231 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5));
             } else {
-              /* ./../lib/standard//collection//array.nit:357 */
+              /* ./../lib/standard//collection//array.nit:392 */
               REGB4 = TAG_Bool(false);
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
               REGB5 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-              /* ./../lib/standard//collection//array.nit:357 */
+              /* ./../lib/standard//collection//array.nit:392 */
               REGB2 = REGB5;
             } else {
               goto label4;
             }
           }
           label4: while(0);
-          /* ./../lib/standard//collection//array.nit:358 */
+          /* ./../lib/standard//collection//array.nit:393 */
           while(1) {
-            /* ./../lib/standard//kernel.nit:217 */
+            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:234 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-            /* ./../lib/standard//collection//array.nit:358 */
+            /* ./../lib/standard//collection//array.nit:393 */
             if (UNTAG_Bool(REGB5)) {
-              /* ./../lib/standard//collection//array.nit:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB5 = REGB3;
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB4 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB6 = TAG_Bool(false);
                REGB4 = REGB6;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label5;
               label5: while(0);
-              /* ./../lib/standard//collection//array.nit:358 */
+              /* ./../lib/standard//collection//array.nit:393 */
               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;
               }
               REGB4 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
             } else {
-              /* ./../lib/standard//collection//array.nit:358 */
+              /* ./../lib/standard//collection//array.nit:393 */
               REGB5 = TAG_Bool(false);
               REGB4 = REGB5;
             }
             if (UNTAG_Bool(REGB4)) {
               REGB4 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:220 */
+              /* ./../lib/standard//kernel.nit:237 */
               REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
-              /* ./../lib/standard//collection//array.nit:358 */
+              /* ./../lib/standard//collection//array.nit:393 */
               REGB3 = REGB4;
             } else {
               goto label6;
             }
           }
           label6: while(0);
-          /* ./../lib/standard//kernel.nit:217 */
+          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:234 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:359 */
+          /* ./../lib/standard//collection//array.nit:394 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[2] = fra.me.REG[0];
             REGB4 = REGB2;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB5 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB6 = TAG_Bool(false);
               REGB5 = REGB6;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label7;
             label7: while(0);
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[3] = fra.me.REG[0];
             REGB4 = REGB3;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB5 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB6 = TAG_Bool(false);
               REGB5 = REGB6;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label8;
             label8: while(0);
-            /* ./../lib/standard//collection//array.nit:361 */
-            CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[3]);
-            /* ./../lib/standard//collection//array.nit:362 */
-            CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
+            /* ./../lib/standard//collection//array.nit:396 */
+            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:397 */
+            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:356 */
+          /* ./../lib/standard//collection//array.nit:391 */
           goto label9;
         }
       }
       label9: while(0);
-      /* ./../lib/standard//collection//array.nit:365 */
+      /* ./../lib/standard//collection//array.nit:400 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[2] = fra.me.REG[0];
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label10;
       label10: while(0);
-      /* ./../lib/standard//collection//array.nit:365 */
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:366 */
+      /* ./../lib/standard//collection//array.nit:400 */
+      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:401 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:366 */
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[1]);
-      /* ./../lib/standard//collection//array.nit:367 */
+      /* ./../lib/standard//collection//array.nit:401 */
+      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:402 */
       REGB3 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       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) {
@@ -2293,221 +2540,276 @@ 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:371 */
+      /* ./../lib/standard//collection//array.nit:406 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:371 */
+        /* ./../lib/standard//collection//array.nit:406 */
         if (UNTAG_Bool(REGB2)) {
-          /* ./../lib/standard//collection//array.nit:372 */
+          /* ./../lib/standard//collection//array.nit:407 */
           REGB2 = REGB0;
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[1] = fra.me.REG[0];
           REGB3 = REGB0;
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB5 = TAG_Bool(false);
             REGB4 = REGB5;
           }
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB3)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label15;
           label15: while(0);
-          /* ./../lib/standard//collection//array.nit:374 */
+          /* ./../lib/standard//collection//array.nit:409 */
           REGB3 = REGB0;
-          /* ./../lib/standard//collection//array.nit:375 */
+          /* ./../lib/standard//collection//array.nit:410 */
           while(1) {
-            /* ./../lib/standard//kernel.nit:214 */
+            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:231 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:375 */
+            /* ./../lib/standard//collection//array.nit:410 */
             if (UNTAG_Bool(REGB4)) {
-              /* ./../lib/standard//collection//array.nit:243 */
+              /* ./../lib/standard//collection//array.nit:278 */
               fra.me.REG[2] = fra.me.REG[0];
               REGB4 = REGB3;
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB5 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB6 = TAG_Bool(false);
                REGB5 = REGB6;
               }
               if (UNTAG_Bool(REGB5)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label16;
               label16: while(0);
-              /* ./../lib/standard//collection//array.nit:376 */
+              /* ./../lib/standard//collection//array.nit:411 */
               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;
               }
               REGB5 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:217 */
+              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:234 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5));
-              /* ./../lib/standard//collection//array.nit:376 */
+              /* ./../lib/standard//collection//array.nit:411 */
               if (UNTAG_Bool(REGB5)) {
-               /* ./../lib/standard//collection//array.nit:377 */
+               /* ./../lib/standard//collection//array.nit:412 */
                REGB2 = REGB3;
-               /* ./../lib/standard//collection//array.nit:243 */
+               /* ./../lib/standard//collection//array.nit:278 */
                fra.me.REG[2] = fra.me.REG[0];
                REGB5 = REGB3;
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB4 = TAG_Int(0);
-               /* ./../lib/standard//kernel.nit:216 */
+               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:233 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
                } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB6 = TAG_Bool(false);
                REGB4 = REGB6;
                }
                if (UNTAG_Bool(REGB4)) {
                } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
                }
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-               /* ./../lib/standard//collection//array.nit:246 */
+               /* ./../lib/standard//collection//array.nit:281 */
                goto label17;
                label17: while(0);
-               /* ./../lib/standard//collection//array.nit:378 */
+               /* ./../lib/standard//collection//array.nit:413 */
                fra.me.REG[1] = fra.me.REG[2];
               }
-              /* ./../lib/standard//collection//array.nit:380 */
+              /* ./../lib/standard//collection//array.nit:415 */
               REGB5 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-              /* ./../lib/standard//collection//array.nit:380 */
+              /* ./../lib/standard//collection//array.nit:415 */
               REGB3 = REGB5;
             } else {
-              /* ./../lib/standard//collection//array.nit:375 */
+              /* ./../lib/standard//collection//array.nit:410 */
               goto label18;
             }
           }
           label18: while(0);
-          /* ./../lib/standard//collection//array.nit:382 */
+          /* ./../lib/standard//collection//array.nit:417 */
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB0));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ./../lib/standard//kernel.nit:227 */
             REGB5 = TAG_Bool((REGB2)==(REGB0));
-            /* ./../lib/standard//collection//array.nit:382 */
+            /* ./../lib/standard//collection//array.nit:417 */
             REGB3 = REGB5;
           }
           REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
           if (UNTAG_Bool(REGB3)) {
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[2] = fra.me.REG[0];
             REGB3 = REGB0;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB5 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB4 = TAG_Bool(false);
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label19;
             label19: while(0);
-            /* ./../lib/standard//collection//array.nit:383 */
-            CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB2, fra.me.REG[2]);
-            /* ./../lib/standard//collection//array.nit:384 */
-            CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
+            /* ./../lib/standard//collection//array.nit:418 */
+            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:419 */
+            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:386 */
+          /* ./../lib/standard//collection//array.nit:421 */
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:386 */
+          /* ./../lib/standard//collection//array.nit:421 */
           REGB0 = REGB2;
         } else {
-          /* ./../lib/standard//collection//array.nit:371 */
+          /* ./../lib/standard//collection//array.nit:406 */
           goto label20;
         }
       }
@@ -2522,10 +2824,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:367 */
+        /* ./../lib/standard//collection//array.nit:402 */
         fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
         fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 367;
+        fra.me.line = 402;
         fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
         fra.me.has_broke = 0;
         fra.me.REG_size = 2;
@@ -2547,10 +2849,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:368 */
+        /* ./../lib/standard//collection//array.nit:403 */
         fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
         fra.me.file = LOCATE_standard___collection___array;
-        fra.me.line = 368;
+        fra.me.line = 403;
         fra.me.meth = LOCATE_standard___collection___array___Array___sub_sort;
         fra.me.has_broke = 0;
         fra.me.REG_size = 2;
@@ -2574,27 +2876,27 @@ 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 = 395;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:395 */
+  /* ./../lib/standard//collection//array.nit:431 */
   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, 395);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 431);
   }
   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, 395);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 431);
   }
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
-  fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  fra.me.REG[1] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2604,38 +2906,44 @@ val_t standard___collection___array___ArrayIterator___is_ok(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___collection___array;
-  fra.me.line = 399;
+  fra.me.line = 435;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:399 */
+  /* ./../lib/standard//collection//array.nit:435 */
   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, 399);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 435);
   }
   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, 399);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 435);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:399 */
+  /* ./../lib/standard//collection//array.nit:435 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2648,18 +2956,18 @@ 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 = 401;
+  fra.me.line = 437;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:401 */
+  /* ./../lib/standard//collection//array.nit:437 */
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:401 */
+  /* ./../lib/standard//collection//array.nit:437 */
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   return;
@@ -2672,7 +2980,7 @@ void standard___collection___array___ArrayIterator___init(val_t p0, val_t p1, in
   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 = 403;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2680,9 +2988,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:405 */
+  /* ./../lib/standard//collection//array.nit:441 */
   ATTR_standard___collection___array___ArrayIterator____array(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:406 */
+  /* ./../lib/standard//collection//array.nit:442 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -2695,17 +3003,17 @@ 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 = 409;
+  fra.me.line = 445;
   fra.me.meth = LOCATE_standard___collection___array___ArrayIterator___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:409 */
+  /* ./../lib/standard//collection//array.nit:445 */
   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, 409);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___array, 445);
   }
   REGB0 = ATTR_standard___collection___array___ArrayIterator____index(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2717,7 +3025,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 = 421;
+  fra.me.line = 458;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2725,11 +3033,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:421 */
+  /* ./../lib/standard//collection//array.nit:458 */
   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, 421);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 458);
   }
   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]);
@@ -2744,7 +3052,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 = 423;
+  fra.me.line = 460;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2753,11 +3061,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:423 */
+  /* ./../lib/standard//collection//array.nit:460 */
   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, 423);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 460);
   }
   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]);
@@ -2766,7 +3074,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, 423);
+      nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 460);
     }
     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]);
@@ -2780,17 +3088,17 @@ 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 = 425;
+  fra.me.line = 462;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:425 */
+  /* ./../lib/standard//collection//array.nit:462 */
   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, 425);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 462);
   }
   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]);
@@ -2805,27 +3113,27 @@ 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 = 427;
+  fra.me.line = 464;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:427 */
+  /* ./../lib/standard//collection//array.nit:464 */
   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, 427);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 464);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:427 */
+  /* ./../lib/standard//collection//array.nit:464 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -2835,44 +3143,50 @@ val_t standard___collection___array___ArraySet___first(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___collection___array;
-  fra.me.line = 429;
+  fra.me.line = 466;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:431 */
+  /* ./../lib/standard//collection//array.nit:468 */
   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, 431);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 468);
   }
   fra.me.REG[1] = ATTR_standard___collection___array___ArraySet____array(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:431 */
+  /* ./../lib/standard//collection//array.nit:468 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:431 */
+  /* ./../lib/standard//collection//array.nit:468 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___array, 431);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___array, 468);
   }
-  /* ./../lib/standard//collection//array.nit:432 */
+  /* ./../lib/standard//collection//array.nit:469 */
   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, 432);
+    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]);
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
@@ -2885,10 +3199,11 @@ void standard___collection___array___ArraySet___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 REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 435;
+  fra.me.line = 472;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2897,19 +3212,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:437 */
+  /* ./../lib/standard//collection//array.nit:474 */
   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, 437);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 474);
   }
   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:438 */
+  /* ./../lib/standard//collection//array.nit:475 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:438 */
+  /* ./../lib/standard//collection//array.nit:475 */
   if (UNTAG_Bool(REGB1)) {
     CALL_standard___collection___array___ArraySet___remove_at(fra.me.REG[0])(fra.me.REG[0], REGB0);
   }
@@ -2921,7 +3241,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 = 441;
+  fra.me.line = 478;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2929,7 +3249,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:441 */
+  /* ./../lib/standard//collection//array.nit:478 */
   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;
@@ -2940,17 +3260,17 @@ 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 = 443;
+  fra.me.line = 480;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:443 */
+  /* ./../lib/standard//collection//array.nit:480 */
   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, 443);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 480);
   }
   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]);
@@ -2963,17 +3283,17 @@ 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 = 445;
+  fra.me.line = 482;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:445 */
+  /* ./../lib/standard//collection//array.nit:482 */
   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, 445);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 482);
   }
   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]);
@@ -2990,18 +3310,18 @@ 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 = 447;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:448 */
+  /* ./../lib/standard//collection//array.nit:485 */
   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, 448);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 485);
   }
   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);
@@ -3015,7 +3335,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 = 450;
+  fra.me.line = 487;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___remove_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3024,26 +3344,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:452 */
+  /* ./../lib/standard//collection//array.nit:489 */
   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, 452);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 489);
   }
   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, 452);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 489);
   }
   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___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:453 */
+  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:490 */
   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, 453);
+    nit_abort("Uninitialized attribute %s", "_array", LOCATE_standard___collection___array, 490);
   }
   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]);
@@ -3057,14 +3377,14 @@ void standard___collection___array___ArraySet___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___collection___array;
-  fra.me.line = 456;
+  fra.me.line = 493;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:457 */
+  /* ./../lib/standard//collection//array.nit:494 */
   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;
@@ -3079,7 +3399,7 @@ void standard___collection___array___ArraySet___with_capacity(val_t p0, val_t p1
   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 = 459;
+  fra.me.line = 496;
   fra.me.meth = LOCATE_standard___collection___array___ArraySet___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3087,7 +3407,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:460 */
+  /* ./../lib/standard//collection//array.nit:497 */
   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;
@@ -3100,17 +3420,17 @@ 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 = 467;
+  fra.me.line = 504;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:467 */
+  /* ./../lib/standard//collection//array.nit:504 */
   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, 467);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 504);
   }
   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]);
@@ -3125,17 +3445,17 @@ 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 = 469;
+  fra.me.line = 506;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:469 */
+  /* ./../lib/standard//collection//array.nit:506 */
   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, 469);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 506);
   }
   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]);
@@ -3148,17 +3468,17 @@ 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 = 471;
+  fra.me.line = 508;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:471 */
+  /* ./../lib/standard//collection//array.nit:508 */
   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, 471);
+    nit_abort("Uninitialized attribute %s", "_iter", LOCATE_standard___collection___array, 508);
   }
   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]);
@@ -3174,7 +3494,7 @@ void standard___collection___array___ArraySetIterator___init(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 = 473;
+  fra.me.line = 510;
   fra.me.meth = LOCATE_standard___collection___array___ArraySetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3182,7 +3502,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:473 */
+  /* ./../lib/standard//collection//array.nit:510 */
   ATTR_standard___collection___array___ArraySetIterator____iter(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos9] = 1;
@@ -3196,7 +3516,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 = 483;
+  fra.me.line = 520;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3204,65 +3524,80 @@ 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:486 */
+  /* ./../lib/standard//collection//array.nit:523 */
   REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:487 */
+  /* ./../lib/standard//collection//array.nit:524 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:487 */
+  /* ./../lib/standard//collection//array.nit:524 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//array.nit:488 */
+    /* ./../lib/standard//collection//array.nit:525 */
     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, 488);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 525);
     }
     fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label1;
     label1: while(0);
-    /* ./../lib/standard//collection//array.nit:488 */
+    /* ./../lib/standard//collection//array.nit:525 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 488);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 525);
     }
     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:490 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___array, 490);
+    /* ./../lib/standard//collection//array.nit:527 */
+    nit_abort("Aborted", NULL, LOCATE_standard___collection___array, 527);
   }
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -3276,7 +3611,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 = 494;
+  fra.me.line = 531;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3287,67 +3622,82 @@ 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:497 */
+  /* ./../lib/standard//collection//array.nit:534 */
   REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:498 */
+  /* ./../lib/standard//collection//array.nit:535 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:498 */
+  /* ./../lib/standard//collection//array.nit:535 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//array.nit:499 */
+    /* ./../lib/standard//collection//array.nit:536 */
     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, 499);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 536);
     }
     fra.me.REG[3] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label1;
     label1: while(0);
-    /* ./../lib/standard//collection//array.nit:499 */
+    /* ./../lib/standard//collection//array.nit:536 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 499);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 536);
     }
     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:501 */
+    /* ./../lib/standard//collection//array.nit:538 */
     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, 501);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 538);
     }
     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]);
@@ -3356,220 +3706,85 @@ void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t standard___collection___array___ArrayMap___has_key(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t standard___collection___array___ArrayMap___keys(val_t p0){
+  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___collection___array;
-  fra.me.line = 505;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___has_key;
+  fra.me.line = 542;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:542 */
+  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, 542);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___array___ArrayMap___keys__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___array;
+  fra.me.line = 542;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___keys__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:506 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:506 */
-  goto label1;
-  label1: while(0);
+  /* ./../lib/standard//collection//array.nit:542 */
+  ATTR_standard___collection___array___ArrayMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return REGB1;
+  return;
 }
-val_t standard___collection___array___ArrayMap___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+val_t standard___collection___array___ArrayMap___values(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___collection___array;
-  fra.me.line = 508;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___has;
+  fra.me.line = 543;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
   fra.me.REG[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;
-  /* ./../lib/standard//collection//array.nit:511 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:543 */
+  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", "_items", LOCATE_standard___collection___array, 511);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
-  REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  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, 235);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
-  while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    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, 23);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:511 */
-      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)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(false);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(true);
-        goto label1;
-      }
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB0 = REGB2;
-    } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label2;
-    }
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_standard___collection___array, 543);
   }
-  label2: while(0);
-  /* ./../lib/standard//collection//array.nit:512 */
-  REGB0 = TAG_Bool(false);
-  REGB1 = REGB0;
-  goto label1;
-  label1: while(0);
+  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return REGB1;
+  return fra.me.REG[0];
 }
-val_t standard___collection___array___ArrayMap___has_only(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 REGB2;
+void standard___collection___array___ArrayMap___values__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___array;
-  fra.me.line = 515;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___has_only;
+  fra.me.line = 543;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___values__eq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 2;
   fra.me.REG[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;
-  /* ./../lib/standard//collection//array.nit:518 */
-  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, 518);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
-  REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  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, 235);
-  }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
-  while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    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, 23);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
-    if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:518 */
-      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)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(false);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
-        goto label1;
-      }
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB0 = REGB2;
-    } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label2;
-    }
-  }
-  label2: while(0);
-  /* ./../lib/standard//collection//array.nit:519 */
-  REGB0 = TAG_Bool(true);
-  REGB1 = REGB0;
-  goto label1;
-  label1: while(0);
+  /* ./../lib/standard//collection//array.nit:543 */
+  ATTR_standard___collection___array___ArrayMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  return REGB1;
+  return;
 }
 val_t standard___collection___array___ArrayMap___length(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3577,348 +3792,276 @@ 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 = 522;
+  fra.me.line = 545;
   fra.me.meth = LOCATE_standard___collection___array___ArrayMap___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:523 */
+  /* ./../lib/standard//collection//array.nit:546 */
   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, 523);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 546);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:523 */
+  /* ./../lib/standard//collection//array.nit:546 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t standard___collection___array___ArrayMap___first(val_t p0){
+val_t standard___collection___array___ArrayMap___iterator(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___collection___array;
-  fra.me.line = 525;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___first;
+  fra.me.line = 548;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:525 */
+  /* ./../lib/standard//collection//array.nit:548 */
   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, 525);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 548);
   }
   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, 525);
-  }
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___second(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]);
+  fra.me.REG[0] = NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t standard___collection___array___ArrayMap___count(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+val_t standard___collection___array___ArrayMap___is_empty(val_t p0){
+  struct {struct stack_frame_t me;} 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_standard___collection___array;
-  fra.me.line = 527;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___count;
+  fra.me.line = 550;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___is_empty;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
   fra.me.REG[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;
-  /* ./../lib/standard//collection//array.nit:530 */
-  REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:531 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
+  /* ./../lib/standard//collection//array.nit:550 */
+  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, 531);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 550);
   }
   fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
-  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, 235);
-  }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:237 */
-  while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    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, 23);
-    }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/standard//collection//array.nit:531 */
-      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)) {
-      } else {
-        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(false);
-          REGB2 = REGB3;
-        } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-          REGB2 = REGB3;
-        }
-      }
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
-        REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:531 */
-        REGB0 = REGB2;
-      }
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB1 = REGB2;
-    } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label1;
-    }
-  }
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:532 */
-  goto label2;
-  label2: while(0);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t standard___collection___array___ArrayMap___iterator(val_t p0){
+void standard___collection___array___ArrayMap___clear(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___collection___array;
-  fra.me.line = 535;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___iterator;
+  fra.me.line = 552;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:535 */
+  /* ./../lib/standard//collection//array.nit:552 */
   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, 535);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 552);
   }
   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]);
-  fra.me.REG[0] = NEW_CoupleMapIterator_standard___collection___abstract_collection___CoupleMapIterator___init(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
+  CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return;
 }
-val_t standard___collection___array___ArrayMap___is_empty(val_t p0){
+void standard___collection___array___ArrayMap___enlarge(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___collection___array;
-  fra.me.line = 537;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___is_empty;
+  fra.me.line = 554;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:537 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
+  REGB0 = p1;
+  /* ./../lib/standard//collection//array.nit:555 */
+  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, 537);
+    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]);
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
-  goto label1;
-  label1: while(0);
+  CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
-  return REGB0;
+  return;
 }
-void standard___collection___array___ArrayMap___remove(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+val_t standard___collection___array___ArrayMap___couple_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_standard___collection___array;
-  fra.me.line = 539;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove;
+  fra.me.line = 557;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___couple_at;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
   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//collection//array.nit:541 */
-  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, 541);
-  }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
+  /* ./../lib/standard//collection//array.nit:559 */
+  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./../lib/standard//collection//array.nit:560 */
+  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("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:541 */
-  REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:542 */
-  while(1) {
-    REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:542 */
-    if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:543 */
-      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, 543);
-      }
-      fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
-      REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
-      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, 245);
-        }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
-        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB3 = TAG_Bool(false);
-        REGB2 = REGB3;
-      }
-      if (UNTAG_Bool(REGB2)) {
+  /* ./../lib/standard//kernel.nit:233 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:560 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//collection//array.nit:561 */
+    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);
+    }
+    fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+    /* ./../lib/standard//collection//array.nit:280 */
+    REGB1 = TAG_Int(0);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:233 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:280 */
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
-      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      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)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
-      goto label1;
-      label1: while(0);
-      /* ./../lib/standard//collection//array.nit:543 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 543);
-      }
-      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]));
-      if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(false);
-          REGB0 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB0 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB0)) {
-        /* ./../lib/standard//collection//array.nit:544 */
-        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
-        /* ./../lib/standard//collection//array.nit:545 */
-        goto label2;
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      /* ./../lib/standard//collection//array.nit:547 */
-      REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:547 */
-      REGB1 = REGB0;
+      /* ./../lib/standard//kernel.nit:232 */
+      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//array.nit:542 */
-      goto label3;
+      /* ./../lib/standard//collection//array.nit:280 */
+      REGB2 = TAG_Bool(false);
+      REGB1 = REGB2;
+    }
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
+    }
+    /* ./../lib/standard//collection//array.nit:281 */
+    fra.me.REG[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);
     }
+    /* ./../lib/standard//collection//array.nit:718 */
+    fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
+    /* ./../lib/standard//collection//array.nit:281 */
+    goto label1;
+    label1: while(0);
+    /* ./../lib/standard//collection//array.nit:561 */
+    goto label2;
+  } else {
+    /* ./../lib/standard//collection//array.nit:563 */
+    fra.me.REG[0] = NIT_NULL;
+    goto label2;
   }
-  label3: while(0);
   label2: while(0);
   stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___array___ArrayMap___remove_at_index(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_standard___collection___array;
+  fra.me.line = 570;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove_at_index;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  REGB0 = p1;
+  /* ./../lib/standard//collection//array.nit:573 */
+  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, 573);
+  }
+  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, 573);
+  }
+  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:574 */
+  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, 574);
+  }
+  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]);
+  stack_frame_head = fra.me.prev;
   return;
 }
-void standard___collection___array___ArrayMap___remove_all(val_t p0, val_t p1){
+val_t standard___collection___array___ArrayMap___index(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 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___collection___array;
-  fra.me.line = 551;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove_all;
+  fra.me.line = 580;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
@@ -3926,188 +4069,362 @@ void standard___collection___array___ArrayMap___remove_all(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:553 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:584 */
+  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", "_items", LOCATE_standard___collection___array, 553);
+    nit_abort("Uninitialized attribute %s", "_last_index", LOCATE_standard___collection___array, 584);
   }
-  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
+  REGB0 = ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:585 */
+  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", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 585);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:553 */
-  REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
-  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:554 */
+  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+  }
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+  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:232 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:585 */
+  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, 585);
+    }
+    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+    /* ./../lib/standard//collection//array.nit:278 */
+    REGB1 = REGB0;
+    /* ./../lib/standard//collection//array.nit:280 */
+    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:233 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
+    /* ./../lib/standard//collection//array.nit:280 */
+    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);
+      }
+      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*/;
+      if (UNTAG_Bool(REGB3)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:232 */
+      REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+    } else {
+      /* ./../lib/standard//collection//array.nit:280 */
+      REGB3 = TAG_Bool(false);
+      REGB2 = REGB3;
+    }
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
+    }
+    /* ./../lib/standard//collection//array.nit:281 */
+    fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+    }
+    /* ./../lib/standard//collection//array.nit:718 */
+    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
+    /* ./../lib/standard//collection//array.nit:281 */
+    goto label1;
+    label1: while(0);
+    /* ./../lib/standard//collection//array.nit:585 */
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 585);
+    }
+    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]));
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+        REGB1 = REGB2;
+      }
+    }
+  } else {
+    REGB2 = TAG_Bool(false);
+    REGB1 = REGB2;
+  }
+  if (UNTAG_Bool(REGB1)) {
+    goto label2;
+  }
+  /* ./../lib/standard//collection//array.nit:587 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//collection//array.nit:588 */
   while(1) {
-    REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
-    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:554 */
-    if (UNTAG_Bool(REGB0)) {
-      /* ./../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)) {
+    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, 588);
+    }
+    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 24);
+    }
+    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*/;
+    if (UNTAG_Bool(REGB3)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:232 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+    /* ./../lib/standard//collection//array.nit:588 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//collection//array.nit:589 */
+      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, 555);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 589);
       }
       fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
-      REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//collection//array.nit:278 */
+      REGB2 = REGB1;
+      /* ./../lib/standard//collection//array.nit:280 */
+      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:233 */
+      REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
+      /* ./../lib/standard//collection//array.nit:280 */
+      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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
-        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
+        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*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
+        REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB3 = TAG_Bool(false);
-        REGB2 = REGB3;
+        /* ./../lib/standard//collection//array.nit:280 */
+        REGB4 = TAG_Bool(false);
+        REGB3 = REGB4;
       }
-      if (UNTAG_Bool(REGB2)) {
+      if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
+      /* ./../lib/standard//collection//array.nit:281 */
+      goto label3;
+      label3: while(0);
+      /* ./../lib/standard//collection//array.nit:589 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 589);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
-      goto label1;
-      label1: while(0);
-      /* ./../lib/standard//collection//array.nit:555 */
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-      if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 555);
-      }
-      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]));
-      if (UNTAG_Bool(REGB0)) {
+      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]));
+      if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(false);
-          REGB0 = REGB2;
+        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Bool(false);
+          REGB2 = REGB3;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB0 = REGB2;
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          REGB2 = REGB3;
         }
       }
-      if (UNTAG_Bool(REGB0)) {
-        /* ./../lib/standard//collection//array.nit:556 */
-        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
+      if (UNTAG_Bool(REGB2)) {
+        /* ./../lib/standard//collection//array.nit:590 */
+        ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB1;
+        /* ./../lib/standard//collection//array.nit:591 */
+        REGB0 = REGB1;
+        goto label2;
       }
-      /* ./../lib/standard//collection//array.nit:558 */
-      REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
-      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//array.nit:558 */
-      REGB1 = REGB0;
+      /* ./../lib/standard//collection//array.nit:593 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:593 */
+      REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:554 */
-      goto label2;
+      /* ./../lib/standard//collection//array.nit:588 */
+      goto label4;
     }
   }
+  label4: while(0);
+  /* ./../lib/standard//collection//array.nit:595 */
+  REGB1 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:236 */
+  REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:595 */
+  REGB0 = REGB1;
+  goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
-  return;
+  return REGB0;
 }
-void standard___collection___array___ArrayMap___remove_at(val_t p0, val_t p1){
+void standard___collection___array___ArrayMap___init(val_t p0, int* init_table){
+  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMap].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
-  val_t REGB1;
   val_t tmp;
+  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 = 562;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___remove_at;
+  fra.me.line = 598;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:564 */
-  REGB0 = CALL_standard___collection___array___ArrayMap___index(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:565 */
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:565 */
-  if (UNTAG_Bool(REGB1)) {
-    CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  }
+  /* ./../lib/standard//collection//array.nit:601 */
+  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;
+  init_table[itpos10] = 1;
   return;
 }
-void standard___collection___array___ArrayMap___clear(val_t p0){
+val_t standard___collection___array___ArrayMapKeys___map(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___collection___array;
-  fra.me.line = 568;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___clear;
+  fra.me.line = 607;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:568 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:607 */
+  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", "_items", LOCATE_standard___collection___array, 568);
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___array, 607);
   }
-  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]);
+  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___array___ArrayMapKeys___map__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___array;
+  fra.me.line = 607;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___map__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:607 */
+  ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
-void standard___collection___array___ArrayMap___enlarge(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
+val_t standard___collection___array___ArrayMapKeys___count(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___collection___array;
-  fra.me.line = 570;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___enlarge;
+  fra.me.line = 609;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___count;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:609 */
+  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);
+    goto label1;
+  } else {
+    REGB1 = TAG_Int(0);
+    REGB0 = REGB1;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___array___ArrayMapKeys___first(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___collection___array;
+  fra.me.line = 610;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:571 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
+  /* ./../lib/standard//collection//array.nit:610 */
+  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, 571);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 610);
   }
   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);
+  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, 610);
+  }
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return;
+  return fra.me.REG[0];
 }
-val_t standard___collection___array___ArrayMap___couple_at(val_t p0, val_t p1){
+val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t REGB1;
@@ -4115,128 +4432,691 @@ 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 = 573;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___couple_at;
+  fra.me.line = 611;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//array.nit:575 */
+  /* ./../lib/standard//collection//array.nit:611 */
+  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]);
-  /* ./../lib/standard//collection//array.nit:576 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:576 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//array.nit:577 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:611 */
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t standard___collection___array___ArrayMapKeys___has_only(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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___array;
+  fra.me.line = 612;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___has_only;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:612 */
+  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]);
+    REGB1 = TAG_Int(1);
+    REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:227 */
+      REGB1 = TAG_Bool((REGB0)==(REGB1));
+      /* ./../lib/standard//collection//array.nit:612 */
+      REGB2 = REGB1;
+    }
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    REGB2 = TAG_Bool(true);
+  } else {
+    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+    REGB2 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB2;
+}
+val_t standard___collection___array___ArrayMapKeys___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_standard___collection___array;
+  fra.me.line = 613;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___is_empty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:613 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___array___ArrayMapKeys___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_standard___collection___array;
+  fra.me.line = 614;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:614 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___array___ArrayMapKeys___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_standard___collection___array;
+  fra.me.line = 615;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:615 */
+  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]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___array___ArrayMapKeys___clear(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___collection___array;
+  fra.me.line = 616;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:616 */
+  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;
+  return;
+}
+void standard___collection___array___ArrayMapKeys___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 REGB2;
+  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.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:619 */
+  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:620 */
+  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:233 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:620 */
+  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);
+  }
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void standard___collection___array___ArrayMapKeys___remove_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_standard___collection___array;
+  fra.me.line = 622;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___remove_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:622 */
+  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;
+}
+void standard___collection___array___ArrayMapKeys___init(val_t p0, val_t p1, int* init_table){
+  int itpos11 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMapKeys].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  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 = 0;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___array___ArrayMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos11] = 1;
+  return;
+}
+val_t standard___collection___array___ArrayMapValues___map(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___collection___array;
+  fra.me.line = 627;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:627 */
+  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, 627);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___array___ArrayMapValues___map__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___array;
+  fra.me.line = 627;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___map__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:627 */
+  ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___array___ArrayMapValues___first(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___collection___array;
+  fra.me.line = 629;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___first;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:629 */
+  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, 629);
+  }
+  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, 629);
+  }
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Couple___first(fra.me.REG[0])(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t standard___collection___array___ArrayMapValues___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_standard___collection___array;
+  fra.me.line = 630;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___is_empty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:630 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___array___ArrayMapValues___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_standard___collection___array;
+  fra.me.line = 631;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:631 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___array___ArrayMapValues___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_standard___collection___array;
+  fra.me.line = 632;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:632 */
+  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]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t standard___collection___array___ArrayMapValues___has(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 REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___array;
+  fra.me.line = 634;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../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 = 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, 637);
+  }
+  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 */
+  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);
+  }
+  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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    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", "_items", LOCATE_standard___collection___array, 577);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    fra.me.REG[0] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:245 */
-    REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
-    REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:245 */
+    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:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
+      /* ./../lib/standard//collection//array.nit:637 */
+      fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
+      REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          REGB2 = TAG_Bool(false);
+          REGB1 = REGB2;
+        } else {
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB1 = REGB2;
+        }
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-      /* ./../lib/standard//kernel.nit:215 */
-      REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(true);
+        goto label1;
+      }
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB2 = TAG_Bool(false);
-      REGB1 = REGB2;
+      /* ./../lib/standard//collection//array.nit:272 */
+      goto label2;
     }
+  }
+  label2: while(0);
+  /* ./../lib/standard//collection//array.nit:638 */
+  REGB0 = TAG_Bool(false);
+  REGB1 = REGB0;
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
+val_t standard___collection___array___ArrayMapValues___has_only(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 REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___array;
+  fra.me.line = 641;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___has_only;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../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, 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 */
+  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);
+  }
+  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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
-    fra.me.REG[0] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    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:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
+      /* ./../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_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          REGB2 = TAG_Bool(false);
+          REGB1 = REGB2;
+        } else {
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB1 = REGB2;
+        }
+      }
+      REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        goto label1;
+      }
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB0 = REGB2;
+    } else {
+      /* ./../lib/standard//collection//array.nit:272 */
+      goto label2;
     }
-    /* ./../lib/standard//collection//array.nit:654 */
-    fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-    /* ./../lib/standard//collection//array.nit:246 */
-    goto label1;
-    label1: while(0);
-    /* ./../lib/standard//collection//array.nit:577 */
-    goto label2;
-  } else {
-    /* ./../lib/standard//collection//array.nit:579 */
-    fra.me.REG[0] = NIT_NULL;
-    goto label2;
   }
   label2: while(0);
+  /* ./../lib/standard//collection//array.nit:645 */
+  REGB0 = TAG_Bool(true);
+  REGB1 = REGB0;
+  goto label1;
+  label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return REGB1;
 }
-void standard___collection___array___ArrayMap___remove_at_index(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+val_t standard___collection___array___ArrayMapValues___count(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 REGB2;
+  val_t REGB3;
   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.meth = LOCATE_standard___collection___array___ArrayMap___remove_at_index;
+  fra.me.line = 648;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___count;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:589 */
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:651 */
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//collection//array.nit:652 */
+  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, 589);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 652);
   }
-  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)) {
+  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 */
+  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", "_items", LOCATE_standard___collection___array, 589);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  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___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:590 */
-  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, 590);
+  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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 24);
+    }
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[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:232 */
+    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
+    /* ./../lib/standard//collection//array.nit:272 */
+    if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
+      /* ./../lib/standard//collection//array.nit:652 */
+      fra.me.REG[3] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[3])(fra.me.REG[3]);
+      REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[3]));
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Bool(false);
+          REGB2 = REGB3;
+        } else {
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB2 = REGB3;
+        }
+      }
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:235 */
+        REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
+        /* ./../lib/standard//collection//array.nit:652 */
+        REGB0 = REGB2;
+      }
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB2 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB1 = REGB2;
+    } else {
+      /* ./../lib/standard//collection//array.nit:272 */
+      goto label1;
+    }
   }
-  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]);
+  label1: while(0);
+  /* ./../lib/standard//collection//array.nit:653 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+void standard___collection___array___ArrayMapValues___clear(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___collection___array;
+  fra.me.line = 656;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//array.nit:656 */
+  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;
   return;
 }
-val_t standard___collection___array___ArrayMap___index(val_t p0, val_t p1){
+void standard___collection___array___ArrayMapValues___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 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___collection___array;
-  fra.me.line = 596;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___index;
+  fra.me.line = 658;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
@@ -4244,229 +5124,289 @@ 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:600 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:660 */
+  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:661 */
+  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", "_last_index", LOCATE_standard___collection___array, 600);
-  }
-  REGB0 = ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:601 */
-  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, 601);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 661);
   }
   fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    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:215 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:601 */
-  if (UNTAG_Bool(REGB1)) {
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+  /* ./../lib/standard//collection//array.nit:661 */
+  REGB1 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:237 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:662 */
+  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*/;
+    if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 601);
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:243 */
-    REGB1 = REGB0;
-    /* ./../lib/standard//collection//array.nit:245 */
-    REGB2 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:245 */
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    /* ./../lib/standard//kernel.nit:233 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+    /* ./../lib/standard//collection//array.nit:662 */
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//collection//array.nit:663 */
+      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, 663);
+      }
+      fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+      /* ./../lib/standard//collection//array.nit:278 */
+      REGB0 = REGB1;
+      /* ./../lib/standard//collection//array.nit:280 */
+      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:233 */
+      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:280 */
       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);
+        }
+        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*/;
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
+        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+        /* ./../lib/standard//collection//array.nit:280 */
+        REGB3 = TAG_Bool(false);
+        REGB2 = REGB3;
       }
-      REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-      /* ./../lib/standard//kernel.nit:215 */
-      REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    } else {
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB3 = TAG_Bool(false);
-      REGB2 = REGB3;
-    }
-    if (UNTAG_Bool(REGB2)) {
-    } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
-    }
-    /* ./../lib/standard//collection//array.nit:246 */
-    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, 246);
-    }
-    /* ./../lib/standard//collection//array.nit:654 */
-    fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-    /* ./../lib/standard//collection//array.nit:246 */
-    goto label1;
-    label1: while(0);
-    /* ./../lib/standard//collection//array.nit:601 */
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 601);
-    }
-    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]));
-    if (UNTAG_Bool(REGB1)) {
-    } else {
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
+      }
+      /* ./../lib/standard//collection//array.nit:281 */
+      fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(false);
-        REGB1 = REGB2;
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
+      /* ./../lib/standard//collection//array.nit:281 */
+      goto label1;
+      label1: while(0);
+      /* ./../lib/standard//collection//array.nit:663 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 663);
+      }
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
+      if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-        REGB1 = REGB2;
+        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          REGB2 = TAG_Bool(false);
+          REGB0 = REGB2;
+        } else {
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          REGB0 = REGB2;
+        }
+      }
+      if (UNTAG_Bool(REGB0)) {
+        /* ./../lib/standard//collection//array.nit:664 */
+        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
+        /* ./../lib/standard//collection//array.nit:665 */
+        goto label2;
       }
+      /* ./../lib/standard//collection//array.nit:667 */
+      REGB0 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:237 */
+      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
+      /* ./../lib/standard//collection//array.nit:667 */
+      REGB1 = REGB0;
+    } else {
+      /* ./../lib/standard//collection//array.nit:662 */
+      goto label3;
     }
+  }
+  label3: while(0);
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void standard___collection___array___ArrayMapValues___remove_all(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 REGB2;
+  val_t REGB3;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___array;
+  fra.me.line = 671;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___remove_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//array.nit:673 */
+  fra.me.REG[0] = CALL_standard___collection___array___ArrayMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:674 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB2 = TAG_Bool(false);
-    REGB1 = REGB2;
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 674);
   }
-  if (UNTAG_Bool(REGB1)) {
-    goto label2;
+  fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 24);
   }
-  /* ./../lib/standard//collection//array.nit:603 */
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:604 */
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+  /* ./../lib/standard//collection//array.nit:674 */
+  REGB1 = TAG_Int(1);
+  /* ./../lib/standard//kernel.nit:237 */
+  REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
+  /* ./../lib/standard//collection//array.nit:675 */
   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, 604);
-    }
-    fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    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("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
-    REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:604 */
-    if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:605 */
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0])!=NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
+    /* ./../lib/standard//kernel.nit:233 */
+    REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
+    /* ./../lib/standard//collection//array.nit:675 */
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//collection//array.nit:676 */
+      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, 605);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___collection___array, 676);
       }
       fra.me.REG[2] = ATTR_standard___collection___array___ArrayMap____items(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
-      REGB2 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
-      REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
-      REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:278 */
+      REGB0 = REGB1;
+      /* ./../lib/standard//collection//array.nit:280 */
+      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)) {
-        REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:233 */
+      REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
+      /* ./../lib/standard//collection//array.nit:280 */
+      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);
+        }
+        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*/;
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
-        REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
+        /* ./../lib/standard//kernel.nit:232 */
+        REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
-        REGB4 = TAG_Bool(false);
-        REGB3 = REGB4;
+        /* ./../lib/standard//collection//array.nit:280 */
+        REGB3 = TAG_Bool(false);
+        REGB2 = REGB3;
       }
-      if (UNTAG_Bool(REGB3)) {
+      if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
-      goto label3;
-      label3: while(0);
-      /* ./../lib/standard//collection//array.nit:605 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 605);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      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]));
-      if (UNTAG_Bool(REGB2)) {
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
+      /* ./../lib/standard//collection//array.nit:281 */
+      goto label1;
+      label1: while(0);
+      /* ./../lib/standard//collection//array.nit:676 */
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 676);
+      }
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___Couple___second(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],fra.me.REG[2]));
+      if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(false);
-          REGB2 = REGB3;
+        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          REGB2 = TAG_Bool(false);
+          REGB0 = REGB2;
         } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB2 = REGB3;
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          REGB0 = REGB2;
         }
       }
-      if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//collection//array.nit:606 */
-        ATTR_standard___collection___array___ArrayMap____last_index(fra.me.REG[0]) = REGB1;
-        /* ./../lib/standard//collection//array.nit:607 */
-        REGB0 = REGB1;
-        goto label2;
+      if (UNTAG_Bool(REGB0)) {
+        /* ./../lib/standard//collection//array.nit:677 */
+        CALL_standard___collection___array___ArrayMap___remove_at_index(fra.me.REG[0])(fra.me.REG[0], REGB1);
       }
-      /* ./../lib/standard//collection//array.nit:609 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:609 */
-      REGB1 = REGB2;
+      /* ./../lib/standard//collection//array.nit:679 */
+      REGB0 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:237 */
+      REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
+      /* ./../lib/standard//collection//array.nit:679 */
+      REGB1 = REGB0;
     } else {
-      /* ./../lib/standard//collection//array.nit:604 */
-      goto label4;
+      /* ./../lib/standard//collection//array.nit:675 */
+      goto label2;
     }
   }
-  label4: while(0);
-  /* ./../lib/standard//collection//array.nit:611 */
-  REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
-  REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:611 */
-  REGB0 = REGB1;
-  goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
-  return REGB0;
+  return;
 }
-void standard___collection___array___ArrayMap___init(val_t p0, int* init_table){
-  int itpos10 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMap].i;
+void standard___collection___array___ArrayMapValues___init(val_t p0, val_t p1, int* init_table){
+  int itpos12 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___array___ArrayMapValues].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos10]) return;
+  if (init_table[itpos12]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___array;
-  fra.me.line = 614;
-  fra.me.meth = LOCATE_standard___collection___array___ArrayMap___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_standard___collection___array___ArrayMapValues___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:617 */
-  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];
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___array___ArrayMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos10] = 1;
+  init_table[itpos12] = 1;
   return;
 }
 val_t standard___collection___array___Iterator___to_a(val_t p0){
@@ -4475,7 +5415,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 = 624;
+  fra.me.line = 688;
   fra.me.meth = LOCATE_standard___collection___array___Iterator___to_a;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4483,24 +5423,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:627 */
+  /* ./../lib/standard//collection//array.nit:691 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./../lib/standard//collection//array.nit:628 */
+  /* ./../lib/standard//collection//array.nit:692 */
   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:629 */
+      /* ./../lib/standard//collection//array.nit:693 */
       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:630 */
+      /* ./../lib/standard//collection//array.nit:694 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ./../lib/standard//collection//array.nit:628 */
+      /* ./../lib/standard//collection//array.nit:692 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:632 */
+  /* ./../lib/standard//collection//array.nit:696 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -4511,13 +5451,13 @@ 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 = 637;
+  fra.me.line = 701;
   fra.me.meth = LOCATE_standard___collection___array___Collection___to_a;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:640 */
+  /* ./../lib/standard//collection//array.nit:704 */
   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;
@@ -4531,14 +5471,14 @@ 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 = 648;
+  fra.me.line = 712;
   fra.me.meth = LOCATE_standard___collection___array___ArrayCapable___calloc_array;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:648 */
+  /* ./../lib/standard//collection//array.nit:712 */
   fra.me.REG[0] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -4549,14 +5489,14 @@ 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 = 654;
+  fra.me.line = 718;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   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];
@@ -4567,7 +5507,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 = 655;
+  fra.me.line = 719;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4576,7 +5516,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:655 */
+  /* ./../lib/standard//collection//array.nit:719 */
   ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)]=fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -4587,7 +5527,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 = 656;
+  fra.me.line = 720;
   fra.me.meth = LOCATE_standard___collection___array___NativeArray___copy_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4596,7 +5536,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:656 */
+  /* ./../lib/standard//collection//array.nit:720 */
   (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 068bc8f..e485633 100644 (file)
@@ -18,6 +18,10 @@ extern const classtable_elt_t VFT_standard___collection___array___ArraySetIterat
 
 extern const classtable_elt_t VFT_standard___collection___array___ArrayMap[];
 
+extern const classtable_elt_t VFT_standard___collection___array___ArrayMapKeys[];
+
+extern const classtable_elt_t VFT_standard___collection___array___ArrayMapValues[];
+
 extern const classtable_elt_t VFT_standard___collection___array___ArrayCapable[];
 
 extern const classtable_elt_t VFT_standard___collection___array___NativeArray[];
@@ -38,6 +42,7 @@ extern const int SFT_standard___collection___array[];
 #define INIT_TABLE_POS_standard___collection___array___AbstractArray (SFT_standard___collection___array[6] + 0)
 #define CALL_standard___collection___array___AbstractArray___enlarge(recv) ((standard___collection___array___AbstractArray___enlarge_t)CALL((recv), (SFT_standard___collection___array[6] + 1)))
 #define CALL_standard___collection___array___AbstractArray___insert(recv) ((standard___collection___array___AbstractArray___insert_t)CALL((recv), (SFT_standard___collection___array[6] + 2)))
+#define CALL_standard___collection___array___AbstractArray___swap_at(recv) ((standard___collection___array___AbstractArray___swap_at_t)CALL((recv), (SFT_standard___collection___array[6] + 3)))
 #define ID_standard___collection___array___Array (SFT_standard___collection___array[7])
 #define COLOR_standard___collection___array___Array (SFT_standard___collection___array[8])
 #define ATTR_standard___collection___array___Array____items(recv) ATTR(recv, (SFT_standard___collection___array[9] + 0))
@@ -72,25 +77,43 @@ extern const int SFT_standard___collection___array[];
 #define CALL_standard___collection___array___ArraySetIterator___init(recv) ((standard___collection___array___ArraySetIterator___init_t)CALL((recv), (SFT_standard___collection___array[22] + 1)))
 #define ID_standard___collection___array___ArrayMap (SFT_standard___collection___array[23])
 #define COLOR_standard___collection___array___ArrayMap (SFT_standard___collection___array[24])
-#define ATTR_standard___collection___array___ArrayMap____items(recv) ATTR(recv, (SFT_standard___collection___array[25] + 0))
-#define ATTR_standard___collection___array___ArrayMap____last_index(recv) ATTR(recv, (SFT_standard___collection___array[25] + 1))
+#define ATTR_standard___collection___array___ArrayMap_____atkeys(recv) ATTR(recv, (SFT_standard___collection___array[25] + 0))
+#define ATTR_standard___collection___array___ArrayMap_____atvalues(recv) ATTR(recv, (SFT_standard___collection___array[25] + 1))
+#define ATTR_standard___collection___array___ArrayMap____items(recv) ATTR(recv, (SFT_standard___collection___array[25] + 2))
+#define ATTR_standard___collection___array___ArrayMap____last_index(recv) ATTR(recv, (SFT_standard___collection___array[25] + 3))
 #define INIT_TABLE_POS_standard___collection___array___ArrayMap (SFT_standard___collection___array[26] + 0)
-#define CALL_standard___collection___array___ArrayMap___enlarge(recv) ((standard___collection___array___ArrayMap___enlarge_t)CALL((recv), (SFT_standard___collection___array[26] + 1)))
-#define CALL_standard___collection___array___ArrayMap___remove_at_index(recv) ((standard___collection___array___ArrayMap___remove_at_index_t)CALL((recv), (SFT_standard___collection___array[26] + 2)))
-#define CALL_standard___collection___array___ArrayMap___index(recv) ((standard___collection___array___ArrayMap___index_t)CALL((recv), (SFT_standard___collection___array[26] + 3)))
-#define CALL_standard___collection___array___ArrayMap___init(recv) ((standard___collection___array___ArrayMap___init_t)CALL((recv), (SFT_standard___collection___array[26] + 4)))
-#define CALL_standard___collection___array___Iterator___to_a(recv) ((standard___collection___array___Iterator___to_a_t)CALL((recv), (SFT_standard___collection___array[27] + 0)))
-#define CALL_standard___collection___array___Collection___to_a(recv) ((standard___collection___array___Collection___to_a_t)CALL((recv), (SFT_standard___collection___array[28] + 0)))
-#define ID_standard___collection___array___ArrayCapable (SFT_standard___collection___array[29])
-#define COLOR_standard___collection___array___ArrayCapable (SFT_standard___collection___array[30])
-#define INIT_TABLE_POS_standard___collection___array___ArrayCapable (SFT_standard___collection___array[31] + 0)
-#define CALL_standard___collection___array___ArrayCapable___calloc_array(recv) ((standard___collection___array___ArrayCapable___calloc_array_t)CALL((recv), (SFT_standard___collection___array[31] + 1)))
-#define ID_standard___collection___array___NativeArray (SFT_standard___collection___array[32])
-#define COLOR_standard___collection___array___NativeArray (SFT_standard___collection___array[33])
-#define INIT_TABLE_POS_standard___collection___array___NativeArray (SFT_standard___collection___array[34] + 0)
-#define CALL_standard___collection___array___NativeArray_____bra(recv) ((standard___collection___array___NativeArray_____bra_t)CALL((recv), (SFT_standard___collection___array[34] + 1)))
-#define CALL_standard___collection___array___NativeArray_____braeq(recv) ((standard___collection___array___NativeArray_____braeq_t)CALL((recv), (SFT_standard___collection___array[34] + 2)))
-#define CALL_standard___collection___array___NativeArray___copy_to(recv) ((standard___collection___array___NativeArray___copy_to_t)CALL((recv), (SFT_standard___collection___array[34] + 3)))
+#define CALL_standard___collection___array___ArrayMap___keys__eq(recv) ((standard___collection___array___ArrayMap___keys__eq_t)CALL((recv), (SFT_standard___collection___array[26] + 1)))
+#define CALL_standard___collection___array___ArrayMap___values__eq(recv) ((standard___collection___array___ArrayMap___values__eq_t)CALL((recv), (SFT_standard___collection___array[26] + 2)))
+#define CALL_standard___collection___array___ArrayMap___enlarge(recv) ((standard___collection___array___ArrayMap___enlarge_t)CALL((recv), (SFT_standard___collection___array[26] + 3)))
+#define CALL_standard___collection___array___ArrayMap___remove_at_index(recv) ((standard___collection___array___ArrayMap___remove_at_index_t)CALL((recv), (SFT_standard___collection___array[26] + 4)))
+#define CALL_standard___collection___array___ArrayMap___index(recv) ((standard___collection___array___ArrayMap___index_t)CALL((recv), (SFT_standard___collection___array[26] + 5)))
+#define CALL_standard___collection___array___ArrayMap___init(recv) ((standard___collection___array___ArrayMap___init_t)CALL((recv), (SFT_standard___collection___array[26] + 6)))
+#define ID_standard___collection___array___ArrayMapKeys (SFT_standard___collection___array[27])
+#define COLOR_standard___collection___array___ArrayMapKeys (SFT_standard___collection___array[28])
+#define ATTR_standard___collection___array___ArrayMapKeys_____atmap(recv) ATTR(recv, (SFT_standard___collection___array[29] + 0))
+#define INIT_TABLE_POS_standard___collection___array___ArrayMapKeys (SFT_standard___collection___array[30] + 0)
+#define CALL_standard___collection___array___ArrayMapKeys___map(recv) ((standard___collection___array___ArrayMapKeys___map_t)CALL((recv), (SFT_standard___collection___array[30] + 1)))
+#define CALL_standard___collection___array___ArrayMapKeys___map__eq(recv) ((standard___collection___array___ArrayMapKeys___map__eq_t)CALL((recv), (SFT_standard___collection___array[30] + 2)))
+#define CALL_standard___collection___array___ArrayMapKeys___init(recv) ((standard___collection___array___ArrayMapKeys___init_t)CALL((recv), (SFT_standard___collection___array[30] + 3)))
+#define ID_standard___collection___array___ArrayMapValues (SFT_standard___collection___array[31])
+#define COLOR_standard___collection___array___ArrayMapValues (SFT_standard___collection___array[32])
+#define ATTR_standard___collection___array___ArrayMapValues_____atmap(recv) ATTR(recv, (SFT_standard___collection___array[33] + 0))
+#define INIT_TABLE_POS_standard___collection___array___ArrayMapValues (SFT_standard___collection___array[34] + 0)
+#define CALL_standard___collection___array___ArrayMapValues___map(recv) ((standard___collection___array___ArrayMapValues___map_t)CALL((recv), (SFT_standard___collection___array[34] + 1)))
+#define CALL_standard___collection___array___ArrayMapValues___map__eq(recv) ((standard___collection___array___ArrayMapValues___map__eq_t)CALL((recv), (SFT_standard___collection___array[34] + 2)))
+#define CALL_standard___collection___array___ArrayMapValues___init(recv) ((standard___collection___array___ArrayMapValues___init_t)CALL((recv), (SFT_standard___collection___array[34] + 3)))
+#define CALL_standard___collection___array___Iterator___to_a(recv) ((standard___collection___array___Iterator___to_a_t)CALL((recv), (SFT_standard___collection___array[35] + 0)))
+#define CALL_standard___collection___array___Collection___to_a(recv) ((standard___collection___array___Collection___to_a_t)CALL((recv), (SFT_standard___collection___array[36] + 0)))
+#define ID_standard___collection___array___ArrayCapable (SFT_standard___collection___array[37])
+#define COLOR_standard___collection___array___ArrayCapable (SFT_standard___collection___array[38])
+#define INIT_TABLE_POS_standard___collection___array___ArrayCapable (SFT_standard___collection___array[39] + 0)
+#define CALL_standard___collection___array___ArrayCapable___calloc_array(recv) ((standard___collection___array___ArrayCapable___calloc_array_t)CALL((recv), (SFT_standard___collection___array[39] + 1)))
+#define ID_standard___collection___array___NativeArray (SFT_standard___collection___array[40])
+#define COLOR_standard___collection___array___NativeArray (SFT_standard___collection___array[41])
+#define INIT_TABLE_POS_standard___collection___array___NativeArray (SFT_standard___collection___array[42] + 0)
+#define CALL_standard___collection___array___NativeArray_____bra(recv) ((standard___collection___array___NativeArray_____bra_t)CALL((recv), (SFT_standard___collection___array[42] + 1)))
+#define CALL_standard___collection___array___NativeArray_____braeq(recv) ((standard___collection___array___NativeArray_____braeq_t)CALL((recv), (SFT_standard___collection___array[42] + 2)))
+#define CALL_standard___collection___array___NativeArray___copy_to(recv) ((standard___collection___array___NativeArray___copy_to_t)CALL((recv), (SFT_standard___collection___array[42] + 3)))
 static const char * const LOCATE_standard___collection___array___AbstractArrayRead___length = "array::AbstractArrayRead::(abstract_collection::Collection::length)";
 val_t standard___collection___array___AbstractArrayRead___length(val_t p0);
 typedef val_t (*standard___collection___array___AbstractArrayRead___length_t)(val_t p0);
@@ -103,9 +126,6 @@ typedef val_t (*standard___collection___array___AbstractArrayRead___has_t)(val_t
 static const char * const LOCATE_standard___collection___array___AbstractArrayRead___has_only = "array::AbstractArrayRead::(abstract_collection::Collection::has_only)";
 val_t standard___collection___array___AbstractArrayRead___has_only(val_t p0, val_t p1);
 typedef val_t (*standard___collection___array___AbstractArrayRead___has_only_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___AbstractArrayRead___has_key = "array::AbstractArrayRead::(abstract_collection::MapRead::has_key)";
-val_t standard___collection___array___AbstractArrayRead___has_key(val_t p0, val_t p1);
-typedef val_t (*standard___collection___array___AbstractArrayRead___has_key_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___array___AbstractArrayRead___count = "array::AbstractArrayRead::(abstract_collection::Collection::count)";
 val_t standard___collection___array___AbstractArrayRead___count(val_t p0, val_t p1);
 typedef val_t (*standard___collection___array___AbstractArrayRead___count_t)(val_t p0, val_t p1);
@@ -170,18 +190,21 @@ typedef void (*standard___collection___array___AbstractArray___remove_t)(val_t p
 static const char * const LOCATE_standard___collection___array___AbstractArray___remove_all = "array::AbstractArray::(abstract_collection::RemovableCollection::remove_all)";
 void standard___collection___array___AbstractArray___remove_all(val_t p0, val_t p1);
 typedef void (*standard___collection___array___AbstractArray___remove_all_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___AbstractArray___remove_at = "array::AbstractArray::(abstract_collection::Map::remove_at)";
+static const char * const LOCATE_standard___collection___array___AbstractArray___remove_at = "array::AbstractArray::(abstract_collection::Sequence::remove_at)";
 void standard___collection___array___AbstractArray___remove_at(val_t p0, val_t p1);
 typedef void (*standard___collection___array___AbstractArray___remove_at_t)(val_t p0, val_t p1);
+static const char * const 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);
+typedef void (*standard___collection___array___AbstractArray___swap_at_t)(val_t p0, val_t p1, val_t p2);
 val_t NEW_AbstractArray_standard___collection___array___AbstractArrayRead___init();
 typedef void (*CLOS_standard___collection___array___Array___iterate_0)(struct stack_frame_t *, val_t);
 static const char * const LOCATE_standard___collection___array___Array___iterate = "array::Array::(abstract_collection::Collection::iterate)";
 void standard___collection___array___Array___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
 typedef void (*standard___collection___array___Array___iterate_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
-static const char * const LOCATE_standard___collection___array___Array_____bra = "array::Array::(abstract_collection::MapRead::[])";
+static const char * const LOCATE_standard___collection___array___Array_____bra = "array::Array::(abstract_collection::SequenceRead::[])";
 val_t standard___collection___array___Array_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___collection___array___Array_____bra_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___Array_____braeq = "array::Array::(abstract_collection::Map::[]=)";
+static const char * const LOCATE_standard___collection___array___Array_____braeq = "array::Array::(abstract_collection::Sequence::[]=)";
 void standard___collection___array___Array_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___collection___array___Array_____braeq_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_standard___collection___array___Array___add = "array::Array::(abstract_collection::SimpleCollection::add)";
@@ -303,40 +326,28 @@ typedef val_t (*standard___collection___array___ArrayMap_____bra_t)(val_t p0, va
 static const char * const LOCATE_standard___collection___array___ArrayMap_____braeq = "array::ArrayMap::(abstract_collection::Map::[]=)";
 void standard___collection___array___ArrayMap_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___collection___array___ArrayMap_____braeq_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_standard___collection___array___ArrayMap___has_key = "array::ArrayMap::(abstract_collection::MapRead::has_key)";
-val_t standard___collection___array___ArrayMap___has_key(val_t p0, val_t p1);
-typedef val_t (*standard___collection___array___ArrayMap___has_key_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___has = "array::ArrayMap::(abstract_collection::Collection::has)";
-val_t standard___collection___array___ArrayMap___has(val_t p0, val_t p1);
-typedef val_t (*standard___collection___array___ArrayMap___has_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___has_only = "array::ArrayMap::(abstract_collection::Collection::has_only)";
-val_t standard___collection___array___ArrayMap___has_only(val_t p0, val_t p1);
-typedef val_t (*standard___collection___array___ArrayMap___has_only_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___length = "array::ArrayMap::(abstract_collection::Collection::length)";
+static const char * const LOCATE_standard___collection___array___ArrayMap___keys = "array::ArrayMap::(abstract_collection::MapRead::keys)";
+val_t standard___collection___array___ArrayMap___keys(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMap___keys_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMap___keys__eq = "array::ArrayMap::keys=";
+void standard___collection___array___ArrayMap___keys__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMap___keys__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMap___values = "array::ArrayMap::(abstract_collection::MapRead::values)";
+val_t standard___collection___array___ArrayMap___values(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMap___values_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMap___values__eq = "array::ArrayMap::values=";
+void standard___collection___array___ArrayMap___values__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMap___values__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMap___length = "array::ArrayMap::(abstract_collection::MapRead::length)";
 val_t standard___collection___array___ArrayMap___length(val_t p0);
 typedef val_t (*standard___collection___array___ArrayMap___length_t)(val_t p0);
-static const char * const LOCATE_standard___collection___array___ArrayMap___first = "array::ArrayMap::(abstract_collection::Collection::first)";
-val_t standard___collection___array___ArrayMap___first(val_t p0);
-typedef val_t (*standard___collection___array___ArrayMap___first_t)(val_t p0);
-static const char * const LOCATE_standard___collection___array___ArrayMap___count = "array::ArrayMap::(abstract_collection::Collection::count)";
-val_t standard___collection___array___ArrayMap___count(val_t p0, val_t p1);
-typedef val_t (*standard___collection___array___ArrayMap___count_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___iterator = "array::ArrayMap::(abstract_collection::Collection::iterator)";
+static const char * const LOCATE_standard___collection___array___ArrayMap___iterator = "array::ArrayMap::(abstract_collection::MapRead::iterator)";
 val_t standard___collection___array___ArrayMap___iterator(val_t p0);
 typedef val_t (*standard___collection___array___ArrayMap___iterator_t)(val_t p0);
-static const char * const LOCATE_standard___collection___array___ArrayMap___is_empty = "array::ArrayMap::(abstract_collection::Collection::is_empty)";
+static const char * const LOCATE_standard___collection___array___ArrayMap___is_empty = "array::ArrayMap::(abstract_collection::MapRead::is_empty)";
 val_t standard___collection___array___ArrayMap___is_empty(val_t p0);
 typedef val_t (*standard___collection___array___ArrayMap___is_empty_t)(val_t p0);
-static const char * const LOCATE_standard___collection___array___ArrayMap___remove = "array::ArrayMap::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___array___ArrayMap___remove(val_t p0, val_t p1);
-typedef void (*standard___collection___array___ArrayMap___remove_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___remove_all = "array::ArrayMap::(abstract_collection::RemovableCollection::remove_all)";
-void standard___collection___array___ArrayMap___remove_all(val_t p0, val_t p1);
-typedef void (*standard___collection___array___ArrayMap___remove_all_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___remove_at = "array::ArrayMap::(abstract_collection::Map::remove_at)";
-void standard___collection___array___ArrayMap___remove_at(val_t p0, val_t p1);
-typedef void (*standard___collection___array___ArrayMap___remove_at_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___array___ArrayMap___clear = "array::ArrayMap::(abstract_collection::RemovableCollection::clear)";
+static const char * const LOCATE_standard___collection___array___ArrayMap___clear = "array::ArrayMap::(abstract_collection::Map::clear)";
 void standard___collection___array___ArrayMap___clear(val_t p0);
 typedef void (*standard___collection___array___ArrayMap___clear_t)(val_t p0);
 static const char * const LOCATE_standard___collection___array___ArrayMap___enlarge = "array::ArrayMap::enlarge";
@@ -355,6 +366,86 @@ static const char * const LOCATE_standard___collection___array___ArrayMap___init
 void standard___collection___array___ArrayMap___init(val_t p0, int* init_table);
 typedef void (*standard___collection___array___ArrayMap___init_t)(val_t p0, int* init_table);
 val_t NEW_ArrayMap_standard___collection___array___ArrayMap___init();
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___map = "array::ArrayMapKeys::map";
+val_t standard___collection___array___ArrayMapKeys___map(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapKeys___map_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___map__eq = "array::ArrayMapKeys::map=";
+void standard___collection___array___ArrayMapKeys___map__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapKeys___map__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___count = "array::ArrayMapKeys::(abstract_collection::Collection::count)";
+val_t standard___collection___array___ArrayMapKeys___count(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapKeys___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___first = "array::ArrayMapKeys::(abstract_collection::Collection::first)";
+val_t standard___collection___array___ArrayMapKeys___first(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapKeys___first_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___has = "array::ArrayMapKeys::(abstract_collection::Collection::has)";
+val_t standard___collection___array___ArrayMapKeys___has(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapKeys___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___has_only = "array::ArrayMapKeys::(abstract_collection::Collection::has_only)";
+val_t standard___collection___array___ArrayMapKeys___has_only(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapKeys___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___is_empty = "array::ArrayMapKeys::(abstract_collection::Collection::is_empty)";
+val_t standard___collection___array___ArrayMapKeys___is_empty(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapKeys___is_empty_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___length = "array::ArrayMapKeys::(abstract_collection::Collection::length)";
+val_t standard___collection___array___ArrayMapKeys___length(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapKeys___length_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___iterator = "array::ArrayMapKeys::(abstract_collection::Collection::iterator)";
+val_t standard___collection___array___ArrayMapKeys___iterator(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapKeys___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___clear = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::clear)";
+void standard___collection___array___ArrayMapKeys___clear(val_t p0);
+typedef void (*standard___collection___array___ArrayMapKeys___clear_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___remove = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::remove)";
+void standard___collection___array___ArrayMapKeys___remove(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapKeys___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___remove_all = "array::ArrayMapKeys::(abstract_collection::RemovableCollection::remove_all)";
+void standard___collection___array___ArrayMapKeys___remove_all(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapKeys___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapKeys___init = "array::ArrayMapKeys::init";
+void standard___collection___array___ArrayMapKeys___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___array___ArrayMapKeys___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ArrayMapKeys_standard___collection___array___ArrayMapKeys___init(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___map = "array::ArrayMapValues::map";
+val_t standard___collection___array___ArrayMapValues___map(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapValues___map_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___map__eq = "array::ArrayMapValues::map=";
+void standard___collection___array___ArrayMapValues___map__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapValues___map__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___first = "array::ArrayMapValues::(abstract_collection::Collection::first)";
+val_t standard___collection___array___ArrayMapValues___first(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapValues___first_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___is_empty = "array::ArrayMapValues::(abstract_collection::Collection::is_empty)";
+val_t standard___collection___array___ArrayMapValues___is_empty(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapValues___is_empty_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___length = "array::ArrayMapValues::(abstract_collection::Collection::length)";
+val_t standard___collection___array___ArrayMapValues___length(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapValues___length_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___iterator = "array::ArrayMapValues::(abstract_collection::Collection::iterator)";
+val_t standard___collection___array___ArrayMapValues___iterator(val_t p0);
+typedef val_t (*standard___collection___array___ArrayMapValues___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___has = "array::ArrayMapValues::(abstract_collection::Collection::has)";
+val_t standard___collection___array___ArrayMapValues___has(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapValues___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___has_only = "array::ArrayMapValues::(abstract_collection::Collection::has_only)";
+val_t standard___collection___array___ArrayMapValues___has_only(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapValues___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___count = "array::ArrayMapValues::(abstract_collection::Collection::count)";
+val_t standard___collection___array___ArrayMapValues___count(val_t p0, val_t p1);
+typedef val_t (*standard___collection___array___ArrayMapValues___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___clear = "array::ArrayMapValues::(abstract_collection::RemovableCollection::clear)";
+void standard___collection___array___ArrayMapValues___clear(val_t p0);
+typedef void (*standard___collection___array___ArrayMapValues___clear_t)(val_t p0);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___remove = "array::ArrayMapValues::(abstract_collection::RemovableCollection::remove)";
+void standard___collection___array___ArrayMapValues___remove(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapValues___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___remove_all = "array::ArrayMapValues::(abstract_collection::RemovableCollection::remove_all)";
+void standard___collection___array___ArrayMapValues___remove_all(val_t p0, val_t p1);
+typedef void (*standard___collection___array___ArrayMapValues___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___array___ArrayMapValues___init = "array::ArrayMapValues::init";
+void standard___collection___array___ArrayMapValues___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___array___ArrayMapValues___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_ArrayMapValues_standard___collection___array___ArrayMapValues___init(val_t p0);
 static const char * const LOCATE_standard___collection___array___Iterator___to_a = "array::Iterator::to_a";
 val_t standard___collection___array___Iterator___to_a(val_t p0);
 typedef val_t (*standard___collection___array___Iterator___to_a_t)(val_t p0);
index 739fe9f..a089ea8 100644 (file)
@@ -1,27 +1,5 @@
 /* This C file is generated by NIT to compile module standard___collection___hash_collection. */
 #include "standard___collection___hash_collection._sep.h"
-val_t standard___collection___hash_collection___HashCollection___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_standard___collection___hash_collection;
-  fra.me.line = 25;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashCollection___length;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:25 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 25);
-  }
-  REGB0 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
 val_t standard___collection___hash_collection___HashCollection___first_item(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t tmp;
@@ -42,6 +20,7 @@ val_t standard___collection___hash_collection___HashCollection___index_at(val_t
   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___collection___hash_collection;
@@ -61,15 +40,20 @@ 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:223 */
+  /* ./../lib/standard//kernel.nit:240 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//hash_collection.nit:40 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* ./../lib/standard//collection//hash_collection.nit:40 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB1));
     /* ./../lib/standard//collection//hash_collection.nit:40 */
     REGB1 = REGB0;
@@ -141,7 +125,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:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
   /* ./../lib/standard//collection//hash_collection.nit:60 */
   while(1) {
@@ -256,7 +240,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:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   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]);
@@ -264,7 +248,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:655 */
+  /* ./../lib/standard//collection//array.nit:719 */
   ((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];
@@ -304,21 +288,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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//hash_collection.nit:95 */
   REGB2 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:221 */
+  /* ./../lib/standard//kernel.nit:238 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
   /* ./../lib/standard//collection//hash_collection.nit:95 */
   REGB1 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:222 */
+  /* ./../lib/standard//kernel.nit:239 */
   REGB1 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//hash_collection.nit:95 */
   REGB0 = REGB1;
@@ -329,13 +313,18 @@ void standard___collection___hash_collection___HashCollection___store(val_t p0,
     nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 96);
   }
   REGB1 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   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:221 */
+    /* ./../lib/standard//kernel.nit:238 */
     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);
@@ -431,7 +420,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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   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;
@@ -465,7 +454,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:655 */
+    /* ./../lib/standard//collection//array.nit:719 */
     ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)]=fra.me.REG[3];
   }
   /* ./../lib/standard//collection//hash_collection.nit:131 */
@@ -496,6 +485,7 @@ void standard___collection___hash_collection___HashCollection___raz(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___collection___hash_collection;
@@ -506,51 +496,56 @@ void standard___collection___hash_collection___HashCollection___raz(val_t p0){
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:140 */
+  /* ./../lib/standard//collection//hash_collection.nit:141 */
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 140);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 141);
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//hash_collection.nit:141 */
+  /* ./../lib/standard//collection//hash_collection.nit:142 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//hash_collection.nit:141 */
+    /* ./../lib/standard//collection//hash_collection.nit:142 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//hash_collection.nit:142 */
+      /* ./../lib/standard//collection//hash_collection.nit:143 */
       fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashCollection____array(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___collection___hash_collection, 142);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 143);
       }
-      /* ./../lib/standard//collection//array.nit:655 */
+      /* ./../lib/standard//collection//array.nit:719 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=NIT_NULL;
-      /* ./../lib/standard//collection//hash_collection.nit:143 */
+      /* ./../lib/standard//collection//hash_collection.nit:144 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//hash_collection.nit:143 */
+      /* ./../lib/standard//collection//hash_collection.nit:144 */
       REGB1 = REGB0;
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:141 */
+      /* ./../lib/standard//collection//hash_collection.nit:142 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//hash_collection.nit:145 */
+  /* ./../lib/standard//collection//hash_collection.nit:146 */
   REGB1 = TAG_Int(0);
   ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]) = REGB1;
-  /* ./../lib/standard//collection//hash_collection.nit:146 */
-  ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]) = NIT_NULL;
   /* ./../lib/standard//collection//hash_collection.nit:147 */
-  ATTR_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = NIT_NULL;
+  ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]) = NIT_NULL;
   /* ./../lib/standard//collection//hash_collection.nit:148 */
+  ATTR_standard___collection___hash_collection___HashCollection____last_item(fra.me.REG[0]) = NIT_NULL;
+  /* ./../lib/standard//collection//hash_collection.nit:149 */
   ATTR_standard___collection___hash_collection___HashCollection____last_accessed_key(fra.me.REG[0]) = NIT_NULL;
   stack_frame_head = fra.me.prev;
   return;
@@ -564,7 +559,7 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 151;
+  fra.me.line = 152;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashCollection___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -574,101 +569,121 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:153 */
+  /* ./../lib/standard//collection//hash_collection.nit:155 */
   REGB1 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 153);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 155);
   }
   REGB1 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:155 */
+  /* ./../lib/standard//collection//hash_collection.nit:157 */
   REGB2 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 155);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 157);
   }
   REGB2 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-  /* ./../lib/standard//collection//hash_collection.nit:155 */
+  /* ./../lib/standard//collection//hash_collection.nit:157 */
   if (UNTAG_Bool(REGB3)) {
     REGB3 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB3)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 155);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 157);
     }
     REGB3 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//hash_collection.nit:155 */
+    /* ./../lib/standard//collection//hash_collection.nit:157 */
     REGB0 = REGB2;
   }
-  /* ./../lib/standard//collection//hash_collection.nit:156 */
+  /* ./../lib/standard//collection//hash_collection.nit:158 */
   REGB2 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 156);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 158);
   }
   REGB2 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB2));
-  /* ./../lib/standard//collection//hash_collection.nit:156 */
+  /* ./../lib/standard//collection//hash_collection.nit:158 */
   if (UNTAG_Bool(REGB2)) {
     goto label1;
   }
-  /* ./../lib/standard//collection//hash_collection.nit:157 */
+  /* ./../lib/standard//collection//hash_collection.nit:159 */
   ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:158 */
+  /* ./../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:648 */
+  /* ./../lib/standard//collection//array.nit:712 */
   fra.me.REG[1] = NEW_NativeArray(UNTAG_Int(REGB0), sizeof(val_t));
-  /* ./../lib/standard//collection//hash_collection.nit:162 */
+  /* ./../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:165 */
+  /* ./../lib/standard//collection//hash_collection.nit:167 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//collection//hash_collection.nit:166 */
+  /* ./../lib/standard//collection//hash_collection.nit:168 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//hash_collection.nit:166 */
+    /* ./../lib/standard//collection//hash_collection.nit:168 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:655 */
+      /* ./../lib/standard//collection//array.nit:719 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB2)]=NIT_NULL;
-      /* ./../lib/standard//collection//hash_collection.nit:168 */
+      /* ./../lib/standard//collection//hash_collection.nit:170 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//collection//hash_collection.nit:168 */
+      /* ./../lib/standard//collection//hash_collection.nit:170 */
       REGB2 = REGB0;
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:166 */
+      /* ./../lib/standard//collection//hash_collection.nit:168 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//hash_collection.nit:171 */
+  /* ./../lib/standard//collection//hash_collection.nit:173 */
   REGB2 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 171);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___collection___hash_collection, 173);
   }
   REGB2 = ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//hash_collection.nit:171 */
+  /* ./../lib/standard//collection//hash_collection.nit:173 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./../lib/standard//collection//hash_collection.nit:174 */
+  /* ./../lib/standard//collection//hash_collection.nit:176 */
   fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:175 */
+  /* ./../lib/standard//collection//hash_collection.nit:177 */
   while(1) {
     REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
@@ -684,21 +699,21 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//hash_collection.nit:176 */
+      /* ./../lib/standard//collection//hash_collection.nit:178 */
       REGB1 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 176);
+        nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 178);
       }
       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:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)];
-      /* ./../lib/standard//collection//array.nit:655 */
+      /* ./../lib/standard//collection//array.nit:719 */
       ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB1)]=fra.me.REG[2];
-      /* ./../lib/standard//collection//hash_collection.nit:180 */
+      /* ./../lib/standard//collection//hash_collection.nit:182 */
       ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(fra.me.REG[2]) = fra.me.REG[3];
-      /* ./../lib/standard//collection//hash_collection.nit:181 */
+      /* ./../lib/standard//collection//hash_collection.nit:183 */
       REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -715,11 +730,11 @@ void standard___collection___hash_collection___HashCollection___enlarge(val_t p0
       if (UNTAG_Bool(REGB1)) {
         ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(fra.me.REG[3]) = fra.me.REG[2];
       }
-      /* ./../lib/standard//collection//hash_collection.nit:182 */
+      /* ./../lib/standard//collection//hash_collection.nit:184 */
       fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[3];
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:175 */
+      /* ./../lib/standard//collection//hash_collection.nit:177 */
       goto label3;
     }
   }
@@ -748,13 +763,13 @@ val_t standard___collection___hash_collection___HashNode___next_item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 190;
+  fra.me.line = 192;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashNode___next_item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -764,7 +779,7 @@ void standard___collection___hash_collection___HashNode___next_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___hash_collection;
-  fra.me.line = 190;
+  fra.me.line = 192;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashNode___next_item__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -772,7 +787,7 @@ void standard___collection___hash_collection___HashNode___next_item__eq(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:190 */
+  /* ./../lib/standard//collection//hash_collection.nit:192 */
   ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -782,13 +797,13 @@ val_t standard___collection___hash_collection___HashNode___prev_item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 191;
+  fra.me.line = 193;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashNode___prev_item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -798,7 +813,7 @@ void standard___collection___hash_collection___HashNode___prev_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___hash_collection;
-  fra.me.line = 191;
+  fra.me.line = 193;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashNode___prev_item__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -806,7 +821,7 @@ void standard___collection___hash_collection___HashNode___prev_item__eq(val_t p0
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:191 */
+  /* ./../lib/standard//collection//hash_collection.nit:193 */
   ATTR_standard___collection___hash_collection___HashNode____prev_item(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -818,7 +833,7 @@ void standard___collection___hash_collection___HashNode___init(val_t p0, val_t p
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 194;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -826,7 +841,7 @@ void standard___collection___hash_collection___HashNode___init(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//hash_collection.nit:196 */
+  /* ./../lib/standard//collection//hash_collection.nit:198 */
   ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -839,7 +854,7 @@ val_t standard___collection___hash_collection___HashMap_____bra(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___hash_collection;
-  fra.me.line = 204;
+  fra.me.line = 208;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -847,9 +862,9 @@ val_t standard___collection___hash_collection___HashMap_____bra(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:206 */
+  /* ./../lib/standard//collection//hash_collection.nit:210 */
   fra.me.REG[1] = CALL_standard___collection___hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//hash_collection.nit:207 */
+  /* ./../lib/standard//collection//hash_collection.nit:211 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -863,10 +878,10 @@ val_t standard___collection___hash_collection___HashMap_____bra(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//hash_collection.nit:208 */
-    nit_abort("Aborted", NULL, LOCATE_standard___collection___hash_collection, 208);
+    /* ./../lib/standard//collection//hash_collection.nit:212 */
+    nit_abort("Aborted", NULL, LOCATE_standard___collection___hash_collection, 212);
   } else {
-    /* ./../lib/standard//collection//hash_collection.nit:210 */
+    /* ./../lib/standard//collection//hash_collection.nit:214 */
     fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[1]);
     goto label1;
   }
@@ -874,53 +889,18 @@ val_t standard___collection___hash_collection___HashMap_____bra(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
 }
-val_t standard___collection___hash_collection___HashMap___has_key(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___collection___hash_collection;
-  fra.me.line = 214;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___has_key;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:214 */
-  fra.me.REG[1] = CALL_standard___collection___hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
 val_t standard___collection___hash_collection___HashMap___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_standard___collection___hash_collection;
-  fra.me.line = 216;
+  fra.me.line = 218;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:216 */
+  /* ./../lib/standard//collection//hash_collection.nit:218 */
   fra.me.REG[0] = NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -928,26 +908,27 @@ val_t standard___collection___hash_collection___HashMap___iterator(val_t p0){
   return fra.me.REG[0];
 }
 void standard___collection___hash_collection___HashMap___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
-  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;
   fun_t CREG[1];
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 218;
+  fra.me.line = 220;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___iterate;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.closure_ctx = closctx_param;
   fra.me.closure_funs = CREG;
   fra.me.REG[0] = p0;
   CREG[0] = clos_fun0;
-  /* ./../lib/standard//collection//hash_collection.nit:221 */
+  /* ./../lib/standard//collection//hash_collection.nit:223 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:222 */
+  /* ./../lib/standard//collection//hash_collection.nit:224 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -963,17 +944,23 @@ void standard___collection___hash_collection___HashMap___iterate(val_t p0, struc
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//hash_collection.nit:223 */
-      fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
-      ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, fra.me.REG[1]);
+      /* ./../lib/standard//collection//hash_collection.nit:225 */
+      REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 225);
+      }
+      fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]);
+      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(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//hash_collection.nit:224 */
-      fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
-      fra.me.REG[0] = fra.me.REG[1];
+      /* ./../lib/standard//collection//hash_collection.nit:226 */
+      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
+      fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:222 */
+      /* ./../lib/standard//collection//hash_collection.nit:224 */
       goto label2;
     }
   }
@@ -982,15 +969,14 @@ void standard___collection___hash_collection___HashMap___iterate(val_t p0, struc
   stack_frame_head = fra.me.prev;
   return;
 }
-val_t standard___collection___hash_collection___HashMap___first(val_t p0){
+val_t standard___collection___hash_collection___HashMap___length(val_t p0){
   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___collection___hash_collection;
-  fra.me.line = 228;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___first;
+  fra.me.line = 230;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
@@ -1002,25 +988,10 @@ val_t standard___collection___hash_collection___HashMap___first(val_t p0){
     nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 230);
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//hash_collection.nit:230 */
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 230);
-  }
-  /* ./../lib/standard//collection//hash_collection.nit:231 */
-  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(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___hash_collection, 231);
-  }
-  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return REGB0;
 }
 val_t standard___collection___hash_collection___HashMap___is_empty(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -1030,26 +1001,26 @@ val_t standard___collection___hash_collection___HashMap___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___hash_collection;
-  fra.me.line = 234;
+  fra.me.line = 232;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:234 */
+  /* ./../lib/standard//collection//hash_collection.nit:232 */
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 234);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 232);
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./../lib/standard//collection//hash_collection.nit:234 */
+    /* ./../lib/standard//collection//hash_collection.nit:232 */
     REGB2 = REGB1;
   }
   goto label1;
@@ -1057,141 +1028,699 @@ val_t standard___collection___hash_collection___HashMap___is_empty(val_t p0){
   stack_frame_head = fra.me.prev;
   return REGB2;
 }
-val_t standard___collection___hash_collection___HashMap___count(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+void standard___collection___hash_collection___HashMap_____braeq(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 REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 236;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___count;
+  fra.me.line = 234;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap_____braeq;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./../lib/standard//collection//hash_collection.nit:236 */
+  REGB0 = CALL_standard___collection___hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./../lib/standard//collection//hash_collection.nit:237 */
+  fra.me.REG[3] = CALL_standard___collection___hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
   /* ./../lib/standard//collection//hash_collection.nit:238 */
-  REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//hash_collection.nit:239 */
-  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:240 */
-  while(1) {
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-    } else {
-      REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        REGB2 = TAG_Bool(false);
-        REGB1 = REGB2;
-      } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
-        REGB1 = REGB2;
-      }
-    }
-    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//hash_collection.nit:241 */
-      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
-      REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB1)) {
-      } else {
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB2)) {
-          REGB2 = TAG_Bool(false);
-          REGB1 = REGB2;
-        } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB1 = REGB2;
-        }
-      }
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
-        REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//hash_collection.nit:241 */
-        REGB0 = REGB1;
-      }
-      /* ./../lib/standard//collection//hash_collection.nit:242 */
-      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
-      fra.me.REG[0] = fra.me.REG[2];
+  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+      REGB2 = TAG_Bool(false);
+      REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:240 */
-      goto label1;
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = REGB2;
     }
   }
-  label1: while(0);
-  /* ./../lib/standard//collection//hash_collection.nit:244 */
-  goto label2;
-  label2: while(0);
+  REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//collection//hash_collection.nit:239 */
+    ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[3]) = fra.me.REG[1];
+    /* ./../lib/standard//collection//hash_collection.nit:240 */
+    ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[3]) = fra.me.REG[2];
+  } else {
+    /* ./../lib/standard//collection//hash_collection.nit:242 */
+    fra.me.REG[2] = NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init(fra.me.REG[1], fra.me.REG[2]);
+    CALL_standard___collection___hash_collection___HashCollection___store(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
+  }
   stack_frame_head = fra.me.prev;
-  return REGB0;
+  return;
 }
-val_t standard___collection___hash_collection___HashMap___has(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+void standard___collection___hash_collection___HashMap___clear(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___collection___hash_collection;
+  fra.me.line = 246;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:246 */
+  CALL_standard___collection___hash_collection___HashCollection___raz(fra.me.REG[0])(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void standard___collection___hash_collection___HashMap___init(val_t p0, int* init_table){
+  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMap].i;
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
-  val_t REGB1;
   val_t tmp;
+  if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 247;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___has;
+  fra.me.line = 248;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 2;
   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//collection//hash_collection.nit:249 */
-  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:248 */
+  fra.me.REG[1] = fra.me.REG[0];
+  CALL_standard___collection___hash_collection___HashCollection___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   /* ./../lib/standard//collection//hash_collection.nit:250 */
-  while(1) {
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-      if (UNTAG_Bool(REGB1)) {
-        REGB1 = TAG_Bool(false);
-        REGB0 = REGB1;
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
-        REGB0 = REGB1;
-      }
-    }
-    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-    if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//hash_collection.nit:251 */
-      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
-      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
-        if (UNTAG_Bool(REGB1)) {
-          REGB1 = TAG_Bool(false);
-          REGB0 = REGB1;
-        } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-          REGB0 = REGB1;
-        }
-      }
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[1]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:251 */
+  REGB0 = TAG_Int(0);
+  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[1]) = REGB0;
+  /* ./../lib/standard//collection//hash_collection.nit:252 */
+  REGB0 = TAG_Int(0);
+  CALL_standard___collection___hash_collection___HashCollection___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  stack_frame_head = fra.me.prev;
+  init_table[itpos2] = 1;
+  return;
+}
+val_t standard___collection___hash_collection___HashMap___keys(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___collection___hash_collection;
+  fra.me.line = 255;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___keys;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:255 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@keys", LOCATE_standard___collection___hash_collection, 255);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMap___keys__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___hash_collection;
+  fra.me.line = 255;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___keys__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:255 */
+  ATTR_standard___collection___hash_collection___HashMap_____atkeys(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___hash_collection___HashMap___values(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___collection___hash_collection;
+  fra.me.line = 256;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___values;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:256 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@values", LOCATE_standard___collection___hash_collection, 256);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMap___values__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___hash_collection;
+  fra.me.line = 256;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___values__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:256 */
+  ATTR_standard___collection___hash_collection___HashMap_____atvalues(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___hash_collection___HashMapKeys___map(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___collection___hash_collection;
+  fra.me.line = 262;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___map;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:262 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___hash_collection, 262);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMapKeys___map__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___hash_collection;
+  fra.me.line = 262;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___map__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:262 */
+  ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___hash_collection___HashMapKeys___count(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___collection___hash_collection;
+  fra.me.line = 265;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___count;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:265 */
+  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);
+    goto label1;
+  } else {
+    REGB1 = TAG_Int(0);
+    REGB0 = REGB1;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapKeys___first(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___collection___hash_collection;
+  fra.me.line = 266;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___first;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:266 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(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___hash_collection, 266);
+  }
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 266);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t standard___collection___hash_collection___HashMapKeys___has(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___collection___hash_collection;
+  fra.me.line = 267;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___has;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:267 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[1] = CALL_standard___collection___hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
+    } else {
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB0 = REGB1;
+    }
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapKeys___has_only(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 tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___hash_collection;
+  fra.me.line = 268;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___has_only;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:268 */
+  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]);
+    REGB1 = TAG_Int(1);
+    REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:227 */
+      REGB1 = TAG_Bool((REGB0)==(REGB1));
+      /* ./../lib/standard//collection//hash_collection.nit:268 */
+      REGB2 = REGB1;
+    }
+  } else {
+    REGB1 = TAG_Bool(false);
+    REGB2 = REGB1;
+  }
+  if (UNTAG_Bool(REGB2)) {
+    REGB2 = TAG_Bool(true);
+  } else {
+    REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+    REGB2 = REGB1;
+  }
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB2;
+}
+val_t standard___collection___hash_collection___HashMapKeys___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_standard___collection___hash_collection;
+  fra.me.line = 269;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___is_empty;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:269 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapKeys___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_standard___collection___hash_collection;
+  fra.me.line = 270;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:270 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapKeys___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_standard___collection___hash_collection;
+  fra.me.line = 272;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:272 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___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]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMapKeys___clear(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___collection___hash_collection;
+  fra.me.line = 274;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:274 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___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;
+  return;
+}
+void standard___collection___hash_collection___HashMapKeys___remove(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___hash_collection;
+  fra.me.line = 276;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___remove;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:276 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void standard___collection___hash_collection___HashMapKeys___remove_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_standard___collection___hash_collection;
+  fra.me.line = 277;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___remove_all;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:277 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapKeys___map(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void standard___collection___hash_collection___HashMapKeys___init(val_t p0, val_t p1, int* init_table){
+  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapKeys].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___collection___hash_collection;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapKeys___init;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  init_table[itpos3] = 1;
+  return;
+}
+val_t standard___collection___hash_collection___HashMapValues___map(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___collection___hash_collection;
+  fra.me.line = 283;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___map;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:283 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "@map", LOCATE_standard___collection___hash_collection, 283);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMapValues___map__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___collection___hash_collection;
+  fra.me.line = 283;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___map__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:283 */
+  ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
+val_t standard___collection___hash_collection___HashMapValues___count(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 REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_standard___collection___hash_collection;
+  fra.me.line = 286;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___count;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:288 */
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//collection//hash_collection.nit:289 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:290 */
+  while(1) {
+    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      if (UNTAG_Bool(REGB2)) {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB1 = REGB2;
+      }
+    }
+    REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//collection//hash_collection.nit:291 */
+      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
+      REGB1 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB2)) {
+          REGB2 = TAG_Bool(false);
+          REGB1 = REGB2;
+        } else {
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          REGB1 = REGB2;
+        }
+      }
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Int(1);
+        /* ./../lib/standard//kernel.nit:235 */
+        REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+        /* ./../lib/standard//collection//hash_collection.nit:291 */
+        REGB0 = REGB1;
+      }
+      /* ./../lib/standard//collection//hash_collection.nit:292 */
+      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
+      fra.me.REG[0] = fra.me.REG[2];
+    } else {
+      /* ./../lib/standard//collection//hash_collection.nit:290 */
+      goto label1;
+    }
+  }
+  label1: while(0);
+  /* ./../lib/standard//collection//hash_collection.nit:294 */
+  goto label2;
+  label2: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapValues___first(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___collection___hash_collection;
+  fra.me.line = 296;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___first;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:296 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(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___hash_collection, 296);
+  }
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+val_t standard___collection___hash_collection___HashMapValues___has(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_standard___collection___hash_collection;
+  fra.me.line = 298;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___has;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//collection//hash_collection.nit:300 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:301 */
+  while(1) {
+    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      /* ./../lib/standard//collection//hash_collection.nit:302 */
+      fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
+      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(false);
+          REGB0 = REGB1;
+        } else {
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+          REGB0 = REGB1;
+        }
+      }
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(true);
         goto label1;
       }
-      /* ./../lib/standard//collection//hash_collection.nit:252 */
+      /* ./../lib/standard//collection//hash_collection.nit:303 */
       fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:250 */
+      /* ./../lib/standard//collection//hash_collection.nit:301 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//hash_collection.nit:254 */
+  /* ./../lib/standard//collection//hash_collection.nit:305 */
   REGB1 = TAG_Bool(false);
   REGB0 = REGB1;
   goto label1;
@@ -1199,15 +1728,15 @@ val_t standard___collection___hash_collection___HashMap___has(val_t p0, val_t p1
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val_t p1){
+val_t standard___collection___hash_collection___HashMapValues___has_only(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_standard___collection___hash_collection;
-  fra.me.line = 257;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___has_only;
+  fra.me.line = 308;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___has_only;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
@@ -1215,9 +1744,10 @@ val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:259 */
+  /* ./../lib/standard//collection//hash_collection.nit:310 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:260 */
+  /* ./../lib/standard//collection//hash_collection.nit:311 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1233,7 +1763,7 @@ val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//hash_collection.nit:261 */
+      /* ./../lib/standard//collection//hash_collection.nit:312 */
       fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[2],fra.me.REG[1]));
       if (UNTAG_Bool(REGB0)) {
@@ -1252,16 +1782,16 @@ val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val
         REGB0 = TAG_Bool(false);
         goto label1;
       }
-      /* ./../lib/standard//collection//hash_collection.nit:262 */
+      /* ./../lib/standard//collection//hash_collection.nit:313 */
       fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:260 */
+      /* ./../lib/standard//collection//hash_collection.nit:311 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//hash_collection.nit:264 */
+  /* ./../lib/standard//collection//hash_collection.nit:315 */
   REGB1 = TAG_Bool(true);
   REGB0 = REGB1;
   goto label1;
@@ -1269,65 +1799,92 @@ val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-void standard___collection___hash_collection___HashMap_____braeq(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+val_t standard___collection___hash_collection___HashMapValues___is_empty(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___collection___hash_collection;
-  fra.me.line = 267;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap_____braeq;
+  fra.me.line = 318;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___is_empty;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 1;
   fra.me.REG[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;
-  /* ./../lib/standard//collection//hash_collection.nit:269 */
-  REGB0 = CALL_standard___collection___hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//hash_collection.nit:270 */
-  fra.me.REG[3] = CALL_standard___collection___hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-  /* ./../lib/standard//collection//hash_collection.nit:271 */
-  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-  if (UNTAG_Bool(REGB1)) {
-  } else {
-    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
-      REGB1 = REGB2;
-    } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-      REGB1 = REGB2;
-    }
-  }
-  REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-  if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//hash_collection.nit:272 */
-    ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[3]) = fra.me.REG[1];
-    /* ./../lib/standard//collection//hash_collection.nit:273 */
-    ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[3]) = fra.me.REG[2];
-  } else {
-    /* ./../lib/standard//collection//hash_collection.nit:275 */
-    fra.me.REG[2] = NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init(fra.me.REG[1], fra.me.REG[2]);
-    CALL_standard___collection___hash_collection___HashCollection___store(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2]);
-  }
+  /* ./../lib/standard//collection//hash_collection.nit:318 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapValues___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_standard___collection___hash_collection;
+  fra.me.line = 319;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:319 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
+val_t standard___collection___hash_collection___HashMapValues___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_standard___collection___hash_collection;
+  fra.me.line = 321;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___iterator;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:321 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___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]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void standard___collection___hash_collection___HashMapValues___clear(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___collection___hash_collection;
+  fra.me.line = 323;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___clear;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:323 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___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;
   return;
 }
-void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t p1){
+void standard___collection___hash_collection___HashMapValues___remove(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_standard___collection___hash_collection;
-  fra.me.line = 279;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___remove;
+  fra.me.line = 325;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
@@ -1336,9 +1893,11 @@ void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:281 */
+  /* ./../lib/standard//collection//hash_collection.nit:327 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:328 */
   fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
-  /* ./../lib/standard//collection//hash_collection.nit:282 */
+  /* ./../lib/standard//collection//hash_collection.nit:329 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1354,7 +1913,7 @@ void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//hash_collection.nit:283 */
+      /* ./../lib/standard//collection//hash_collection.nit:330 */
       fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[2]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB0)) {
@@ -1369,22 +1928,22 @@ void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./../lib/standard//collection//hash_collection.nit:284 */
+        /* ./../lib/standard//collection//hash_collection.nit:331 */
         REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 284);
+          nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 331);
         }
         fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2]);
         CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-        /* ./../lib/standard//collection//hash_collection.nit:285 */
+        /* ./../lib/standard//collection//hash_collection.nit:332 */
         goto label1;
       }
-      /* ./../lib/standard//collection//hash_collection.nit:287 */
+      /* ./../lib/standard//collection//hash_collection.nit:334 */
       fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[3];
     } else {
-      /* ./../lib/standard//collection//hash_collection.nit:282 */
+      /* ./../lib/standard//collection//hash_collection.nit:329 */
       goto label2;
     }
   }
@@ -1393,79 +1952,107 @@ void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t
   stack_frame_head = fra.me.prev;
   return;
 }
-void standard___collection___hash_collection___HashMap___remove_at(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+void standard___collection___hash_collection___HashMapValues___remove_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_standard___collection___hash_collection;
-  fra.me.line = 291;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___remove_at;
+  fra.me.line = 338;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___remove_all;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:291 */
-  CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void standard___collection___hash_collection___HashMap___clear(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___collection___hash_collection;
-  fra.me.line = 293;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___clear;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:293 */
-  CALL_standard___collection___hash_collection___HashCollection___raz(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:340 */
+  fra.me.REG[0] = CALL_standard___collection___hash_collection___HashMapValues___map(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:341 */
+  fra.me.REG[2] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:342 */
+  while(1) {
+    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(false);
+        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)) {
+      /* ./../lib/standard//collection//hash_collection.nit:343 */
+      fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[2]);
+      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        if (UNTAG_Bool(REGB1)) {
+          REGB1 = TAG_Bool(false);
+          REGB0 = REGB1;
+        } else {
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
+          REGB0 = REGB1;
+        }
+      }
+      if (UNTAG_Bool(REGB0)) {
+        /* ./../lib/standard//collection//hash_collection.nit:344 */
+        REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2])!=NIT_NULL);
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 344);
+        }
+        fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2]);
+        CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+      }
+      /* ./../lib/standard//collection//hash_collection.nit:346 */
+      fra.me.REG[3] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[2]);
+      fra.me.REG[2] = fra.me.REG[3];
+    } else {
+      /* ./../lib/standard//collection//hash_collection.nit:342 */
+      goto label1;
+    }
+  }
+  label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
-void standard___collection___hash_collection___HashMap___init(val_t p0, int* init_table){
-  int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMap].i;
+void standard___collection___hash_collection___HashMapValues___init(val_t p0, val_t p1, int* init_table){
+  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapValues].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
-  val_t REGB0;
   val_t tmp;
-  if (init_table[itpos2]) return;
+  if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 295;
-  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMap___init;
+  fra.me.line = 0;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapValues___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:295 */
-  fra.me.REG[1] = fra.me.REG[0];
-  CALL_standard___collection___hash_collection___HashCollection___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./../lib/standard//collection//hash_collection.nit:297 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[1]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:298 */
-  REGB0 = TAG_Int(0);
-  ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[1]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:299 */
-  REGB0 = TAG_Int(0);
-  CALL_standard___collection___hash_collection___HashCollection___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB0);
+  fra.me.REG[1] = p1;
+  ATTR_standard___collection___hash_collection___HashMapValues_____atmap(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos2] = 1;
+  init_table[itpos4] = 1;
   return;
 }
 void standard___collection___hash_collection___HashMapNode___init(val_t p0, val_t p1, val_t p2, int* init_table){
-  int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapNode].i;
+  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapNode].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
-  if (init_table[itpos3]) return;
+  if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 308;
+  fra.me.line = 356;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1476,14 +2063,14 @@ void standard___collection___hash_collection___HashMapNode___init(val_t p0, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/standard//collection//hash_collection.nit:308 */
+  /* ./../lib/standard//collection//hash_collection.nit:356 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./../lib/standard//collection//hash_collection.nit:310 */
+  /* ./../lib/standard//collection//hash_collection.nit:358 */
   CALL_standard___collection___hash_collection___HashNode___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
-  /* ./../lib/standard//collection//hash_collection.nit:311 */
+  /* ./../lib/standard//collection//hash_collection.nit:359 */
   ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
-  init_table[itpos3] = 1;
+  init_table[itpos5] = 1;
   return;
 }
 val_t standard___collection___hash_collection___HashMapIterator___is_ok(val_t p0){
@@ -1493,13 +2080,13 @@ val_t standard___collection___hash_collection___HashMapIterator___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___hash_collection;
-  fra.me.line = 317;
+  fra.me.line = 365;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:317 */
+  /* ./../lib/standard//collection//hash_collection.nit:365 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapIterator____node(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1525,23 +2112,23 @@ val_t standard___collection___hash_collection___HashMapIterator___item(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 319;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:321 */
-  REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:369 */
+  REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 321);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 369);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:322 */
+  /* ./../lib/standard//collection//hash_collection.nit:370 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapIterator____node(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___hash_collection, 322);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 370);
   }
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapNode____value(fra.me.REG[0]);
   goto label1;
@@ -1555,28 +2142,28 @@ val_t standard___collection___hash_collection___HashMapIterator___key(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 331;
+  fra.me.line = 379;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapIterator___key;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:333 */
-  REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:381 */
+  REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 333);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 381);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:334 */
+  /* ./../lib/standard//collection//hash_collection.nit:382 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashMapIterator____node(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___hash_collection, 334);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 382);
   }
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 334);
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 382);
   }
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]);
   goto label1;
@@ -1590,24 +2177,24 @@ void standard___collection___hash_collection___HashMapIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 337;
+  fra.me.line = 385;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:339 */
-  REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//collection//hash_collection.nit:387 */
+  REGB0 = CALL_standard___collection___abstract_collection___MapIterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 339);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 387);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:340 */
+  /* ./../lib/standard//collection//hash_collection.nit:388 */
   fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashMapIterator____node(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___collection___hash_collection, 340);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 388);
   }
   fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[1]);
   ATTR_standard___collection___hash_collection___HashMapIterator____node(fra.me.REG[0]) = fra.me.REG[1];
@@ -1615,13 +2202,13 @@ void standard___collection___hash_collection___HashMapIterator___next(val_t p0){
   return;
 }
 void standard___collection___hash_collection___HashMapIterator___init(val_t p0, val_t p1, int* init_table){
-  int itpos4 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapIterator].i;
+  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashMapIterator].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos4]) return;
+  if (init_table[itpos6]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 349;
+  fra.me.line = 397;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashMapIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1629,15 +2216,39 @@ void standard___collection___hash_collection___HashMapIterator___init(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:351 */
+  /* ./../lib/standard//collection//hash_collection.nit:399 */
   ATTR_standard___collection___hash_collection___HashMapIterator____map(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:352 */
+  /* ./../lib/standard//collection//hash_collection.nit:400 */
   fra.me.REG[1] = CALL_standard___collection___hash_collection___HashCollection___first_item(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_standard___collection___hash_collection___HashMapIterator____node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos4] = 1;
+  init_table[itpos6] = 1;
   return;
 }
+val_t standard___collection___hash_collection___HashSet___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_standard___collection___hash_collection;
+  fra.me.line = 410;
+  fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___length;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//collection//hash_collection.nit:410 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 410);
+  }
+  REGB0 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB0;
+}
 val_t standard___collection___hash_collection___HashSet___is_empty(val_t p0){
   struct {struct stack_frame_t me;} fra;
   val_t REGB0;
@@ -1646,26 +2257,26 @@ val_t standard___collection___hash_collection___HashSet___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___hash_collection;
-  fra.me.line = 360;
+  fra.me.line = 412;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___is_empty;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:360 */
+  /* ./../lib/standard//collection//hash_collection.nit:412 */
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 360);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 412);
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./../lib/standard//collection//hash_collection.nit:360 */
+    /* ./../lib/standard//collection//hash_collection.nit:412 */
     REGB2 = REGB1;
   }
   goto label1;
@@ -1677,40 +2288,46 @@ val_t standard___collection___hash_collection___HashSet___first(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___collection___hash_collection;
-  fra.me.line = 362;
+  fra.me.line = 414;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___first;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:364 */
+  /* ./../lib/standard//collection//hash_collection.nit:416 */
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 364);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___hash_collection, 416);
   }
   REGB0 = ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[0]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//hash_collection.nit:364 */
+  /* ./../lib/standard//collection//hash_collection.nit:416 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 364);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 416);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:365 */
+  /* ./../lib/standard//collection//hash_collection.nit:417 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashCollection____first_item(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___hash_collection, 365);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 417);
   }
   REGB1 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 365);
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 417);
   }
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]);
   goto label1;
@@ -1725,7 +2342,7 @@ val_t standard___collection___hash_collection___HashSet___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___hash_collection;
-  fra.me.line = 368;
+  fra.me.line = 420;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___has;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1733,7 +2350,7 @@ val_t standard___collection___hash_collection___HashSet___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//hash_collection.nit:370 */
+  /* ./../lib/standard//collection//hash_collection.nit:422 */
   fra.me.REG[1] = CALL_standard___collection___hash_collection___HashCollection___node_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1761,7 +2378,7 @@ void standard___collection___hash_collection___HashSet___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___hash_collection;
-  fra.me.line = 373;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1770,11 +2387,11 @@ void standard___collection___hash_collection___HashSet___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//hash_collection.nit:375 */
+  /* ./../lib/standard//collection//hash_collection.nit:427 */
   REGB0 = CALL_standard___collection___hash_collection___HashCollection___index_at(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./../lib/standard//collection//hash_collection.nit:376 */
+  /* ./../lib/standard//collection//hash_collection.nit:428 */
   fra.me.REG[2] = CALL_standard___collection___hash_collection___HashCollection___node_at_idx(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
-  /* ./../lib/standard//collection//hash_collection.nit:377 */
+  /* ./../lib/standard//collection//hash_collection.nit:429 */
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -1789,10 +2406,10 @@ void standard___collection___hash_collection___HashSet___add(val_t p0, val_t p1)
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//hash_collection.nit:378 */
+    /* ./../lib/standard//collection//hash_collection.nit:430 */
     ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2]) = fra.me.REG[1];
   } else {
-    /* ./../lib/standard//collection//hash_collection.nit:380 */
+    /* ./../lib/standard//collection//hash_collection.nit:432 */
     fra.me.REG[1] = NEW_HashSetNode_standard___collection___hash_collection___HashSetNode___init(fra.me.REG[1]);
     CALL_standard___collection___hash_collection___HashCollection___store(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[1]);
   }
@@ -1804,7 +2421,7 @@ void standard___collection___hash_collection___HashSet___remove(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___hash_collection;
-  fra.me.line = 384;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1812,7 +2429,7 @@ void standard___collection___hash_collection___HashSet___remove(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:384 */
+  /* ./../lib/standard//collection//hash_collection.nit:436 */
   CALL_standard___collection___hash_collection___HashCollection___remove_node(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1822,13 +2439,13 @@ void standard___collection___hash_collection___HashSet___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 386;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:386 */
+  /* ./../lib/standard//collection//hash_collection.nit:438 */
   CALL_standard___collection___hash_collection___HashCollection___raz(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1838,13 +2455,13 @@ val_t standard___collection___hash_collection___HashSet___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 388;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:388 */
+  /* ./../lib/standard//collection//hash_collection.nit:440 */
   fra.me.REG[0] = NEW_HashSetIterator_standard___collection___hash_collection___HashSetIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -1852,44 +2469,44 @@ val_t standard___collection___hash_collection___HashSet___iterator(val_t p0){
   return fra.me.REG[0];
 }
 void standard___collection___hash_collection___HashSet___init(val_t p0, int* init_table){
-  int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSet].i;
+  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSet].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t REGB0;
   val_t tmp;
-  if (init_table[itpos5]) return;
+  if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 390;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSet___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:390 */
+  /* ./../lib/standard//collection//hash_collection.nit:442 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_standard___collection___hash_collection___HashCollection___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./../lib/standard//collection//hash_collection.nit:392 */
+  /* ./../lib/standard//collection//hash_collection.nit:444 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___hash_collection___HashCollection____capacity(fra.me.REG[1]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:393 */
+  /* ./../lib/standard//collection//hash_collection.nit:445 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___hash_collection___HashCollection____length(fra.me.REG[1]) = REGB0;
-  /* ./../lib/standard//collection//hash_collection.nit:394 */
+  /* ./../lib/standard//collection//hash_collection.nit:446 */
   REGB0 = TAG_Int(0);
   CALL_standard___collection___hash_collection___HashCollection___enlarge(fra.me.REG[1])(fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
-  init_table[itpos5] = 1;
+  init_table[itpos7] = 1;
   return;
 }
 void standard___collection___hash_collection___HashSetNode___init(val_t p0, val_t p1, int* init_table){
-  int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSetNode].i;
+  int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSetNode].i;
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
-  if (init_table[itpos6]) return;
+  if (init_table[itpos8]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 402;
+  fra.me.line = 454;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSetNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1899,14 +2516,14 @@ void standard___collection___hash_collection___HashSetNode___init(val_t p0, val_
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:402 */
+  /* ./../lib/standard//collection//hash_collection.nit:454 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
   CALL_standard___collection___hash_collection___HashNode___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
-  /* ./../lib/standard//collection//hash_collection.nit:404 */
+  /* ./../lib/standard//collection//hash_collection.nit:456 */
   ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[2]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
-  init_table[itpos6] = 1;
+  init_table[itpos8] = 1;
   return;
 }
 val_t standard___collection___hash_collection___HashSetIterator___is_ok(val_t p0){
@@ -1916,13 +2533,13 @@ val_t standard___collection___hash_collection___HashSetIterator___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___hash_collection;
-  fra.me.line = 410;
+  fra.me.line = 462;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSetIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:410 */
+  /* ./../lib/standard//collection//hash_collection.nit:462 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashSetIterator____node(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1948,28 +2565,28 @@ val_t standard___collection___hash_collection___HashSetIterator___item(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 412;
+  fra.me.line = 464;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSetIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:414 */
+  /* ./../lib/standard//collection//hash_collection.nit:466 */
   REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 414);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 466);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:415 */
+  /* ./../lib/standard//collection//hash_collection.nit:467 */
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashSetIterator____node(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___hash_collection, 415);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 467);
   }
   REGB0 = TAG_Bool(ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 415);
+    nit_abort("Uninitialized attribute %s", "_key", LOCATE_standard___collection___hash_collection, 467);
   }
   fra.me.REG[0] = ATTR_standard___collection___hash_collection___HashNode____key(fra.me.REG[0]);
   goto label1;
@@ -1983,24 +2600,24 @@ void standard___collection___hash_collection___HashSetIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 418;
+  fra.me.line = 470;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSetIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//hash_collection.nit:420 */
+  /* ./../lib/standard//collection//hash_collection.nit:472 */
   REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 420);
+    nit_abort("Assert failed", NULL, LOCATE_standard___collection___hash_collection, 472);
   }
-  /* ./../lib/standard//collection//hash_collection.nit:421 */
+  /* ./../lib/standard//collection//hash_collection.nit:473 */
   fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashSetIterator____node(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___collection___hash_collection, 421);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___hash_collection, 473);
   }
   fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashNode____next_item(fra.me.REG[1]);
   ATTR_standard___collection___hash_collection___HashSetIterator____node(fra.me.REG[0]) = fra.me.REG[1];
@@ -2008,13 +2625,13 @@ void standard___collection___hash_collection___HashSetIterator___next(val_t p0){
   return;
 }
 void standard___collection___hash_collection___HashSetIterator___init(val_t p0, val_t p1, int* init_table){
-  int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSetIterator].i;
+  int itpos9 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___collection___hash_collection___HashSetIterator].i;
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
-  if (init_table[itpos7]) return;
+  if (init_table[itpos9]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___hash_collection;
-  fra.me.line = 430;
+  fra.me.line = 482;
   fra.me.meth = LOCATE_standard___collection___hash_collection___HashSetIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2022,12 +2639,12 @@ void standard___collection___hash_collection___HashSetIterator___init(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//hash_collection.nit:432 */
+  /* ./../lib/standard//collection//hash_collection.nit:484 */
   ATTR_standard___collection___hash_collection___HashSetIterator____set(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//hash_collection.nit:433 */
+  /* ./../lib/standard//collection//hash_collection.nit:485 */
   fra.me.REG[1] = ATTR_standard___collection___hash_collection___HashCollection____first_item(fra.me.REG[1]);
   ATTR_standard___collection___hash_collection___HashSetIterator____node(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
-  init_table[itpos7] = 1;
+  init_table[itpos9] = 1;
   return;
 }
index 3c868c8..aece29b 100644 (file)
@@ -11,6 +11,10 @@ extern const classtable_elt_t VFT_standard___collection___hash_collection___Hash
 
 extern const classtable_elt_t VFT_standard___collection___hash_collection___HashMap[];
 
+extern const classtable_elt_t VFT_standard___collection___hash_collection___HashMapKeys[];
+
+extern const classtable_elt_t VFT_standard___collection___hash_collection___HashMapValues[];
+
 extern const classtable_elt_t VFT_standard___collection___hash_collection___HashMapNode[];
 
 extern const classtable_elt_t VFT_standard___collection___hash_collection___HashMapIterator[];
@@ -49,43 +53,60 @@ extern const int SFT_standard___collection___hash_collection[];
 #define ATTR_standard___collection___hash_collection___HashNode____prev_in_bucklet(recv) ATTR(recv, (SFT_standard___collection___hash_collection[6] + 3))
 #define ATTR_standard___collection___hash_collection___HashNode____next_in_bucklet(recv) ATTR(recv, (SFT_standard___collection___hash_collection[6] + 4))
 #define INIT_TABLE_POS_standard___collection___hash_collection___HashNode (SFT_standard___collection___hash_collection[7] + 0)
-#define CALL_standard___collection___hash_collection___HashNode___next_item(recv) ((standard___collection___hash_collection___HashNode___next_item_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 1)))
-#define CALL_standard___collection___hash_collection___HashNode___next_item__eq(recv) ((standard___collection___hash_collection___HashNode___next_item__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 2)))
-#define CALL_standard___collection___hash_collection___HashNode___prev_item(recv) ((standard___collection___hash_collection___HashNode___prev_item_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 3)))
-#define CALL_standard___collection___hash_collection___HashNode___prev_item__eq(recv) ((standard___collection___hash_collection___HashNode___prev_item__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 4)))
-#define CALL_standard___collection___hash_collection___HashNode___init(recv) ((standard___collection___hash_collection___HashNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 5)))
+#define VTID_standard___collection___hash_collection___HashNode___N(recv) (VAL2VFT(recv)[SFT_standard___collection___hash_collection[7] + 1].i)
+#define VTCOLOR_standard___collection___hash_collection___HashNode___N(recv) (VAL2VFT(recv)[SFT_standard___collection___hash_collection[7] + 2].i)
+#define CALL_standard___collection___hash_collection___HashNode___next_item(recv) ((standard___collection___hash_collection___HashNode___next_item_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 3)))
+#define CALL_standard___collection___hash_collection___HashNode___next_item__eq(recv) ((standard___collection___hash_collection___HashNode___next_item__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 4)))
+#define CALL_standard___collection___hash_collection___HashNode___prev_item(recv) ((standard___collection___hash_collection___HashNode___prev_item_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 5)))
+#define CALL_standard___collection___hash_collection___HashNode___prev_item__eq(recv) ((standard___collection___hash_collection___HashNode___prev_item__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 6)))
+#define CALL_standard___collection___hash_collection___HashNode___init(recv) ((standard___collection___hash_collection___HashNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[7] + 7)))
 #define ID_standard___collection___hash_collection___HashMap (SFT_standard___collection___hash_collection[8])
 #define COLOR_standard___collection___hash_collection___HashMap (SFT_standard___collection___hash_collection[9])
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashMap (SFT_standard___collection___hash_collection[10] + 0)
-#define CALL_standard___collection___hash_collection___HashMap___init(recv) ((standard___collection___hash_collection___HashMap___init_t)CALL((recv), (SFT_standard___collection___hash_collection[10] + 1)))
-#define ID_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[11])
-#define COLOR_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[12])
-#define ATTR_standard___collection___hash_collection___HashMapNode____value(recv) ATTR(recv, (SFT_standard___collection___hash_collection[13] + 0))
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[14] + 0)
-#define CALL_standard___collection___hash_collection___HashMapNode___init(recv) ((standard___collection___hash_collection___HashMapNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[14] + 1)))
-#define ID_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[15])
-#define COLOR_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[16])
-#define ATTR_standard___collection___hash_collection___HashMapIterator____map(recv) ATTR(recv, (SFT_standard___collection___hash_collection[17] + 0))
-#define ATTR_standard___collection___hash_collection___HashMapIterator____node(recv) ATTR(recv, (SFT_standard___collection___hash_collection[17] + 1))
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[18] + 0)
-#define CALL_standard___collection___hash_collection___HashMapIterator___init(recv) ((standard___collection___hash_collection___HashMapIterator___init_t)CALL((recv), (SFT_standard___collection___hash_collection[18] + 1)))
-#define ID_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[19])
-#define COLOR_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[20])
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[21] + 0)
-#define CALL_standard___collection___hash_collection___HashSet___init(recv) ((standard___collection___hash_collection___HashSet___init_t)CALL((recv), (SFT_standard___collection___hash_collection[21] + 1)))
-#define ID_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[22])
-#define COLOR_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[23])
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[24] + 0)
-#define CALL_standard___collection___hash_collection___HashSetNode___init(recv) ((standard___collection___hash_collection___HashSetNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[24] + 1)))
-#define ID_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[25])
-#define COLOR_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[26])
-#define ATTR_standard___collection___hash_collection___HashSetIterator____set(recv) ATTR(recv, (SFT_standard___collection___hash_collection[27] + 0))
-#define ATTR_standard___collection___hash_collection___HashSetIterator____node(recv) ATTR(recv, (SFT_standard___collection___hash_collection[27] + 1))
-#define INIT_TABLE_POS_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[28] + 0)
-#define CALL_standard___collection___hash_collection___HashSetIterator___init(recv) ((standard___collection___hash_collection___HashSetIterator___init_t)CALL((recv), (SFT_standard___collection___hash_collection[28] + 1)))
-static const char * const LOCATE_standard___collection___hash_collection___HashCollection___length = "hash_collection::HashCollection::(abstract_collection::Collection::length)";
-val_t standard___collection___hash_collection___HashCollection___length(val_t p0);
-typedef val_t (*standard___collection___hash_collection___HashCollection___length_t)(val_t p0);
+#define ATTR_standard___collection___hash_collection___HashMap_____atkeys(recv) ATTR(recv, (SFT_standard___collection___hash_collection[10] + 0))
+#define ATTR_standard___collection___hash_collection___HashMap_____atvalues(recv) ATTR(recv, (SFT_standard___collection___hash_collection[10] + 1))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashMap (SFT_standard___collection___hash_collection[11] + 0)
+#define CALL_standard___collection___hash_collection___HashMap___init(recv) ((standard___collection___hash_collection___HashMap___init_t)CALL((recv), (SFT_standard___collection___hash_collection[11] + 1)))
+#define CALL_standard___collection___hash_collection___HashMap___keys__eq(recv) ((standard___collection___hash_collection___HashMap___keys__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[11] + 2)))
+#define CALL_standard___collection___hash_collection___HashMap___values__eq(recv) ((standard___collection___hash_collection___HashMap___values__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[11] + 3)))
+#define ID_standard___collection___hash_collection___HashMapKeys (SFT_standard___collection___hash_collection[12])
+#define COLOR_standard___collection___hash_collection___HashMapKeys (SFT_standard___collection___hash_collection[13])
+#define ATTR_standard___collection___hash_collection___HashMapKeys_____atmap(recv) ATTR(recv, (SFT_standard___collection___hash_collection[14] + 0))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapKeys (SFT_standard___collection___hash_collection[15] + 0)
+#define CALL_standard___collection___hash_collection___HashMapKeys___map(recv) ((standard___collection___hash_collection___HashMapKeys___map_t)CALL((recv), (SFT_standard___collection___hash_collection[15] + 1)))
+#define CALL_standard___collection___hash_collection___HashMapKeys___map__eq(recv) ((standard___collection___hash_collection___HashMapKeys___map__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[15] + 2)))
+#define CALL_standard___collection___hash_collection___HashMapKeys___init(recv) ((standard___collection___hash_collection___HashMapKeys___init_t)CALL((recv), (SFT_standard___collection___hash_collection[15] + 3)))
+#define ID_standard___collection___hash_collection___HashMapValues (SFT_standard___collection___hash_collection[16])
+#define COLOR_standard___collection___hash_collection___HashMapValues (SFT_standard___collection___hash_collection[17])
+#define ATTR_standard___collection___hash_collection___HashMapValues_____atmap(recv) ATTR(recv, (SFT_standard___collection___hash_collection[18] + 0))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapValues (SFT_standard___collection___hash_collection[19] + 0)
+#define CALL_standard___collection___hash_collection___HashMapValues___map(recv) ((standard___collection___hash_collection___HashMapValues___map_t)CALL((recv), (SFT_standard___collection___hash_collection[19] + 1)))
+#define CALL_standard___collection___hash_collection___HashMapValues___map__eq(recv) ((standard___collection___hash_collection___HashMapValues___map__eq_t)CALL((recv), (SFT_standard___collection___hash_collection[19] + 2)))
+#define CALL_standard___collection___hash_collection___HashMapValues___init(recv) ((standard___collection___hash_collection___HashMapValues___init_t)CALL((recv), (SFT_standard___collection___hash_collection[19] + 3)))
+#define ID_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[20])
+#define COLOR_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[21])
+#define ATTR_standard___collection___hash_collection___HashMapNode____value(recv) ATTR(recv, (SFT_standard___collection___hash_collection[22] + 0))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapNode (SFT_standard___collection___hash_collection[23] + 0)
+#define CALL_standard___collection___hash_collection___HashMapNode___init(recv) ((standard___collection___hash_collection___HashMapNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[23] + 1)))
+#define ID_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[24])
+#define COLOR_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[25])
+#define ATTR_standard___collection___hash_collection___HashMapIterator____map(recv) ATTR(recv, (SFT_standard___collection___hash_collection[26] + 0))
+#define ATTR_standard___collection___hash_collection___HashMapIterator____node(recv) ATTR(recv, (SFT_standard___collection___hash_collection[26] + 1))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashMapIterator (SFT_standard___collection___hash_collection[27] + 0)
+#define CALL_standard___collection___hash_collection___HashMapIterator___init(recv) ((standard___collection___hash_collection___HashMapIterator___init_t)CALL((recv), (SFT_standard___collection___hash_collection[27] + 1)))
+#define ID_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[28])
+#define COLOR_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[29])
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashSet (SFT_standard___collection___hash_collection[30] + 0)
+#define CALL_standard___collection___hash_collection___HashSet___init(recv) ((standard___collection___hash_collection___HashSet___init_t)CALL((recv), (SFT_standard___collection___hash_collection[30] + 1)))
+#define ID_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[31])
+#define COLOR_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[32])
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashSetNode (SFT_standard___collection___hash_collection[33] + 0)
+#define CALL_standard___collection___hash_collection___HashSetNode___init(recv) ((standard___collection___hash_collection___HashSetNode___init_t)CALL((recv), (SFT_standard___collection___hash_collection[33] + 1)))
+#define ID_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[34])
+#define COLOR_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[35])
+#define ATTR_standard___collection___hash_collection___HashSetIterator____set(recv) ATTR(recv, (SFT_standard___collection___hash_collection[36] + 0))
+#define ATTR_standard___collection___hash_collection___HashSetIterator____node(recv) ATTR(recv, (SFT_standard___collection___hash_collection[36] + 1))
+#define INIT_TABLE_POS_standard___collection___hash_collection___HashSetIterator (SFT_standard___collection___hash_collection[37] + 0)
+#define CALL_standard___collection___hash_collection___HashSetIterator___init(recv) ((standard___collection___hash_collection___HashSetIterator___init_t)CALL((recv), (SFT_standard___collection___hash_collection[37] + 1)))
 static const char * const LOCATE_standard___collection___hash_collection___HashCollection___first_item = "hash_collection::HashCollection::first_item";
 val_t standard___collection___hash_collection___HashCollection___first_item(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashCollection___first_item_t)(val_t p0);
@@ -133,67 +154,144 @@ val_t NEW_HashNode_standard___collection___hash_collection___HashNode___init(val
 static const char * const LOCATE_standard___collection___hash_collection___HashMap_____bra = "hash_collection::HashMap::(abstract_collection::MapRead::[])";
 val_t standard___collection___hash_collection___HashMap_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___collection___hash_collection___HashMap_____bra_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___has_key = "hash_collection::HashMap::(abstract_collection::MapRead::has_key)";
-val_t standard___collection___hash_collection___HashMap___has_key(val_t p0, val_t p1);
-typedef val_t (*standard___collection___hash_collection___HashMap___has_key_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___iterator = "hash_collection::HashMap::(abstract_collection::Collection::iterator)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___iterator = "hash_collection::HashMap::(abstract_collection::MapRead::iterator)";
 val_t standard___collection___hash_collection___HashMap___iterator(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashMap___iterator_t)(val_t p0);
-typedef void (*CLOS_standard___collection___hash_collection___HashMap___iterate_0)(struct stack_frame_t *, val_t);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___iterate = "hash_collection::HashMap::(abstract_collection::Collection::iterate)";
+typedef void (*CLOS_standard___collection___hash_collection___HashMap___iterate_0)(struct stack_frame_t *, val_t, val_t);
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___iterate = "hash_collection::HashMap::(abstract_collection::MapRead::iterate)";
 void standard___collection___hash_collection___HashMap___iterate(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
 typedef void (*standard___collection___hash_collection___HashMap___iterate_t)(val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___first = "hash_collection::HashMap::(abstract_collection::Collection::first)";
-val_t standard___collection___hash_collection___HashMap___first(val_t p0);
-typedef val_t (*standard___collection___hash_collection___HashMap___first_t)(val_t p0);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___is_empty = "hash_collection::HashMap::(abstract_collection::Collection::is_empty)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___length = "hash_collection::HashMap::(abstract_collection::MapRead::length)";
+val_t standard___collection___hash_collection___HashMap___length(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMap___length_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___is_empty = "hash_collection::HashMap::(abstract_collection::MapRead::is_empty)";
 val_t standard___collection___hash_collection___HashMap___is_empty(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashMap___is_empty_t)(val_t p0);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___count = "hash_collection::HashMap::(abstract_collection::Collection::count)";
-val_t standard___collection___hash_collection___HashMap___count(val_t p0, val_t p1);
-typedef val_t (*standard___collection___hash_collection___HashMap___count_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___has = "hash_collection::HashMap::(abstract_collection::Collection::has)";
-val_t standard___collection___hash_collection___HashMap___has(val_t p0, val_t p1);
-typedef val_t (*standard___collection___hash_collection___HashMap___has_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___has_only = "hash_collection::HashMap::(abstract_collection::Collection::has_only)";
-val_t standard___collection___hash_collection___HashMap___has_only(val_t p0, val_t p1);
-typedef val_t (*standard___collection___hash_collection___HashMap___has_only_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___hash_collection___HashMap_____braeq = "hash_collection::HashMap::(abstract_collection::Map::[]=)";
 void standard___collection___hash_collection___HashMap_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___collection___hash_collection___HashMap_____braeq_t)(val_t p0, val_t p1, val_t p2);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___remove = "hash_collection::HashMap::(abstract_collection::RemovableCollection::remove)";
-void standard___collection___hash_collection___HashMap___remove(val_t p0, val_t p1);
-typedef void (*standard___collection___hash_collection___HashMap___remove_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___remove_at = "hash_collection::HashMap::(abstract_collection::Map::remove_at)";
-void standard___collection___hash_collection___HashMap___remove_at(val_t p0, val_t p1);
-typedef void (*standard___collection___hash_collection___HashMap___remove_at_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMap___clear = "hash_collection::HashMap::(abstract_collection::RemovableCollection::clear)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___clear = "hash_collection::HashMap::(abstract_collection::Map::clear)";
 void standard___collection___hash_collection___HashMap___clear(val_t p0);
 typedef void (*standard___collection___hash_collection___HashMap___clear_t)(val_t p0);
 static const char * const LOCATE_standard___collection___hash_collection___HashMap___init = "hash_collection::HashMap::init";
 void standard___collection___hash_collection___HashMap___init(val_t p0, int* init_table);
 typedef void (*standard___collection___hash_collection___HashMap___init_t)(val_t p0, int* init_table);
 val_t NEW_HashMap_standard___collection___hash_collection___HashMap___init();
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___keys = "hash_collection::HashMap::(abstract_collection::MapRead::keys)";
+val_t standard___collection___hash_collection___HashMap___keys(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMap___keys_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___keys__eq = "hash_collection::HashMap::keys=";
+void standard___collection___hash_collection___HashMap___keys__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMap___keys__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___values = "hash_collection::HashMap::(abstract_collection::MapRead::values)";
+val_t standard___collection___hash_collection___HashMap___values(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMap___values_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMap___values__eq = "hash_collection::HashMap::values=";
+void standard___collection___hash_collection___HashMap___values__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMap___values__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___map = "hash_collection::HashMapKeys::map";
+val_t standard___collection___hash_collection___HashMapKeys___map(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___map_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___map__eq = "hash_collection::HashMapKeys::map=";
+void standard___collection___hash_collection___HashMapKeys___map__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapKeys___map__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___count = "hash_collection::HashMapKeys::(abstract_collection::Collection::count)";
+val_t standard___collection___hash_collection___HashMapKeys___count(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___first = "hash_collection::HashMapKeys::(abstract_collection::Collection::first)";
+val_t standard___collection___hash_collection___HashMapKeys___first(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___first_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___has = "hash_collection::HashMapKeys::(abstract_collection::Collection::has)";
+val_t standard___collection___hash_collection___HashMapKeys___has(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___has_only = "hash_collection::HashMapKeys::(abstract_collection::Collection::has_only)";
+val_t standard___collection___hash_collection___HashMapKeys___has_only(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___is_empty = "hash_collection::HashMapKeys::(abstract_collection::Collection::is_empty)";
+val_t standard___collection___hash_collection___HashMapKeys___is_empty(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___is_empty_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___length = "hash_collection::HashMapKeys::(abstract_collection::Collection::length)";
+val_t standard___collection___hash_collection___HashMapKeys___length(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___length_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___iterator = "hash_collection::HashMapKeys::(abstract_collection::Collection::iterator)";
+val_t standard___collection___hash_collection___HashMapKeys___iterator(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapKeys___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___clear = "hash_collection::HashMapKeys::(abstract_collection::RemovableCollection::clear)";
+void standard___collection___hash_collection___HashMapKeys___clear(val_t p0);
+typedef void (*standard___collection___hash_collection___HashMapKeys___clear_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___remove = "hash_collection::HashMapKeys::(abstract_collection::RemovableCollection::remove)";
+void standard___collection___hash_collection___HashMapKeys___remove(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapKeys___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___remove_all = "hash_collection::HashMapKeys::(abstract_collection::RemovableCollection::remove_all)";
+void standard___collection___hash_collection___HashMapKeys___remove_all(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapKeys___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapKeys___init = "hash_collection::HashMapKeys::init";
+void standard___collection___hash_collection___HashMapKeys___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___hash_collection___HashMapKeys___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_HashMapKeys_standard___collection___hash_collection___HashMapKeys___init(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___map = "hash_collection::HashMapValues::map";
+val_t standard___collection___hash_collection___HashMapValues___map(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___map_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___map__eq = "hash_collection::HashMapValues::map=";
+void standard___collection___hash_collection___HashMapValues___map__eq(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapValues___map__eq_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___count = "hash_collection::HashMapValues::(abstract_collection::Collection::count)";
+val_t standard___collection___hash_collection___HashMapValues___count(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___count_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___first = "hash_collection::HashMapValues::(abstract_collection::Collection::first)";
+val_t standard___collection___hash_collection___HashMapValues___first(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___first_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___has = "hash_collection::HashMapValues::(abstract_collection::Collection::has)";
+val_t standard___collection___hash_collection___HashMapValues___has(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___has_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___has_only = "hash_collection::HashMapValues::(abstract_collection::Collection::has_only)";
+val_t standard___collection___hash_collection___HashMapValues___has_only(val_t p0, val_t p1);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___has_only_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___is_empty = "hash_collection::HashMapValues::(abstract_collection::Collection::is_empty)";
+val_t standard___collection___hash_collection___HashMapValues___is_empty(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___is_empty_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___length = "hash_collection::HashMapValues::(abstract_collection::Collection::length)";
+val_t standard___collection___hash_collection___HashMapValues___length(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___length_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___iterator = "hash_collection::HashMapValues::(abstract_collection::Collection::iterator)";
+val_t standard___collection___hash_collection___HashMapValues___iterator(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashMapValues___iterator_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___clear = "hash_collection::HashMapValues::(abstract_collection::RemovableCollection::clear)";
+void standard___collection___hash_collection___HashMapValues___clear(val_t p0);
+typedef void (*standard___collection___hash_collection___HashMapValues___clear_t)(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___remove = "hash_collection::HashMapValues::(abstract_collection::RemovableCollection::remove)";
+void standard___collection___hash_collection___HashMapValues___remove(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapValues___remove_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___remove_all = "hash_collection::HashMapValues::(abstract_collection::RemovableCollection::remove_all)";
+void standard___collection___hash_collection___HashMapValues___remove_all(val_t p0, val_t p1);
+typedef void (*standard___collection___hash_collection___HashMapValues___remove_all_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___collection___hash_collection___HashMapValues___init = "hash_collection::HashMapValues::init";
+void standard___collection___hash_collection___HashMapValues___init(val_t p0, val_t p1, int* init_table);
+typedef void (*standard___collection___hash_collection___HashMapValues___init_t)(val_t p0, val_t p1, int* init_table);
+val_t NEW_HashMapValues_standard___collection___hash_collection___HashMapValues___init(val_t p0);
 static const char * const LOCATE_standard___collection___hash_collection___HashMapNode___init = "hash_collection::HashMapNode::init";
 void standard___collection___hash_collection___HashMapNode___init(val_t p0, val_t p1, val_t p2, int* init_table);
 typedef void (*standard___collection___hash_collection___HashMapNode___init_t)(val_t p0, val_t p1, val_t p2, int* init_table);
 val_t NEW_HashMapNode_standard___collection___hash_collection___HashMapNode___init(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___is_ok = "hash_collection::HashMapIterator::(abstract_collection::Iterator::is_ok)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___is_ok = "hash_collection::HashMapIterator::(abstract_collection::MapIterator::is_ok)";
 val_t standard___collection___hash_collection___HashMapIterator___is_ok(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashMapIterator___is_ok_t)(val_t p0);
-static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___item = "hash_collection::HashMapIterator::(abstract_collection::Iterator::item)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___item = "hash_collection::HashMapIterator::(abstract_collection::MapIterator::item)";
 val_t standard___collection___hash_collection___HashMapIterator___item(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashMapIterator___item_t)(val_t p0);
 static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___key = "hash_collection::HashMapIterator::(abstract_collection::MapIterator::key)";
 val_t standard___collection___hash_collection___HashMapIterator___key(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashMapIterator___key_t)(val_t p0);
-static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___next = "hash_collection::HashMapIterator::(abstract_collection::Iterator::next)";
+static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___next = "hash_collection::HashMapIterator::(abstract_collection::MapIterator::next)";
 void standard___collection___hash_collection___HashMapIterator___next(val_t p0);
 typedef void (*standard___collection___hash_collection___HashMapIterator___next_t)(val_t p0);
 static const char * const LOCATE_standard___collection___hash_collection___HashMapIterator___init = "hash_collection::HashMapIterator::init";
 void standard___collection___hash_collection___HashMapIterator___init(val_t p0, val_t p1, int* init_table);
 typedef void (*standard___collection___hash_collection___HashMapIterator___init_t)(val_t p0, val_t p1, int* init_table);
 val_t NEW_HashMapIterator_standard___collection___hash_collection___HashMapIterator___init(val_t p0);
+static const char * const LOCATE_standard___collection___hash_collection___HashSet___length = "hash_collection::HashSet::(abstract_collection::Collection::length)";
+val_t standard___collection___hash_collection___HashSet___length(val_t p0);
+typedef val_t (*standard___collection___hash_collection___HashSet___length_t)(val_t p0);
 static const char * const LOCATE_standard___collection___hash_collection___HashSet___is_empty = "hash_collection::HashSet::(abstract_collection::Collection::is_empty)";
 val_t standard___collection___hash_collection___HashSet___is_empty(val_t p0);
 typedef val_t (*standard___collection___hash_collection___HashSet___is_empty_t)(val_t p0);
index b05cef6..8ffd558 100644 (file)
@@ -215,7 +215,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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
       /* ./../lib/standard//collection//list.nit:49 */
       REGB0 = REGB1;
@@ -411,7 +411,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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
         /* ./../lib/standard//collection//list.nit:73 */
         REGB0 = REGB1;
@@ -435,40 +435,6 @@ val_t standard___collection___list___List___count(val_t p0, val_t p1){
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
-val_t standard___collection___list___List___has_key(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___collection___list;
-  fra.me.line = 79;
-  fra.me.meth = LOCATE_standard___collection___list___List___has_key;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  REGB0 = p1;
-  /* ./../lib/standard//collection//list.nit:79 */
-  fra.me.REG[0] = CALL_standard___collection___list___List___get_node(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
-      REGB0 = REGB1;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  goto label1;
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return REGB0;
-}
 void standard___collection___list___List___push(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -476,7 +442,7 @@ void standard___collection___list___List___push(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___list;
-  fra.me.line = 83;
+  fra.me.line = 81;
   fra.me.meth = LOCATE_standard___collection___list___List___push;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -485,9 +451,9 @@ void standard___collection___list___List___push(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//list.nit:86 */
+  /* ./../lib/standard//collection//list.nit:84 */
   fra.me.REG[1] = NEW_ListNode_standard___collection___list___ListNode___init(fra.me.REG[1]);
-  /* ./../lib/standard//collection//list.nit:87 */
+  /* ./../lib/standard//collection//list.nit:85 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -502,21 +468,21 @@ void standard___collection___list___List___push(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:88 */
+    /* ./../lib/standard//collection//list.nit:86 */
     ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[1];
   } else {
-    /* ./../lib/standard//collection//list.nit:90 */
+    /* ./../lib/standard//collection//list.nit:88 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____tail(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___list, 90);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 88);
     }
     CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-    /* ./../lib/standard//collection//list.nit:91 */
+    /* ./../lib/standard//collection//list.nit:89 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
     CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./../lib/standard//collection//list.nit:93 */
+  /* ./../lib/standard//collection//list.nit:91 */
   ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -528,7 +494,7 @@ void standard___collection___list___List___unshift(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___list;
-  fra.me.line = 96;
+  fra.me.line = 94;
   fra.me.meth = LOCATE_standard___collection___list___List___unshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -537,9 +503,9 @@ void standard___collection___list___List___unshift(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//list.nit:99 */
+  /* ./../lib/standard//collection//list.nit:97 */
   fra.me.REG[1] = NEW_ListNode_standard___collection___list___ListNode___init(fra.me.REG[1]);
-  /* ./../lib/standard//collection//list.nit:100 */
+  /* ./../lib/standard//collection//list.nit:98 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -554,21 +520,21 @@ void standard___collection___list___List___unshift(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:101 */
+    /* ./../lib/standard//collection//list.nit:99 */
     ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = fra.me.REG[1];
   } else {
-    /* ./../lib/standard//collection//list.nit:103 */
+    /* ./../lib/standard//collection//list.nit:101 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
     CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    /* ./../lib/standard//collection//list.nit:104 */
+    /* ./../lib/standard//collection//list.nit:102 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____head(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___list, 104);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 102);
     }
     CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   }
-  /* ./../lib/standard//collection//list.nit:106 */
+  /* ./../lib/standard//collection//list.nit:104 */
   ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -580,7 +546,7 @@ void standard___collection___list___List___link(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___list;
-  fra.me.line = 109;
+  fra.me.line = 107;
   fra.me.meth = LOCATE_standard___collection___list___List___link;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -590,7 +556,7 @@ void standard___collection___list___List___link(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//list.nit:114 */
+  /* ./../lib/standard//collection//list.nit:112 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -605,11 +571,11 @@ void standard___collection___list___List___link(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:115 */
+    /* ./../lib/standard//collection//list.nit:113 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[1]);
     ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[2];
   } else {
-    /* ./../lib/standard//collection//list.nit:116 */
+    /* ./../lib/standard//collection//list.nit:114 */
     fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[1]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -625,33 +591,33 @@ void standard___collection___list___List___link(val_t p0, val_t p1){
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//list.nit:117 */
+      /* ./../lib/standard//collection//list.nit:115 */
       fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
       fra.me.REG[3] = ATTR_standard___collection___list___List____head(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 117);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 115);
       }
       CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      /* ./../lib/standard//collection//list.nit:118 */
+      /* ./../lib/standard//collection//list.nit:116 */
       fra.me.REG[3] = ATTR_standard___collection___list___List____tail(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___collection___list, 118);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 116);
       }
       fra.me.REG[3] = CALL_standard___collection___list___ListNode___next(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[2] = ATTR_standard___collection___list___List____tail(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___collection___list, 118);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 116);
       }
       CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
     }
   }
-  /* ./../lib/standard//collection//list.nit:120 */
+  /* ./../lib/standard//collection//list.nit:118 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[1]);
   ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/standard//collection//list.nit:121 */
+  /* ./../lib/standard//collection//list.nit:119 */
   CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[1])(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -663,7 +629,7 @@ val_t standard___collection___list___List___pop(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 126;
+  fra.me.line = 124;
   fra.me.meth = LOCATE_standard___collection___list___List___pop;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -671,22 +637,22 @@ val_t standard___collection___list___List___pop(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:129 */
+  /* ./../lib/standard//collection//list.nit:127 */
   fra.me.REG[1] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
-  /* ./../lib/standard//collection//list.nit:130 */
+  /* ./../lib/standard//collection//list.nit:128 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 130);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 128);
   }
   fra.me.REG[2] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/standard//collection//list.nit:131 */
+  /* ./../lib/standard//collection//list.nit:129 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 131);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 129);
   }
   CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-  /* ./../lib/standard//collection//list.nit:132 */
+  /* ./../lib/standard//collection//list.nit:130 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____tail(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -701,21 +667,21 @@ val_t standard___collection___list___List___pop(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:133 */
+    /* ./../lib/standard//collection//list.nit:131 */
     ATTR_standard___collection___list___List____head(fra.me.REG[0]) = NIT_NULL;
   } else {
-    /* ./../lib/standard//collection//list.nit:135 */
+    /* ./../lib/standard//collection//list.nit:133 */
     fra.me.REG[0] = ATTR_standard___collection___list___List____tail(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___list, 135);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 133);
     }
     CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
   }
-  /* ./../lib/standard//collection//list.nit:137 */
+  /* ./../lib/standard//collection//list.nit:135 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 137);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 135);
   }
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___Container___item(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
@@ -730,7 +696,7 @@ val_t standard___collection___list___List___shift(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 140;
+  fra.me.line = 138;
   fra.me.meth = LOCATE_standard___collection___list___List___shift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -738,22 +704,22 @@ val_t standard___collection___list___List___shift(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:143 */
+  /* ./../lib/standard//collection//list.nit:141 */
   fra.me.REG[1] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
-  /* ./../lib/standard//collection//list.nit:144 */
+  /* ./../lib/standard//collection//list.nit:142 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 144);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 142);
   }
   fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./../lib/standard//collection//list.nit:145 */
+  /* ./../lib/standard//collection//list.nit:143 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 145);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 143);
   }
   CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-  /* ./../lib/standard//collection//list.nit:146 */
+  /* ./../lib/standard//collection//list.nit:144 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -768,21 +734,21 @@ val_t standard___collection___list___List___shift(val_t p0){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:147 */
+    /* ./../lib/standard//collection//list.nit:145 */
     ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = NIT_NULL;
   } else {
-    /* ./../lib/standard//collection//list.nit:149 */
+    /* ./../lib/standard//collection//list.nit:147 */
     fra.me.REG[0] = ATTR_standard___collection___list___List____head(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___list, 149);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 147);
     }
     CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
   }
-  /* ./../lib/standard//collection//list.nit:151 */
+  /* ./../lib/standard//collection//list.nit:149 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 151);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 149);
   }
   fra.me.REG[1] = CALL_standard___collection___abstract_collection___Container___item(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
@@ -797,7 +763,7 @@ void standard___collection___list___List___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___list;
-  fra.me.line = 154;
+  fra.me.line = 152;
   fra.me.meth = LOCATE_standard___collection___list___List___remove;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -806,10 +772,10 @@ void standard___collection___list___List___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//list.nit:156 */
+  /* ./../lib/standard//collection//list.nit:154 */
   fra.me.REG[2] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___collection___list___List___search_node_after(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
-  /* ./../lib/standard//collection//list.nit:157 */
+  /* ./../lib/standard//collection//list.nit:155 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -836,7 +802,7 @@ void standard___collection___list___List___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___list;
-  fra.me.line = 160;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_standard___collection___list___List___remove_at;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -844,9 +810,9 @@ void standard___collection___list___List___remove_at(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//list.nit:162 */
+  /* ./../lib/standard//collection//list.nit:160 */
   fra.me.REG[1] = CALL_standard___collection___list___List___get_node(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  /* ./../lib/standard//collection//list.nit:163 */
+  /* ./../lib/standard//collection//list.nit:161 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -871,15 +837,15 @@ void standard___collection___list___List___clear(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 166;
+  fra.me.line = 164;
   fra.me.meth = LOCATE_standard___collection___list___List___clear;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:168 */
+  /* ./../lib/standard//collection//list.nit:166 */
   ATTR_standard___collection___list___List____head(fra.me.REG[0]) = NIT_NULL;
-  /* ./../lib/standard//collection//list.nit:169 */
+  /* ./../lib/standard//collection//list.nit:167 */
   ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = NIT_NULL;
   stack_frame_head = fra.me.prev;
   return;
@@ -889,13 +855,13 @@ val_t standard___collection___list___List___iterator(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 173;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_standard___collection___list___List___iterator;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:173 */
+  /* ./../lib/standard//collection//list.nit:171 */
   fra.me.REG[0] = NEW_ListIterator_standard___collection___list___ListIterator___init(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -909,7 +875,7 @@ void standard___collection___list___List___init(val_t p0, int* init_table){
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 175;
+  fra.me.line = 173;
   fra.me.meth = LOCATE_standard___collection___list___List___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -926,7 +892,7 @@ void standard___collection___list___List___from(val_t p0, val_t p1, int* init_ta
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 178;
+  fra.me.line = 176;
   fra.me.meth = LOCATE_standard___collection___list___List___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -934,7 +900,7 @@ void standard___collection___list___List___from(val_t p0, val_t p1, int* init_ta
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//list.nit:179 */
+  /* ./../lib/standard//collection//list.nit:177 */
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -948,7 +914,7 @@ val_t standard___collection___list___List___get_node(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___list;
-  fra.me.line = 187;
+  fra.me.line = 185;
   fra.me.meth = LOCATE_standard___collection___list___List___get_node;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -957,19 +923,24 @@ val_t standard___collection___list___List___get_node(val_t p0, val_t p1){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//list.nit:190 */
+  /* ./../lib/standard//collection//list.nit:188 */
   fra.me.REG[0] = ATTR_standard___collection___list___List____head(fra.me.REG[0]);
-  /* ./../lib/standard//collection//list.nit:191 */
+  /* ./../lib/standard//collection//list.nit:189 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//list.nit:191 */
+  /* ./../lib/standard//collection//list.nit:189 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//collection//list.nit:192 */
+    /* ./../lib/standard//collection//list.nit:190 */
     fra.me.REG[1] = NIT_NULL;
     goto label1;
   }
-  /* ./../lib/standard//collection//list.nit:194 */
+  /* ./../lib/standard//collection//list.nit:192 */
   while(1) {
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
@@ -986,34 +957,39 @@ val_t standard___collection___list___List___get_node(val_t p0, val_t p1){
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     } else {
-      /* ./../lib/standard//collection//list.nit:194 */
+      /* ./../lib/standard//collection//list.nit:192 */
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//list.nit:195 */
+      /* ./../lib/standard//collection//list.nit:193 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 195);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 193);
       }
       fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
-      /* ./../lib/standard//collection//list.nit:196 */
+      /* ./../lib/standard//collection//list.nit:194 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//list.nit:196 */
+      /* ./../lib/standard//collection//list.nit:194 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//list.nit:194 */
+      /* ./../lib/standard//collection//list.nit:192 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//collection//list.nit:198 */
+  /* ./../lib/standard//collection//list.nit:196 */
   fra.me.REG[1] = fra.me.REG[0];
   goto label1;
   label1: while(0);
@@ -1027,7 +1003,7 @@ val_t standard___collection___list___List___search_node_after(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___list;
-  fra.me.line = 201;
+  fra.me.line = 199;
   fra.me.meth = LOCATE_standard___collection___list___List___search_node_after;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1037,7 +1013,7 @@ val_t standard___collection___list___List___search_node_after(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./../lib/standard//collection//list.nit:205 */
+  /* ./../lib/standard//collection//list.nit:203 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1055,7 +1031,7 @@ val_t standard___collection___list___List___search_node_after(val_t p0, val_t p1
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 205);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 203);
       }
       fra.me.REG[0] = CALL_standard___collection___abstract_collection___Container___item(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[0],fra.me.REG[1]));
@@ -1078,7 +1054,7 @@ val_t standard___collection___list___List___search_node_after(val_t p0, val_t p1
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 205);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 203);
       }
       fra.me.REG[0] = CALL_standard___collection___list___ListNode___next(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[0];
@@ -1087,7 +1063,7 @@ val_t standard___collection___list___List___search_node_after(val_t p0, val_t p1
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//list.nit:206 */
+  /* ./../lib/standard//collection//list.nit:204 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -1100,7 +1076,7 @@ void standard___collection___list___List___remove_node(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___list;
-  fra.me.line = 209;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_standard___collection___list___List___remove_node;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1109,7 +1085,7 @@ void standard___collection___list___List___remove_node(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//list.nit:212 */
+  /* ./../lib/standard//collection//list.nit:210 */
   fra.me.REG[2] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1124,10 +1100,10 @@ void standard___collection___list___List___remove_node(val_t p0, val_t p1){
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:213 */
+    /* ./../lib/standard//collection//list.nit:211 */
     fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
     ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[2];
-    /* ./../lib/standard//collection//list.nit:214 */
+    /* ./../lib/standard//collection//list.nit:212 */
     fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1142,19 +1118,19 @@ void standard___collection___list___List___remove_node(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//list.nit:215 */
+      /* ./../lib/standard//collection//list.nit:213 */
       ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = NIT_NULL;
     } else {
-      /* ./../lib/standard//collection//list.nit:217 */
+      /* ./../lib/standard//collection//list.nit:215 */
       fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 217);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 215);
       }
       CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
     }
   } else {
-    /* ./../lib/standard//collection//list.nit:219 */
+    /* ./../lib/standard//collection//list.nit:217 */
     fra.me.REG[2] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -1169,31 +1145,31 @@ void standard___collection___list___List___remove_node(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//list.nit:220 */
+      /* ./../lib/standard//collection//list.nit:218 */
       fra.me.REG[2] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
       ATTR_standard___collection___list___List____tail(fra.me.REG[0]) = fra.me.REG[2];
-      /* ./../lib/standard//collection//list.nit:221 */
+      /* ./../lib/standard//collection//list.nit:219 */
       fra.me.REG[2] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 221);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 219);
       }
       CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
     } else {
-      /* ./../lib/standard//collection//list.nit:223 */
+      /* ./../lib/standard//collection//list.nit:221 */
       fra.me.REG[2] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[0] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 223);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 221);
       }
       CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-      /* ./../lib/standard//collection//list.nit:224 */
+      /* ./../lib/standard//collection//list.nit:222 */
       fra.me.REG[0] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[1] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 224);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 222);
       }
       CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
     }
@@ -1208,7 +1184,7 @@ void standard___collection___list___List___insert_before(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___list;
-  fra.me.line = 228;
+  fra.me.line = 226;
   fra.me.meth = LOCATE_standard___collection___list___List___insert_before;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1219,11 +1195,11 @@ void standard___collection___list___List___insert_before(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//list.nit:230 */
+  /* ./../lib/standard//collection//list.nit:228 */
   fra.me.REG[1] = NEW_ListNode_standard___collection___list___ListNode___init(fra.me.REG[1]);
-  /* ./../lib/standard//collection//list.nit:231 */
+  /* ./../lib/standard//collection//list.nit:229 */
   fra.me.REG[3] = CALL_standard___collection___list___ListNode___prev(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./../lib/standard//collection//list.nit:232 */
+  /* ./../lib/standard//collection//list.nit:230 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1237,21 +1213,21 @@ void standard___collection___list___List___insert_before(val_t p0, val_t p1, val
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//collection//list.nit:233 */
+    /* ./../lib/standard//collection//list.nit:231 */
     ATTR_standard___collection___list___List____head(fra.me.REG[0]) = fra.me.REG[1];
   } else {
-    /* ./../lib/standard//collection//list.nit:235 */
+    /* ./../lib/standard//collection//list.nit:233 */
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 235);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 233);
     }
     CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   }
-  /* ./../lib/standard//collection//list.nit:237 */
+  /* ./../lib/standard//collection//list.nit:235 */
   CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./../lib/standard//collection//list.nit:238 */
+  /* ./../lib/standard//collection//list.nit:236 */
   CALL_standard___collection___list___ListNode___next__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./../lib/standard//collection//list.nit:239 */
+  /* ./../lib/standard//collection//list.nit:237 */
   CALL_standard___collection___list___ListNode___prev__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1262,17 +1238,17 @@ val_t standard___collection___list___ListIterator___item(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 246;
+  fra.me.line = 244;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___item;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:246 */
+  /* ./../lib/standard//collection//list.nit:244 */
   fra.me.REG[0] = ATTR_standard___collection___list___ListIterator____node(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___list, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 244);
   }
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Container___item(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -1286,7 +1262,7 @@ void standard___collection___list___ListIterator___item__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___list;
-  fra.me.line = 248;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___item__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1294,11 +1270,11 @@ void standard___collection___list___ListIterator___item__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//list.nit:248 */
+  /* ./../lib/standard//collection//list.nit:246 */
   fra.me.REG[0] = ATTR_standard___collection___list___ListIterator____node(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___list, 248);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 246);
   }
   CALL_standard___collection___abstract_collection___Container___item__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
@@ -1311,13 +1287,13 @@ val_t standard___collection___list___ListIterator___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___list;
-  fra.me.line = 250;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___is_ok;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:250 */
+  /* ./../lib/standard//collection//list.nit:248 */
   fra.me.REG[0] = ATTR_standard___collection___list___ListIterator____node(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1344,27 +1320,27 @@ void standard___collection___list___ListIterator___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 252;
+  fra.me.line = 250;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:254 */
+  /* ./../lib/standard//collection//list.nit:252 */
   fra.me.REG[1] = ATTR_standard___collection___list___ListIterator____node(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___collection___list, 254);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___list, 252);
   }
   fra.me.REG[1] = CALL_standard___collection___list___ListNode___next(fra.me.REG[1])(fra.me.REG[1]);
   ATTR_standard___collection___list___ListIterator____node(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//list.nit:255 */
+  /* ./../lib/standard//collection//list.nit:253 */
   REGB0 = ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//list.nit:255 */
+  /* ./../lib/standard//collection//list.nit:253 */
   ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   return;
@@ -1377,7 +1353,7 @@ void standard___collection___list___ListIterator___init(val_t p0, val_t p1, int*
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 258;
+  fra.me.line = 256;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1385,12 +1361,12 @@ void standard___collection___list___ListIterator___init(val_t p0, val_t p1, int*
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//list.nit:261 */
+  /* ./../lib/standard//collection//list.nit:259 */
   ATTR_standard___collection___list___ListIterator____list(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//list.nit:262 */
+  /* ./../lib/standard//collection//list.nit:260 */
   fra.me.REG[1] = ATTR_standard___collection___list___List____head(fra.me.REG[1]);
   ATTR_standard___collection___list___ListIterator____node(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//list.nit:263 */
+  /* ./../lib/standard//collection//list.nit:261 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1403,81 +1379,87 @@ val_t standard___collection___list___ListIterator___index(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 272;
+  fra.me.line = 270;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___index;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:272 */
+  /* ./../lib/standard//collection//list.nit:270 */
   REGB0 = TAG_Bool(ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___list, 272);
+    nit_abort("Uninitialized attribute %s", "_index", LOCATE_standard___collection___list, 270);
   }
   REGB0 = ATTR_standard___collection___list___ListIterator____index(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
 void standard___collection___list___ListIterator___delete(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 275;
+  fra.me.line = 273;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___delete;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:278 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___list___ListIterator____list(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//list.nit:273 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/standard//collection//list.nit:276 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___list___ListIterator____list(fra.me.REG[1])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_list", LOCATE_standard___collection___list, 278);
+    nit_abort("Uninitialized attribute %s", "_list", LOCATE_standard___collection___list, 276);
   }
-  fra.me.REG[1] = ATTR_standard___collection___list___ListIterator____list(fra.me.REG[0]);
-  fra.me.REG[0] = ATTR_standard___collection___list___ListIterator____node(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[2] = ATTR_standard___collection___list___ListIterator____list(fra.me.REG[1]);
+  fra.me.REG[1] = ATTR_standard___collection___list___ListIterator____node(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___list, 278);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___list, 276);
   }
-  CALL_standard___collection___list___List___remove_node(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_standard___collection___list___List___remove_node(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
 void standard___collection___list___ListIterator___insert_before(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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_standard___collection___list;
-  fra.me.line = 281;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_standard___collection___list___ListIterator___insert_before;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//list.nit:284 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___list___ListIterator____list(fra.me.REG[0])!=NIT_NULL);
+  /* ./../lib/standard//collection//list.nit:279 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./../lib/standard//collection//list.nit:282 */
+  REGB0 = TAG_Bool(ATTR_standard___collection___list___ListIterator____list(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_list", LOCATE_standard___collection___list, 284);
+    nit_abort("Uninitialized attribute %s", "_list", LOCATE_standard___collection___list, 282);
   }
-  fra.me.REG[2] = ATTR_standard___collection___list___ListIterator____list(fra.me.REG[0]);
-  fra.me.REG[0] = ATTR_standard___collection___list___ListIterator____node(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[3] = ATTR_standard___collection___list___ListIterator____list(fra.me.REG[2]);
+  fra.me.REG[2] = ATTR_standard___collection___list___ListIterator____node(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_standard___collection___list, 284);
+    nit_abort("Cast failed", NULL, LOCATE_standard___collection___list, 282);
   }
-  CALL_standard___collection___list___List___insert_before(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0]);
+  CALL_standard___collection___list___List___insert_before(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1488,7 +1470,7 @@ void standard___collection___list___ListNode___init(val_t p0, val_t p1, int* ini
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 291;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_standard___collection___list___ListNode___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1498,11 +1480,11 @@ void standard___collection___list___ListNode___init(val_t p0, val_t p1, int* ini
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//collection//list.nit:291 */
+  /* ./../lib/standard//collection//list.nit:289 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
   CALL_standard___collection___abstract_collection___Container___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], init_table);
-  /* ./../lib/standard//collection//list.nit:293 */
+  /* ./../lib/standard//collection//list.nit:291 */
   CALL_standard___collection___abstract_collection___Container___item__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -1513,13 +1495,13 @@ val_t standard___collection___list___ListNode___next(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 296;
+  fra.me.line = 294;
   fra.me.meth = LOCATE_standard___collection___list___ListNode___next;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:296 */
+  /* ./../lib/standard//collection//list.nit:294 */
   fra.me.REG[0] = ATTR_standard___collection___list___ListNode____next(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1529,7 +1511,7 @@ void standard___collection___list___ListNode___next__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___list;
-  fra.me.line = 296;
+  fra.me.line = 294;
   fra.me.meth = LOCATE_standard___collection___list___ListNode___next__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1537,7 +1519,7 @@ void standard___collection___list___ListNode___next__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//list.nit:296 */
+  /* ./../lib/standard//collection//list.nit:294 */
   ATTR_standard___collection___list___ListNode____next(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1547,13 +1529,13 @@ val_t standard___collection___list___ListNode___prev(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___collection___list;
-  fra.me.line = 299;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_standard___collection___list___ListNode___prev;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//list.nit:299 */
+  /* ./../lib/standard//collection//list.nit:297 */
   fra.me.REG[0] = ATTR_standard___collection___list___ListNode____prev(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1563,7 +1545,7 @@ void standard___collection___list___ListNode___prev__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___list;
-  fra.me.line = 299;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_standard___collection___list___ListNode___prev__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1571,7 +1553,7 @@ void standard___collection___list___ListNode___prev__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//list.nit:299 */
+  /* ./../lib/standard//collection//list.nit:297 */
   ATTR_standard___collection___list___ListNode____prev(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
index 47edd86..da8498e 100644 (file)
@@ -43,10 +43,10 @@ extern const int SFT_standard___collection___list[];
 #define CALL_standard___collection___list___ListNode___next__eq(recv) ((standard___collection___list___ListNode___next__eq_t)CALL((recv), (SFT_standard___collection___list[11] + 3)))
 #define CALL_standard___collection___list___ListNode___prev(recv) ((standard___collection___list___ListNode___prev_t)CALL((recv), (SFT_standard___collection___list[11] + 4)))
 #define CALL_standard___collection___list___ListNode___prev__eq(recv) ((standard___collection___list___ListNode___prev__eq_t)CALL((recv), (SFT_standard___collection___list[11] + 5)))
-static const char * const LOCATE_standard___collection___list___List_____bra = "list::List::(abstract_collection::MapRead::[])";
+static const char * const LOCATE_standard___collection___list___List_____bra = "list::List::(abstract_collection::SequenceRead::[])";
 val_t standard___collection___list___List_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___collection___list___List_____bra_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___list___List_____braeq = "list::List::(abstract_collection::Map::[]=)";
+static const char * const LOCATE_standard___collection___list___List_____braeq = "list::List::(abstract_collection::Sequence::[]=)";
 void standard___collection___list___List_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___collection___list___List_____braeq_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_standard___collection___list___List___first = "list::List::(abstract_collection::Collection::first)";
@@ -76,9 +76,6 @@ typedef val_t (*standard___collection___list___List___has_only_t)(val_t p0, val_
 static const char * const LOCATE_standard___collection___list___List___count = "list::List::(abstract_collection::Collection::count)";
 val_t standard___collection___list___List___count(val_t p0, val_t p1);
 typedef val_t (*standard___collection___list___List___count_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___list___List___has_key = "list::List::(abstract_collection::MapRead::has_key)";
-val_t standard___collection___list___List___has_key(val_t p0, val_t p1);
-typedef val_t (*standard___collection___list___List___has_key_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___list___List___push = "list::List::(abstract_collection::Sequence::push)";
 void standard___collection___list___List___push(val_t p0, val_t p1);
 typedef void (*standard___collection___list___List___push_t)(val_t p0, val_t p1);
@@ -97,7 +94,7 @@ typedef val_t (*standard___collection___list___List___shift_t)(val_t p0);
 static const char * const LOCATE_standard___collection___list___List___remove = "list::List::(abstract_collection::RemovableCollection::remove)";
 void standard___collection___list___List___remove(val_t p0, val_t p1);
 typedef void (*standard___collection___list___List___remove_t)(val_t p0, val_t p1);
-static const char * const LOCATE_standard___collection___list___List___remove_at = "list::List::(abstract_collection::Map::remove_at)";
+static const char * const LOCATE_standard___collection___list___List___remove_at = "list::List::(abstract_collection::Sequence::remove_at)";
 void standard___collection___list___List___remove_at(val_t p0, val_t p1);
 typedef void (*standard___collection___list___List___remove_at_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___collection___list___List___clear = "list::List::(abstract_collection::RemovableCollection::clear)";
index 4823325..4b55b98 100644 (file)
@@ -265,6 +265,7 @@ val_t standard___collection___range___Range___length(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___collection___range;
@@ -291,7 +292,12 @@ val_t standard___collection___range___Range___length(val_t p0){
   REGB0 = CALL_standard___kernel___Discrete___distance(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   /* ./../lib/standard//collection//range.nit:59 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//range.nit:59 */
   if (UNTAG_Bool(REGB1)) {
index abb4ca1..5729109 100644 (file)
@@ -32,16 +32,16 @@ void standard___collection___sorter___AbstractSorter___sort(val_t p0, val_t p1){
   fra.me.REG[1] = p1;
   /* ./../lib/standard//collection//sorter.nit:30 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./../lib/standard//collection//sorter.nit:30 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
   /* ./../lib/standard//collection//sorter.nit:30 */
   CALL_standard___collection___sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB2);
@@ -53,6 +53,7 @@ void standard___collection___sorter___AbstractSorter___sub_sort(val_t p0, val_t
   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_standard___collection___sorter;
@@ -66,7 +67,12 @@ void standard___collection___sorter___AbstractSorter___sub_sort(val_t p0, val_t
   fra.me.REG[1] = p1;
   REGB0 = p2;
   REGB1 = p3;
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ./../lib/standard//collection//sorter.nit:35 */
   if (UNTAG_Bool(REGB2)) {
@@ -75,9 +81,14 @@ void standard___collection___sorter___AbstractSorter___sub_sort(val_t p0, val_t
   } else {
     /* ./../lib/standard//collection//sorter.nit:37 */
     REGB2 = TAG_Int(7);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
     /* ./../lib/standard//collection//sorter.nit:37 */
     if (UNTAG_Bool(REGB2)) {
@@ -117,41 +128,51 @@ 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:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   fra.me.REG[2] = fra.me.REG[1];
   REGB2 = REGB0;
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB4 = TAG_Bool(false);
     REGB3 = REGB4;
   }
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
   /* ./../lib/standard//collection//sorter.nit:48 */
@@ -160,57 +181,82 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
   REGB3 = REGB1;
   /* ./../lib/standard//collection//sorter.nit:50 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
     /* ./../lib/standard//collection//sorter.nit:50 */
     if (UNTAG_Bool(REGB4)) {
       /* ./../lib/standard//collection//sorter.nit:51 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:214 */
+        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:231 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB1));
         /* ./../lib/standard//collection//sorter.nit:51 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB4 = REGB2;
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB5 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB6 = TAG_Bool(false);
             REGB5 = REGB6;
           }
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label2;
           label2: while(0);
           /* ./../lib/standard//collection//sorter.nit:51 */
           REGB4 = CALL_standard___collection___sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
           REGB5 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:214 */
+          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:231 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<=UNTAG_Int(REGB5));
         } else {
           /* ./../lib/standard//collection//sorter.nit:51 */
@@ -219,7 +265,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         }
         if (UNTAG_Bool(REGB5)) {
           REGB5 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
           /* ./../lib/standard//collection//sorter.nit:51 */
           REGB2 = REGB5;
@@ -230,51 +276,71 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
       label3: while(0);
       /* ./../lib/standard//collection//sorter.nit:52 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
         /* ./../lib/standard//collection//sorter.nit:52 */
         if (UNTAG_Bool(REGB5)) {
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB5 = REGB3;
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB6 = TAG_Bool(false);
             REGB4 = REGB6;
           }
           if (UNTAG_Bool(REGB4)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB5)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label4;
           label4: while(0);
           /* ./../lib/standard//collection//sorter.nit:52 */
           REGB5 = CALL_standard___collection___sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
           REGB4 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
         } else {
           /* ./../lib/standard//collection//sorter.nit:52 */
@@ -283,7 +349,7 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         }
         if (UNTAG_Bool(REGB4)) {
           REGB4 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB4));
           /* ./../lib/standard//collection//sorter.nit:52 */
           REGB3 = REGB4;
@@ -292,88 +358,113 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
         }
       }
       label5: while(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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:234 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
       /* ./../lib/standard//collection//sorter.nit:53 */
       if (UNTAG_Bool(REGB4)) {
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[3] = fra.me.REG[1];
         REGB4 = REGB2;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB6 = TAG_Bool(false);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label6;
         label6: while(0);
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[4] = fra.me.REG[1];
         REGB4 = REGB3;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB6 = TAG_Bool(false);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB4)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label7;
         label7: while(0);
         /* ./../lib/standard//collection//sorter.nit:55 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[4]);
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[4]);
         /* ./../lib/standard//collection//sorter.nit:56 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[3]);
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[3]);
       }
     } else {
       /* ./../lib/standard//collection//sorter.nit:50 */
@@ -383,55 +474,65 @@ void standard___collection___sorter___AbstractSorter___quick_sort(val_t p0, val_
   label8: while(0);
   /* ./../lib/standard//collection//sorter.nit:59 */
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB4 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB5 = TAG_Bool(false);
     REGB4 = REGB5;
   }
   if (UNTAG_Bool(REGB4)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label9;
   label9: while(0);
   /* ./../lib/standard//collection//sorter.nit:59 */
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, fra.me.REG[3]);
+  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:60 */
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
   /* ./../lib/standard//collection//sorter.nit:60 */
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB3, fra.me.REG[2]);
+  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:61 */
   REGB3 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
   /* ./../lib/standard//collection//sorter.nit:61 */
   CALL_standard___collection___sorter___AbstractSorter___sub_sort(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], REGB0, REGB3);
@@ -466,138 +567,183 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
   REGB1 = p3;
   /* ./../lib/standard//collection//sorter.nit:69 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ./../lib/standard//collection//sorter.nit:69 */
     if (UNTAG_Bool(REGB2)) {
       /* ./../lib/standard//collection//sorter.nit:70 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[2] = fra.me.REG[1];
       REGB3 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./../lib/standard//collection//sorter.nit:72 */
       REGB3 = REGB0;
       /* ./../lib/standard//collection//sorter.nit:73 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:214 */
+        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:231 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<=UNTAG_Int(REGB1));
         /* ./../lib/standard//collection//sorter.nit:73 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[3] = fra.me.REG[1];
           REGB4 = REGB3;
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB5 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB6 = TAG_Bool(false);
             REGB5 = REGB6;
           }
           if (UNTAG_Bool(REGB5)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label2;
           label2: while(0);
           /* ./../lib/standard//collection//sorter.nit:74 */
           REGB4 = CALL_standard___collection___sorter___AbstractSorter___compare(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
           REGB5 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:217 */
+          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:234 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)>UNTAG_Int(REGB5));
           /* ./../lib/standard//collection//sorter.nit:74 */
           if (UNTAG_Bool(REGB5)) {
             /* ./../lib/standard//collection//sorter.nit:75 */
             REGB2 = REGB3;
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[3] = fra.me.REG[1];
             REGB5 = REGB3;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB4 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB6 = TAG_Bool(false);
               REGB4 = REGB6;
             }
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB5)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label3;
             label3: while(0);
             /* ./../lib/standard//collection//sorter.nit:76 */
@@ -605,7 +751,7 @@ void standard___collection___sorter___AbstractSorter___bubble_sort(val_t p0, val
           }
           /* ./../lib/standard//collection//sorter.nit:78 */
           REGB5 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
           /* ./../lib/standard//collection//sorter.nit:78 */
           REGB3 = REGB5;
@@ -619,58 +765,68 @@ 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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB5 = TAG_Bool((REGB2)==(REGB0));
         /* ./../lib/standard//collection//sorter.nit:80 */
         REGB3 = REGB5;
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[3] = fra.me.REG[1];
         REGB3 = REGB0;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB5 = REGB4;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label5;
         label5: while(0);
         /* ./../lib/standard//collection//sorter.nit:81 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[3]);
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[3]);
         /* ./../lib/standard//collection//sorter.nit:82 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB0, 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//sorter.nit:84 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
       /* ./../lib/standard//collection//sorter.nit:84 */
       REGB0 = REGB2;
index 588b4af..ac468b3 100644 (file)
@@ -10,18 +10,18 @@ val_t standard___environ___Symbol___environ(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___environ;
-  fra.me.line = 19;
+  fra.me.line = 20;
   fra.me.meth = LOCATE_standard___environ___Symbol___environ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//environ.nit:22 */
+  /* ./../lib/standard//environ.nit:24 */
   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___environ___NativeString___get_environ(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//environ.nit:24 */
+  /* ./../lib/standard//environ.nit:26 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("");
@@ -37,7 +37,7 @@ val_t standard___environ___Symbol___environ(val_t p0){
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
-  /* ./../lib/standard//environ.nit:25 */
+  /* ./../lib/standard//environ.nit:27 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -46,11 +46,11 @@ val_t standard___environ___Symbol___environ(val_t p0){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//environ.nit:26 */
+    /* ./../lib/standard//environ.nit:28 */
     fra.me.REG[0] = NEW_String_standard___string___String___from_cstring(fra.me.REG[0]);
     goto label3;
   } else {
-    /* ./../lib/standard//environ.nit:28 */
+    /* ./../lib/standard//environ.nit:30 */
     if (!once_value_4) {
       fra.me.REG[1] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
@@ -71,13 +71,13 @@ val_t standard___environ___NativeString___get_environ(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___environ;
-  fra.me.line = 34;
+  fra.me.line = 36;
   fra.me.meth = LOCATE_standard___environ___NativeString___get_environ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//environ.nit:34 */
+  /* ./../lib/standard//environ.nit:36 */
   fra.me.REG[0] = NativeString_get_environ___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
index 1e195da..1a2a85b 100644 (file)
@@ -113,7 +113,7 @@ val_t standard___exec___Process___status(val_t p0){
 }
 void standard___exec___Process___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___exec___Process].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos0]) return;
@@ -122,14 +122,16 @@ void standard___exec___Process___init(val_t p0, val_t p1, val_t p2, int* init_ta
   fra.me.line = 43;
   fra.me.meth = LOCATE_standard___exec___Process___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./../lib/standard//exec.nit:43 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -137,7 +139,7 @@ void standard___exec___Process___init(val_t p0, val_t p1, val_t p2, int* init_ta
   }
   /* ./../lib/standard//exec.nit:46 */
   REGB0 = TAG_Int(0);
-  CALL_standard___exec___Process___execute(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
+  CALL_standard___exec___Process___execute(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
   return;
@@ -172,6 +174,7 @@ void standard___exec___Process___execute(val_t p0, val_t p1, val_t p2, val_t p3,
   val_t REGB1;
   val_t REGB2;
   val_t REGB3;
+  val_t REGB4;
   val_t tmp;
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -217,52 +220,57 @@ 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, 62);
     }
-    /* ./../lib/standard//collection//array.nit:231 */
+    /* ./../lib/standard//collection//array.nit:266 */
     fra.me.REG[4] = fra.me.REG[2];
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB3)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
         /* ./../lib/standard//exec.nit:63 */
         REGB3 = TAG_Char('\0');
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], REGB3);
         /* ./../lib/standard//exec.nit:64 */
         CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB2 = REGB3;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label1;
       }
     }
@@ -272,14 +280,14 @@ 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, 66);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
     /* ./../lib/standard//exec.nit:66 */
     REGB1 = REGB2;
@@ -393,7 +401,7 @@ val_t standard___exec___IProcess___eof(val_t p0){
 }
 void standard___exec___IProcess___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___exec___IProcess].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos3]) return;
@@ -402,14 +410,16 @@ void standard___exec___IProcess___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.line = 87;
   fra.me.meth = LOCATE_standard___exec___IProcess___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./../lib/standard//exec.nit:87 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -417,17 +427,17 @@ void standard___exec___IProcess___init(val_t p0, val_t p1, val_t p2, int* init_t
   }
   /* ./../lib/standard//exec.nit:89 */
   REGB0 = TAG_Int(2);
-  CALL_standard___exec___Process___execute(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
+  CALL_standard___exec___Process___execute(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
   /* ./../lib/standard//exec.nit:90 */
-  REGB0 = TAG_Bool(ATTR_standard___exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process____data(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_data", LOCATE_standard___exec, 90);
   }
-  fra.me.REG[2] = ATTR_standard___exec___Process____data(fra.me.REG[0]);
+  fra.me.REG[2] = ATTR_standard___exec___Process____data(fra.me.REG[3]);
   REGB0 = CALL_standard___exec___NativeProcess___out_fd(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_FDIStream_standard___stream___FDIStream___init(REGB0);
-  ATTR_standard___exec___IProcess____in(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_standard___exec___IProcess____in(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
   return;
@@ -540,7 +550,7 @@ void standard___exec___OProcess___write(val_t p0, val_t p1){
 }
 void standard___exec___OProcess___init(val_t p0, val_t p1, val_t p2, int* init_table){
   int itpos5 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_standard___exec___OProcess].i;
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
   if (init_table[itpos5]) return;
@@ -549,14 +559,16 @@ void standard___exec___OProcess___init(val_t p0, val_t p1, val_t p2, int* init_t
   fra.me.line = 112;
   fra.me.meth = LOCATE_standard___exec___OProcess___init;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   /* ./../lib/standard//exec.nit:112 */
+  fra.me.REG[3] = fra.me.REG[0];
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -564,17 +576,17 @@ void standard___exec___OProcess___init(val_t p0, val_t p1, val_t p2, int* init_t
   }
   /* ./../lib/standard//exec.nit:114 */
   REGB0 = TAG_Int(1);
-  CALL_standard___exec___Process___execute(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
+  CALL_standard___exec___Process___execute(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2], REGB0, init_table);
   /* ./../lib/standard//exec.nit:115 */
-  REGB0 = TAG_Bool(ATTR_standard___exec___Process____data(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_standard___exec___Process____data(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_data", LOCATE_standard___exec, 115);
   }
-  fra.me.REG[2] = ATTR_standard___exec___Process____data(fra.me.REG[0]);
+  fra.me.REG[2] = ATTR_standard___exec___Process____data(fra.me.REG[3]);
   REGB0 = CALL_standard___exec___NativeProcess___in_fd(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_FDOStream_standard___stream___FDOStream___init(REGB0);
-  ATTR_standard___exec___OProcess____out(fra.me.REG[0]) = fra.me.REG[2];
+  ATTR_standard___exec___OProcess____out(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
   return;
@@ -798,13 +810,13 @@ val_t standard___exec___NativeProcess___id(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 166;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:166 */
+  /* ./../lib/standard//exec.nit:165 */
   REGB0 = NativeProcess_id___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -815,13 +827,13 @@ val_t standard___exec___NativeProcess___is_finished(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 167;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___is_finished;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:167 */
+  /* ./../lib/standard//exec.nit:166 */
   REGB0 = NativeProcess_is_finished___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -832,13 +844,13 @@ val_t standard___exec___NativeProcess___status(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 168;
+  fra.me.line = 167;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___status;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:168 */
+  /* ./../lib/standard//exec.nit:167 */
   REGB0 = NativeProcess_status___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -848,13 +860,13 @@ void standard___exec___NativeProcess___wait(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 169;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___wait;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:169 */
+  /* ./../lib/standard//exec.nit:168 */
   NativeProcess_wait___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
@@ -865,13 +877,13 @@ val_t standard___exec___NativeProcess___in_fd(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 171;
+  fra.me.line = 170;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___in_fd;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:171 */
+  /* ./../lib/standard//exec.nit:170 */
   REGB0 = NativeProcess_in_fd___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -882,13 +894,13 @@ val_t standard___exec___NativeProcess___out_fd(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 172;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___out_fd;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:172 */
+  /* ./../lib/standard//exec.nit:171 */
   REGB0 = NativeProcess_out_fd___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -899,13 +911,13 @@ val_t standard___exec___NativeProcess___err_fd(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___exec;
-  fra.me.line = 173;
+  fra.me.line = 172;
   fra.me.meth = LOCATE_standard___exec___NativeProcess___err_fd;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//exec.nit:173 */
+  /* ./../lib/standard//exec.nit:172 */
   REGB0 = NativeProcess_err_fd___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
index 4b23700..7003a3b 100644 (file)
@@ -1,7 +1,7 @@
 /* This C file is generated by NIT to compile module standard___file. */
 #include "standard___file._sep.h"
 void standard___file___Object___printn(val_t p0, val_t p1){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -9,21 +9,23 @@ void standard___file___Object___printn(val_t p0, val_t p1){
   fra.me.line = 25;
   fra.me.meth = LOCATE_standard___file___Object___printn;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./../lib/standard//file.nit:25 */
+  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);
   }
   /* ./../lib/standard//file.nit:28 */
-  fra.me.REG[0] = CALL_standard___file___Object___stdout(fra.me.REG[0])(fra.me.REG[0]);
+  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[0])(fra.me.REG[0], fra.me.REG[1]);
+  CALL_standard___stream___OStream___write(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -76,7 +78,7 @@ val_t standard___file___Object___getc(val_t p0){
   /* ./../lib/standard//file.nit:41 */
   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:280 */
+  /* ./../lib/standard//kernel.nit:297 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   /* ./../lib/standard//file.nit:41 */
   goto label1;
@@ -109,13 +111,13 @@ 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 = 291;
+  fra.me.line = 323;
   fra.me.meth = LOCATE_standard___file___Object___stdin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:292 */
+  /* ./../lib/standard//file.nit:324 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stdin_standard___file___Stdin___init();
     once_value_1 = fra.me.REG[0];
@@ -133,13 +135,13 @@ 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 = 294;
+  fra.me.line = 326;
   fra.me.meth = LOCATE_standard___file___Object___stdout;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:295 */
+  /* ./../lib/standard//file.nit:327 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stdout_standard___file___Stdout___init();
     once_value_1 = fra.me.REG[0];
@@ -157,13 +159,13 @@ 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 = 297;
+  fra.me.line = 329;
   fra.me.meth = LOCATE_standard___file___Object___stderr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:298 */
+  /* ./../lib/standard//file.nit:330 */
   if (!once_value_1) {
     fra.me.REG[0] = NEW_Stderr_standard___file___Stderr___init();
     once_value_1 = fra.me.REG[0];
@@ -228,32 +230,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:73 */
+  /* ./../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:74 */
+  /* ./../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, 74);
+    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] = CALL_standard___file___NativeFileCapable___io_open_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:75 */
+  /* ./../lib/standard//file.nit:77 */
   REGB0 = TAG_Bool(false);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//file.nit:76 */
+  /* ./../lib/standard//file.nit:78 */
   REGB0 = TAG_Int(0);
   ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]) = REGB0;
-  /* ./../lib/standard//file.nit:77 */
+  /* ./../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, 77);
+    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;
@@ -265,21 +267,21 @@ 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 = 80;
+  fra.me.line = 82;
   fra.me.meth = LOCATE_standard___file___IFStream___close;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:82 */
+  /* ./../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, 82);
+    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:83 */
+  /* ./../lib/standard//file.nit:85 */
   REGB0 = TAG_Bool(true);
   ATTR_standard___file___IFStream____end_reached(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -289,10 +291,11 @@ void standard___file___IFStream___fill_buffer(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} 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___file;
-  fra.me.line = 86;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_standard___file___IFStream___fill_buffer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -301,56 +304,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);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   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(true);
     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;
@@ -362,17 +370,17 @@ 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.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;
@@ -387,7 +395,7 @@ void standard___file___IFStream___open(val_t p0, val_t p1, int* init_table){
   if (init_table[itpos0]) 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 = 2;
@@ -395,21 +403,21 @@ void standard___file___IFStream___open(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;
-  /* ./../lib/standard//file.nit:104 */
-  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
   /* ./../lib/standard//file.nit:105 */
+  ATTR_standard___file___FStream____path(fra.me.REG[0]) = fra.me.REG[1];
+  /* ./../lib/standard//file.nit:106 */
   REGB0 = TAG_Int(10);
   CALL_standard___stream___BufferedIStream___prepare_buffer(fra.me.REG[0])(fra.me.REG[0], REGB0);
-  /* ./../lib/standard//file.nit:106 */
+  /* ./../lib/standard//file.nit:107 */
   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, 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] = CALL_standard___file___NativeFileCapable___io_open_read(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   ATTR_standard___file___FStream____file(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//file.nit:107 */
+  /* ./../lib/standard//file.nit:108 */
   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)) {
@@ -426,7 +434,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[itpos0] = 1;
@@ -439,7 +447,7 @@ void standard___file___IFStream___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___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;
@@ -456,7 +464,7 @@ void standard___file___IFStream___without_file(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 = 111;
+  fra.me.line = 112;
   fra.me.meth = LOCATE_standard___file___IFStream___without_file;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -472,7 +480,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;
@@ -494,11 +502,11 @@ void standard___file___OFStream___write(val_t p0, val_t p1){
   }
   /* ./../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:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:123 */
@@ -600,7 +608,7 @@ void standard___file___OFStream___write_native(val_t p0, val_t p1, val_t p2){
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB3 = TAG_Bool((REGB1)==(REGB0));
     /* ./../lib/standard//file.nit:142 */
     REGB2 = REGB3;
@@ -896,7 +904,7 @@ val_t standard___file___String___file_delete(val_t p0){
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:198 */
+  /* ./../lib/standard//file.nit:199 */
   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;
@@ -912,7 +920,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 = 200;
+  fra.me.line = 201;
   fra.me.meth = LOCATE_standard___file___String___strip_extension;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -920,31 +928,31 @@ 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:202 */
+  /* ./../lib/standard//file.nit:204 */
   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:203 */
+    /* ./../lib/standard//file.nit:205 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
     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, 23);
+      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:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./../lib/standard//file.nit:203 */
+    /* ./../lib/standard//file.nit:205 */
     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:205 */
+  /* ./../lib/standard//file.nit:207 */
   fra.me.REG[1] = fra.me.REG[0];
   goto label1;
   label1: while(0);
@@ -959,7 +967,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 = 208;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_standard___file___String___basename;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -968,36 +976,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:210 */
+  /* ./../lib/standard//file.nit:213 */
   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, 210);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 213);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//file.nit:210 */
+  /* ./../lib/standard//file.nit:213 */
   REGB2 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
-  /* ./../lib/standard//file.nit:211 */
+  /* ./../lib/standard//file.nit:214 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./../lib/standard//file.nit:212 */
+  /* ./../lib/standard//file.nit:215 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-  /* ./../lib/standard//file.nit:212 */
+  /* ./../lib/standard//file.nit:215 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//file.nit:213 */
+    /* ./../lib/standard//file.nit:216 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-    /* ./../lib/standard//file.nit:213 */
+    /* ./../lib/standard//file.nit:216 */
     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:215 */
+  /* ./../lib/standard//file.nit:218 */
   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);
@@ -1013,38 +1026,43 @@ 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 = 218;
+  fra.me.line = 221;
   fra.me.meth = LOCATE_standard___file___String___dirname;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:220 */
+  /* ./../lib/standard//file.nit:224 */
   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, 220);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___file, 224);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//file.nit:220 */
+  /* ./../lib/standard//file.nit:224 */
   REGB2 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB2);
-  /* ./../lib/standard//file.nit:221 */
+  /* ./../lib/standard//file.nit:225 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-  /* ./../lib/standard//file.nit:221 */
+  /* ./../lib/standard//file.nit:225 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//file.nit:222 */
+    /* ./../lib/standard//file.nit:226 */
     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:224 */
+    /* ./../lib/standard//file.nit:228 */
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString(".");
       REGB2 = TAG_Int(1);
@@ -1060,61 +1078,177 @@ val_t standard___file___String___dirname(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
-val_t standard___file___String___file_path(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+val_t standard___file___String___simplify_path(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
   val_t tmp;
-  static val_t once_value_2; /* Once value */
+  static val_t once_value_1; /* Once value */
+      static val_t once_value_2; /* Once value */
+      static val_t once_value_4; /* Once value */
+      static val_t once_value_5; /* Once value */
+  static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___file;
-  fra.me.line = 228;
-  fra.me.meth = LOCATE_standard___file___String___file_path;
+  fra.me.line = 232;
+  fra.me.meth = LOCATE_standard___file___String___simplify_path;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:230 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
+  /* ./../lib/standard//file.nit:247 */
+  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);
+    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:248 */
+  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 */
+  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___file, 230);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//file.nit:231 */
-  REGB1 = TAG_Char('/');
-  REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
-  REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//file.nit:231 */
-  REGB2 = CALL_standard___collection___array___AbstractArrayRead___last_index_of_from(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB2);
-  /* ./../lib/standard//file.nit:232 */
-  REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
-  REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//file.nit:232 */
-  if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//file.nit:233 */
-    REGB1 = TAG_Int(0);
-    fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB2);
-    goto label1;
+  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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 24);
+    }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:272 */
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
+      /* ./../lib/standard//file.nit:250 */
+      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);
+        once_value_2 = fra.me.REG[4];
+        register_static_object(&once_value_2);
+      } else fra.me.REG[4] = once_value_2;
+      fra.me.REG[4] = fra.me.REG[4];
+      REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        goto label3;
+      }
+      /* ./../lib/standard//file.nit:251 */
+      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);
+        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];
+      REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+        REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+      } else {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        goto label3;
+      }
+      /* ./../lib/standard//file.nit:252 */
+      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);
+        once_value_5 = fra.me.REG[4];
+        register_static_object(&once_value_5);
+      } else fra.me.REG[4] = once_value_5;
+      fra.me.REG[4] = fra.me.REG[4];
+      REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+        REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
+      } else {
+        REGB2 = TAG_Bool(false);
+        REGB1 = REGB2;
+      }
+      if (UNTAG_Bool(REGB1)) {
+        /* ./../lib/standard//file.nit:253 */
+        CALL_standard___collection___abstract_collection___Sequence___pop(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./../lib/standard//file.nit:254 */
+        goto label3;
+      }
+      /* ./../lib/standard//file.nit:256 */
+      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 */
+      REGB1 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      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 label6;
+    }
   }
-  /* ./../lib/standard//file.nit:235 */
-  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);
-    once_value_2 = fra.me.REG[1];
-    register_static_object(&once_value_2);
-  } else fra.me.REG[1] = once_value_2;
-  fra.me.REG[1] = fra.me.REG[1];
-  fra.me.REG[0] = fra.me.REG[1];
-  goto label1;
-  label1: while(0);
+  label6: while(0);
+  /* ./../lib/standard//file.nit:258 */
+  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);
+    once_value_7 = fra.me.REG[2];
+    register_static_object(&once_value_7);
+  } else fra.me.REG[2] = once_value_7;
+  fra.me.REG[2] = fra.me.REG[2];
+  fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  goto label8;
+  label8: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 void standard___file___String___mkdir(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1125,7 +1259,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 = 238;
+  fra.me.line = 261;
   fra.me.meth = LOCATE_standard___file___String___mkdir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1134,7 +1268,7 @@ 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:241 */
+  /* ./../lib/standard//file.nit:264 */
   if (!once_value_1) {
     fra.me.REG[1] = BOX_NativeString("/");
     REGB0 = TAG_Int(1);
@@ -1144,116 +1278,131 @@ void standard___file___String___mkdir(val_t p0){
   } 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:242 */
+  /* ./../lib/standard//file.nit:265 */
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./../lib/standard//file.nit:243 */
+  /* ./../lib/standard//file.nit:266 */
   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:244 */
+  /* ./../lib/standard//file.nit:267 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   fra.me.REG[2] = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label3;
   label3: while(0);
-  /* ./../lib/standard//file.nit:244 */
+  /* ./../lib/standard//file.nit:267 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 244);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___file, 267);
   }
   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:246 */
+    /* ./../lib/standard//file.nit:269 */
     REGB0 = TAG_Char('/');
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB0);
   }
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//file.nit:249 */
+      /* ./../lib/standard//file.nit:272 */
       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:250 */
+      /* ./../lib/standard//file.nit:273 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./../lib/standard//file.nit:251 */
+      /* ./../lib/standard//file.nit:274 */
       REGB1 = TAG_Char('/');
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
-      /* ./../lib/standard//file.nit:252 */
+      /* ./../lib/standard//file.nit:275 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label5;
     }
   }
@@ -1262,19 +1411,70 @@ void standard___file___String___mkdir(val_t p0){
   stack_frame_head = fra.me.prev;
   return;
 }
+val_t standard___file___String___file_extension(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___file;
+  fra.me.line = 279;
+  fra.me.meth = LOCATE_standard___file___String___file_extension;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//file.nit:282 */
+  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:283 */
+  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:233 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//file.nit:283 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//file.nit:284 */
+    REGB1 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:235 */
+    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);
+    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]);
+    /* ./../lib/standard//file.nit:284 */
+    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:286 */
+    fra.me.REG[0] = NIT_NULL;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
 val_t standard___file___NativeString___file_exists(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 = 258;
+  fra.me.line = 292;
   fra.me.meth = LOCATE_standard___file___NativeString___file_exists;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:258 */
+  /* ./../lib/standard//file.nit:292 */
   REGB0 = NativeString_file_exists___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1284,13 +1484,13 @@ 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 = 259;
+  fra.me.line = 293;
   fra.me.meth = LOCATE_standard___file___NativeString___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:259 */
+  /* ./../lib/standard//file.nit:293 */
   fra.me.REG[0] = NativeString_file_stat___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1301,13 +1501,13 @@ 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 = 260;
+  fra.me.line = 294;
   fra.me.meth = LOCATE_standard___file___NativeString___file_mkdir;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:260 */
+  /* ./../lib/standard//file.nit:294 */
   REGB0 = NativeString_file_mkdir___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1318,13 +1518,13 @@ 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 = 261;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_standard___file___NativeString___file_delete;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:261 */
+  /* ./../lib/standard//file.nit:295 */
   REGB0 = NativeString_file_delete___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1335,13 +1535,13 @@ 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 = 266;
+  fra.me.line = 299;
   fra.me.meth = LOCATE_standard___file___FileStat___mode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:266 */
+  /* ./../lib/standard//file.nit:299 */
   REGB0 = FileStat_mode___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1352,13 +1552,13 @@ 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 = 268;
+  fra.me.line = 301;
   fra.me.meth = LOCATE_standard___file___FileStat___atime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:268 */
+  /* ./../lib/standard//file.nit:301 */
   REGB0 = FileStat_atime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1369,13 +1569,13 @@ 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 = 269;
+  fra.me.line = 302;
   fra.me.meth = LOCATE_standard___file___FileStat___ctime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:269 */
+  /* ./../lib/standard//file.nit:302 */
   REGB0 = FileStat_ctime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1386,13 +1586,13 @@ 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 = 270;
+  fra.me.line = 303;
   fra.me.meth = LOCATE_standard___file___FileStat___mtime;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:270 */
+  /* ./../lib/standard//file.nit:303 */
   REGB0 = FileStat_mtime___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1403,13 +1603,13 @@ 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 = 271;
+  fra.me.line = 304;
   fra.me.meth = LOCATE_standard___file___FileStat___size;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:271 */
+  /* ./../lib/standard//file.nit:304 */
   REGB0 = FileStat_size___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1420,7 +1620,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 = 277;
+  fra.me.line = 309;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_read;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1429,7 +1629,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:277 */
+  /* ./../lib/standard//file.nit:309 */
   REGB0 = NativeFile_io_read___out(fra.me.REG[0], fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1440,7 +1640,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 = 278;
+  fra.me.line = 310;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1449,7 +1649,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:278 */
+  /* ./../lib/standard//file.nit:310 */
   REGB0 = NativeFile_io_write___out(fra.me.REG[0], fra.me.REG[1], REGB0);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1460,13 +1660,13 @@ 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 = 279;
+  fra.me.line = 311;
   fra.me.meth = LOCATE_standard___file___NativeFile___io_close;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:279 */
+  /* ./../lib/standard//file.nit:311 */
   REGB0 = NativeFile_io_close___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1476,13 +1676,13 @@ 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 = 280;
+  fra.me.line = 312;
   fra.me.meth = LOCATE_standard___file___NativeFile___file_stat;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:280 */
+  /* ./../lib/standard//file.nit:312 */
   fra.me.REG[0] = NativeFile_file_stat___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1492,7 +1692,7 @@ val_t standard___file___NativeFileCapable___io_open_read(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 = 284;
+  fra.me.line = 316;
   fra.me.meth = LOCATE_standard___file___NativeFileCapable___io_open_read;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1500,7 +1700,7 @@ val_t standard___file___NativeFileCapable___io_open_read(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:284 */
+  /* ./../lib/standard//file.nit:316 */
   fra.me.REG[1] = NativeFileCapable_io_open_read___out(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -1510,7 +1710,7 @@ val_t standard___file___NativeFileCapable___io_open_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 = 285;
+  fra.me.line = 317;
   fra.me.meth = LOCATE_standard___file___NativeFileCapable___io_open_write;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1518,7 +1718,7 @@ val_t standard___file___NativeFileCapable___io_open_write(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:285 */
+  /* ./../lib/standard//file.nit:317 */
   fra.me.REG[1] = NativeFileCapable_io_open_write___out(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -1528,13 +1728,13 @@ val_t standard___file___NativeFileCapable___native_stdin(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 = 286;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___file___NativeFileCapable___native_stdin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:286 */
+  /* ./../lib/standard//file.nit:318 */
   fra.me.REG[0] = NativeFileCapable_native_stdin___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1544,13 +1744,13 @@ val_t standard___file___NativeFileCapable___native_stdout(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 = 287;
+  fra.me.line = 319;
   fra.me.meth = LOCATE_standard___file___NativeFileCapable___native_stdout;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:287 */
+  /* ./../lib/standard//file.nit:319 */
   fra.me.REG[0] = NativeFileCapable_native_stdout___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1560,13 +1760,13 @@ val_t standard___file___NativeFileCapable___native_stderr(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 = 288;
+  fra.me.line = 320;
   fra.me.meth = LOCATE_standard___file___NativeFileCapable___native_stderr;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//file.nit:288 */
+  /* ./../lib/standard//file.nit:320 */
   fra.me.REG[0] = NativeFileCapable_native_stderr___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
index 534dfc0..6156c26 100644 (file)
@@ -79,8 +79,9 @@ extern const int SFT_standard___file[];
 #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___file_path(recv) ((standard___file___String___file_path_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] + 6)))
 #define CALL_standard___file___String___mkdir(recv) ((standard___file___String___mkdir_t)CALL((recv), (SFT_standard___file[22] + 7)))
+#define CALL_standard___file___String___file_extension(recv) ((standard___file___String___file_extension_t)CALL((recv), (SFT_standard___file[22] + 8)))
 #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)))
@@ -214,12 +215,15 @@ typedef val_t (*standard___file___String___basename_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___file___String___dirname = "file::String::dirname";
 val_t standard___file___String___dirname(val_t p0);
 typedef val_t (*standard___file___String___dirname_t)(val_t p0);
-static const char * const LOCATE_standard___file___String___file_path = "file::String::file_path";
-val_t standard___file___String___file_path(val_t p0);
-typedef val_t (*standard___file___String___file_path_t)(val_t p0);
+static const char * const LOCATE_standard___file___String___simplify_path = "file::String::simplify_path";
+val_t standard___file___String___simplify_path(val_t p0);
+typedef val_t (*standard___file___String___simplify_path_t)(val_t p0);
 static const char * const LOCATE_standard___file___String___mkdir = "file::String::mkdir";
 void standard___file___String___mkdir(val_t p0);
 typedef void (*standard___file___String___mkdir_t)(val_t p0);
+static const char * const LOCATE_standard___file___String___file_extension = "file::String::file_extension";
+val_t standard___file___String___file_extension(val_t p0);
+typedef val_t (*standard___file___String___file_extension_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);
 static const char * const LOCATE_standard___file___NativeString___file_exists = "file::NativeString::file_exists";
index 71938a3..42c9a01 100644 (file)
@@ -16,7 +16,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:222 */
+  /* ./../lib/standard//kernel.nit:239 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
   /* ./../lib/standard//hash.nit:24 */
   goto label1;
@@ -52,7 +52,7 @@ val_t standard___hash___Char___hash(val_t p0){
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:385 */
+  /* ./../lib/standard//kernel.nit:413 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   /* ./../lib/standard//hash.nit:32 */
   goto label1;
index 09c7b4f..c4cea19 100644 (file)
@@ -6,13 +6,13 @@ val_t standard___kernel___Object___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 = 26;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_standard___kernel___Object___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:26 */
+  /* ./../lib/standard//kernel.nit:28 */
   REGB0 = TAG_Int((bigint)((obj_t)fra.me.REG[0])[1].object_id);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -23,7 +23,7 @@ val_t standard___kernel___Object___is_same_type(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 = 29;
+  fra.me.line = 33;
   fra.me.meth = LOCATE_standard___kernel___Object___is_same_type;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -31,7 +31,7 @@ val_t standard___kernel___Object___is_same_type(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:29 */
+  /* ./../lib/standard//kernel.nit:33 */
   REGB0 = TAG_Bool((VAL2VFT(fra.me.REG[0])==VAL2VFT(fra.me.REG[1])));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -42,7 +42,7 @@ val_t standard___kernel___Object_____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 = 32;
+  fra.me.line = 37;
   fra.me.meth = LOCATE_standard___kernel___Object_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -50,7 +50,7 @@ val_t standard___kernel___Object_____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//kernel.nit:35 */
+  /* ./../lib/standard//kernel.nit:41 */
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[1]));
   goto label1;
   label1: while(0);
@@ -64,7 +64,7 @@ val_t standard___kernel___Object_____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 = 37;
+  fra.me.line = 43;
   fra.me.meth = LOCATE_standard___kernel___Object_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -72,7 +72,7 @@ val_t standard___kernel___Object_____neq(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:40 */
+  /* ./../lib/standard//kernel.nit:46 */
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[1]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -91,23 +91,23 @@ void standard___kernel___Object___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 = 42;
+  fra.me.line = 48;
   fra.me.meth = LOCATE_standard___kernel___Object___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:45 */
+  /* ./../lib/standard//kernel.nit:52 */
   REGB0 = TAG_Char('<');
-  /* ./../lib/standard//kernel.nit:352 */
+  /* ./../lib/standard//kernel.nit:380 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
-  /* ./../lib/standard//kernel.nit:46 */
+  /* ./../lib/standard//kernel.nit:53 */
   REGB0 = CALL_standard___kernel___Object___object_id(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:212 */
+  /* ./../lib/standard//kernel.nit:229 */
   printf("%ld\n", UNTAG_Int(REGB0));;
-  /* ./../lib/standard//kernel.nit:47 */
+  /* ./../lib/standard//kernel.nit:54 */
   REGB0 = TAG_Char('>');
-  /* ./../lib/standard//kernel.nit:352 */
+  /* ./../lib/standard//kernel.nit:380 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -117,13 +117,13 @@ void standard___kernel___Object___output_class_name(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 = 50;
+  fra.me.line = 57;
   fra.me.meth = LOCATE_standard___kernel___Object___output_class_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:50 */
+  /* ./../lib/standard//kernel.nit:57 */
   printf("%s\n", VAL2VFT(fra.me.REG[0])[2].cname);;
   stack_frame_head = fra.me.prev;
   return;
@@ -134,14 +134,14 @@ void standard___kernel___Object___exit(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 = 53;
+  fra.me.line = 61;
   fra.me.meth = LOCATE_standard___kernel___Object___exit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//kernel.nit:53 */
+  /* ./../lib/standard//kernel.nit:61 */
   exit(UNTAG_Int(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -151,13 +151,13 @@ val_t standard___kernel___Object___sys(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 = 54;
+  fra.me.line = 64;
   fra.me.meth = LOCATE_standard___kernel___Object___sys;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:54 */
+  /* ./../lib/standard//kernel.nit:64 */
   fra.me.REG[0] = (G_sys);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -167,7 +167,7 @@ void standard___kernel___Sys___main(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 = 59;
+  fra.me.line = 72;
   fra.me.meth = LOCATE_standard___kernel___Sys___main;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -192,16 +192,26 @@ void standard___kernel___Sys___init(val_t p0, int* init_table){
   return;
 }
 val_t standard___kernel___Comparable_____l(val_t p0, val_t p1){
-  struct {struct stack_frame_t me;} fra;
+  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_standard___kernel;
-  fra.me.line = 72;
+  fra.me.line = 86;
   fra.me.meth = LOCATE_standard___kernel___Comparable_____l;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 0;
-  /* ./../lib/standard//kernel.nit:72 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 72);
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:86 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 86);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -211,7 +221,7 @@ val_t standard___kernel___Comparable_____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 = 75;
+  fra.me.line = 89;
   fra.me.meth = LOCATE_standard___kernel___Comparable_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -219,7 +229,12 @@ val_t standard___kernel___Comparable_____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:76 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:91 */
   REGB0 = CALL_standard___kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   goto label1;
@@ -233,7 +248,7 @@ val_t standard___kernel___Comparable_____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 = 78;
+  fra.me.line = 93;
   fra.me.meth = LOCATE_standard___kernel___Comparable_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -241,7 +256,12 @@ val_t standard___kernel___Comparable_____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:79 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:95 */
   REGB0 = CALL_standard___kernel___Comparable_____l(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   goto label1;
@@ -255,7 +275,7 @@ val_t standard___kernel___Comparable_____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 = 81;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_standard___kernel___Comparable_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -263,7 +283,12 @@ val_t standard___kernel___Comparable_____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:82 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:98 */
   REGB0 = CALL_standard___kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -277,7 +302,7 @@ val_t standard___kernel___Comparable_____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 = 84;
+  fra.me.line = 100;
   fra.me.meth = LOCATE_standard___kernel___Comparable_____leqg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -285,25 +310,30 @@ val_t standard___kernel___Comparable_____leqg(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:87 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:104 */
   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:88 */
+    /* ./../lib/standard//kernel.nit:105 */
     REGB0 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:88 */
+    /* ./../lib/standard//kernel.nit:105 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:89 */
+    /* ./../lib/standard//kernel.nit:106 */
     REGB1 = CALL_standard___kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//kernel.nit:90 */
+      /* ./../lib/standard//kernel.nit:107 */
       REGB1 = TAG_Int(1);
       REGB0 = REGB1;
       goto label1;
     } else {
-      /* ./../lib/standard//kernel.nit:92 */
+      /* ./../lib/standard//kernel.nit:109 */
       REGB1 = TAG_Int(0);
       REGB0 = REGB1;
       goto label1;
@@ -320,7 +350,7 @@ val_t standard___kernel___Comparable___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 = 96;
+  fra.me.line = 113;
   fra.me.meth = LOCATE_standard___kernel___Comparable___is_between;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -330,7 +360,17 @@ val_t standard___kernel___Comparable___is_between(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//kernel.nit:99 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:116 */
   REGB0 = CALL_standard___kernel___Comparable_____leq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = CALL_standard___kernel___Comparable_____leq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
@@ -349,7 +389,7 @@ val_t standard___kernel___Comparable___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 = 102;
+  fra.me.line = 119;
   fra.me.meth = LOCATE_standard___kernel___Comparable___max;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -357,13 +397,18 @@ val_t standard___kernel___Comparable___max(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:105 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:122 */
   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:106 */
+    /* ./../lib/standard//kernel.nit:123 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:108 */
+    /* ./../lib/standard//kernel.nit:125 */
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   }
@@ -377,7 +422,7 @@ val_t standard___kernel___Comparable___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 = 112;
+  fra.me.line = 129;
   fra.me.meth = LOCATE_standard___kernel___Comparable___min;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -385,13 +430,18 @@ val_t standard___kernel___Comparable___min(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:115 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:132 */
   REGB0 = CALL_standard___kernel___Comparable_____l(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//kernel.nit:116 */
+    /* ./../lib/standard//kernel.nit:133 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:118 */
+    /* ./../lib/standard//kernel.nit:135 */
     fra.me.REG[1] = fra.me.REG[0];
     goto label1;
   }
@@ -405,13 +455,13 @@ val_t standard___kernel___Discrete___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 = 129;
+  fra.me.line = 146;
   fra.me.meth = LOCATE_standard___kernel___Discrete___succ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:130 */
+  /* ./../lib/standard//kernel.nit:147 */
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_standard___kernel___Discrete_____plus(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -425,13 +475,13 @@ val_t standard___kernel___Discrete___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 = 132;
+  fra.me.line = 149;
   fra.me.meth = LOCATE_standard___kernel___Discrete___prec;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:133 */
+  /* ./../lib/standard//kernel.nit:150 */
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_standard___kernel___Discrete_____minus(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -444,12 +494,12 @@ val_t standard___kernel___Discrete_____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 = 135;
+  fra.me.line = 152;
   fra.me.meth = LOCATE_standard___kernel___Discrete_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//kernel.nit:135 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 135);
+  /* ./../lib/standard//kernel.nit:152 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 152);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -458,12 +508,12 @@ val_t standard___kernel___Discrete_____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 = 138;
+  fra.me.line = 155;
   fra.me.meth = LOCATE_standard___kernel___Discrete_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./../lib/standard//kernel.nit:138 */
-  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 138);
+  /* ./../lib/standard//kernel.nit:155 */
+  nit_abort("Deferred method called", NULL, LOCATE_standard___kernel, 155);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -475,7 +525,7 @@ val_t standard___kernel___Discrete___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 = 141;
+  fra.me.line = 158;
   fra.me.meth = LOCATE_standard___kernel___Discrete___distance;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -485,49 +535,54 @@ val_t standard___kernel___Discrete___distance(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//kernel.nit:148 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+  }
+  /* ./../lib/standard//kernel.nit:165 */
   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:149 */
+    /* ./../lib/standard//kernel.nit:166 */
     fra.me.REG[2] = fra.me.REG[0];
-    /* ./../lib/standard//kernel.nit:150 */
+    /* ./../lib/standard//kernel.nit:167 */
     fra.me.REG[3] = fra.me.REG[1];
   } else {
-    /* ./../lib/standard//kernel.nit:151 */
+    /* ./../lib/standard//kernel.nit:168 */
     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:152 */
+      /* ./../lib/standard//kernel.nit:169 */
       fra.me.REG[2] = fra.me.REG[1];
-      /* ./../lib/standard//kernel.nit:153 */
+      /* ./../lib/standard//kernel.nit:170 */
       fra.me.REG[3] = fra.me.REG[0];
     } else {
-      /* ./../lib/standard//kernel.nit:155 */
+      /* ./../lib/standard//kernel.nit:172 */
       REGB0 = TAG_Int(0);
       goto label1;
     }
   }
-  /* ./../lib/standard//kernel.nit:158 */
+  /* ./../lib/standard//kernel.nit:175 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:159 */
+  /* ./../lib/standard//kernel.nit:176 */
   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:160 */
+      /* ./../lib/standard//kernel.nit:177 */
       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:161 */
+      /* ./../lib/standard//kernel.nit:178 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:161 */
+      /* ./../lib/standard//kernel.nit:178 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:159 */
+      /* ./../lib/standard//kernel.nit:176 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//kernel.nit:163 */
+  /* ./../lib/standard//kernel.nit:180 */
   REGB0 = REGB1;
   goto label1;
   label1: while(0);
@@ -540,12 +595,12 @@ 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 = 177;
+  fra.me.line = 194;
   fra.me.meth = LOCATE_standard___kernel___Bool___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:177 */
+  /* ./../lib/standard//kernel.nit:194 */
   REGB0 = TAG_Int(UNTAG_Bool(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -556,14 +611,14 @@ 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 = 178;
+  fra.me.line = 195;
   fra.me.meth = LOCATE_standard___kernel___Bool_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:178 */
+  /* ./../lib/standard//kernel.nit:195 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -574,14 +629,14 @@ 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 = 179;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_standard___kernel___Bool_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:179 */
+  /* ./../lib/standard//kernel.nit:196 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -592,12 +647,12 @@ 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 = 180;
+  fra.me.line = 197;
   fra.me.meth = LOCATE_standard___kernel___Bool___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:180 */
+  /* ./../lib/standard//kernel.nit:197 */
   (void)printf(UNTAG_Bool(REGB0)?"true\n":"false\n");;
   stack_frame_head = fra.me.prev;
   return;
@@ -608,13 +663,13 @@ 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 = 186;
+  fra.me.line = 203;
   fra.me.meth = LOCATE_standard___kernel___Float___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:186 */
+  /* ./../lib/standard//kernel.nit:203 */
   REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -624,13 +679,13 @@ 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 = 187;
+  fra.me.line = 204;
   fra.me.meth = LOCATE_standard___kernel___Float___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:187 */
+  /* ./../lib/standard//kernel.nit:204 */
   printf("%f\n", UNBOX_Float(fra.me.REG[0]));;
   stack_frame_head = fra.me.prev;
   return;
@@ -641,7 +696,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 = 189;
+  fra.me.line = 206;
   fra.me.meth = LOCATE_standard___kernel___Float_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -649,7 +704,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:189 */
+  /* ./../lib/standard//kernel.nit:206 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<=UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -660,7 +715,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 = 190;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_standard___kernel___Float_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -668,7 +723,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:190 */
+  /* ./../lib/standard//kernel.nit:207 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])<UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -679,7 +734,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 = 191;
+  fra.me.line = 208;
   fra.me.meth = LOCATE_standard___kernel___Float_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -687,7 +742,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:191 */
+  /* ./../lib/standard//kernel.nit:208 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>=UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -698,7 +753,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 = 192;
+  fra.me.line = 209;
   fra.me.meth = LOCATE_standard___kernel___Float_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -706,7 +761,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:192 */
+  /* ./../lib/standard//kernel.nit:209 */
   REGB0 = TAG_Bool(UNBOX_Float(fra.me.REG[0])>UNBOX_Float(fra.me.REG[1]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -716,7 +771,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 = 193;
+  fra.me.line = 210;
   fra.me.meth = LOCATE_standard___kernel___Float_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -724,7 +779,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:193 */
+  /* ./../lib/standard//kernel.nit:210 */
   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];
@@ -734,13 +789,13 @@ 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 = 194;
+  fra.me.line = 211;
   fra.me.meth = LOCATE_standard___kernel___Float___unary__minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:194 */
+  /* ./../lib/standard//kernel.nit:211 */
   fra.me.REG[0] = BOX_Float(-UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -750,7 +805,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 = 195;
+  fra.me.line = 212;
   fra.me.meth = LOCATE_standard___kernel___Float_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -758,7 +813,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:195 */
+  /* ./../lib/standard//kernel.nit:212 */
   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];
@@ -768,7 +823,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 = 196;
+  fra.me.line = 213;
   fra.me.meth = LOCATE_standard___kernel___Float_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -776,7 +831,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:196 */
+  /* ./../lib/standard//kernel.nit:213 */
   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];
@@ -786,7 +841,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 = 197;
+  fra.me.line = 214;
   fra.me.meth = LOCATE_standard___kernel___Float_____slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -794,7 +849,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:197 */
+  /* ./../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];
@@ -805,13 +860,13 @@ 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 = 199;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_standard___kernel___Float___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//kernel.nit:199 */
+  /* ./../lib/standard//kernel.nit:216 */
   REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -822,12 +877,12 @@ 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 = 209;
+  fra.me.line = 226;
   fra.me.meth = LOCATE_standard___kernel___Int___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:209 */
+  /* ./../lib/standard//kernel.nit:226 */
   REGB0 = REGB0;
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -838,14 +893,14 @@ 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 = 210;
+  fra.me.line = 227;
   fra.me.meth = LOCATE_standard___kernel___Int_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:210 */
+  /* ./../lib/standard//kernel.nit:227 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -856,14 +911,14 @@ 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 = 211;
+  fra.me.line = 228;
   fra.me.meth = LOCATE_standard___kernel___Int_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:211 */
+  /* ./../lib/standard//kernel.nit:228 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -874,12 +929,12 @@ 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 = 212;
+  fra.me.line = 229;
   fra.me.meth = LOCATE_standard___kernel___Int___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:212 */
+  /* ./../lib/standard//kernel.nit:229 */
   printf("%ld\n", UNTAG_Int(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -888,16 +943,22 @@ val_t standard___kernel___Int_____leq(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___kernel;
-  fra.me.line = 214;
+  fra.me.line = 231;
   fra.me.meth = LOCATE_standard___kernel___Int_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -906,16 +967,22 @@ val_t standard___kernel___Int_____l(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___kernel;
-  fra.me.line = 215;
+  fra.me.line = 232;
   fra.me.meth = LOCATE_standard___kernel___Int_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -924,16 +991,22 @@ val_t standard___kernel___Int_____geq(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___kernel;
-  fra.me.line = 216;
+  fra.me.line = 233;
   fra.me.meth = LOCATE_standard___kernel___Int_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -942,16 +1015,22 @@ val_t standard___kernel___Int_____g(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___kernel;
-  fra.me.line = 217;
+  fra.me.line = 234;
   fra.me.meth = LOCATE_standard___kernel___Int_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -963,13 +1042,13 @@ 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 = 218;
+  fra.me.line = 235;
   fra.me.meth = LOCATE_standard___kernel___Int_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -980,12 +1059,12 @@ 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 = 219;
+  fra.me.line = 236;
   fra.me.meth = LOCATE_standard___kernel___Int___unary__minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -997,13 +1076,13 @@ 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 = 220;
+  fra.me.line = 237;
   fra.me.meth = LOCATE_standard___kernel___Int_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1015,13 +1094,13 @@ 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 = 221;
+  fra.me.line = 238;
   fra.me.meth = LOCATE_standard___kernel___Int_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:221 */
+  /* ./../lib/standard//kernel.nit:238 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1033,13 +1112,13 @@ 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 = 222;
+  fra.me.line = 239;
   fra.me.meth = LOCATE_standard___kernel___Int_____slash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:222 */
+  /* ./../lib/standard//kernel.nit:239 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)/UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1051,13 +1130,13 @@ 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 = 223;
+  fra.me.line = 240;
   fra.me.meth = LOCATE_standard___kernel___Int_____percent;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:223 */
+  /* ./../lib/standard//kernel.nit:240 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)%UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1069,13 +1148,13 @@ 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 = 224;
+  fra.me.line = 241;
   fra.me.meth = LOCATE_standard___kernel___Int___lshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:224 */
+  /* ./../lib/standard//kernel.nit:241 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)<<UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1087,13 +1166,13 @@ 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 = 225;
+  fra.me.line = 242;
   fra.me.meth = LOCATE_standard___kernel___Int___rshift;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:225 */
+  /* ./../lib/standard//kernel.nit:242 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)>>UNTAG_Int(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1104,13 +1183,13 @@ 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 = 227;
+  fra.me.line = 244;
   fra.me.meth = LOCATE_standard___kernel___Int___to_f;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:227 */
+  /* ./../lib/standard//kernel.nit:244 */
   fra.me.REG[0] = BOX_Float((float)UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1121,12 +1200,12 @@ 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 = 230;
+  fra.me.line = 247;
   fra.me.meth = LOCATE_standard___kernel___Int___succ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:230 */
+  /* ./../lib/standard//kernel.nit:247 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)+1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1137,12 +1216,12 @@ 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 = 231;
+  fra.me.line = 248;
   fra.me.meth = LOCATE_standard___kernel___Int___prec;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:231 */
+  /* ./../lib/standard//kernel.nit:248 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)-1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1151,30 +1230,41 @@ val_t standard___kernel___Int___distance(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___kernel;
-  fra.me.line = 232;
+  fra.me.line = 249;
   fra.me.meth = LOCATE_standard___kernel___Int___distance;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:220 */
+  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 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:235 */
+  /* ./../lib/standard//kernel.nit:252 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ./../lib/standard//kernel.nit:235 */
+  /* ./../lib/standard//kernel.nit:252 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//kernel.nit:236 */
+    /* ./../lib/standard//kernel.nit:253 */
     REGB0 = REGB1;
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:238 */
+    /* ./../lib/standard//kernel.nit:255 */
     REGB0 = REGB1;
     goto label1;
   }
@@ -1187,36 +1277,52 @@ val_t standard___kernel___Int_____leqg(val_t p0, val_t p1){
   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_standard___kernel;
-  fra.me.line = 242;
+  fra.me.line = 259;
   fra.me.meth = LOCATE_standard___kernel___Int_____leqg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:215 */
+  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);
+  }
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:244 */
+  /* ./../lib/standard//kernel.nit:261 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:245 */
+    /* ./../lib/standard//kernel.nit:262 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:245 */
+    /* ./../lib/standard//kernel.nit:262 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:246 */
+    /* ./../lib/standard//kernel.nit:263 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//kernel.nit:247 */
+      /* ./../lib/standard//kernel.nit:264 */
       REGB0 = TAG_Int(1);
       REGB2 = REGB0;
       goto label1;
     } else {
-      /* ./../lib/standard//kernel.nit:249 */
+      /* ./../lib/standard//kernel.nit:266 */
       REGB0 = TAG_Int(0);
       REGB2 = REGB0;
       goto label1;
@@ -1231,33 +1337,54 @@ val_t standard___kernel___Int___is_between(val_t p0, val_t p1, val_t p2){
   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_standard___kernel;
-  fra.me.line = 253;
+  fra.me.line = 270;
   fra.me.meth = LOCATE_standard___kernel___Int___is_between;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
   REGB2 = p2;
-  /* ./../lib/standard//kernel.nit:215 */
+  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);
+  }
+  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);
+  }
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:255 */
+  /* ./../lib/standard//kernel.nit:272 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:255 */
+    /* ./../lib/standard//kernel.nit:272 */
     REGB1 = REGB0;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//kernel.nit:256 */
+    /* ./../lib/standard//kernel.nit:273 */
     REGB1 = TAG_Bool(false);
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:258 */
+    /* ./../lib/standard//kernel.nit:275 */
     REGB0 = TAG_Bool(true);
     REGB1 = REGB0;
     goto label1;
@@ -1274,20 +1401,30 @@ 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 = 262;
+  fra.me.line = 279;
   fra.me.meth = LOCATE_standard___kernel___Int___max;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:215 */
+  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);
+  }
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:264 */
+  /* ./../lib/standard//kernel.nit:281 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:265 */
+    /* ./../lib/standard//kernel.nit:282 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:267 */
+    /* ./../lib/standard//kernel.nit:284 */
     REGB1 = REGB0;
     goto label1;
   }
@@ -1303,20 +1440,30 @@ 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 = 271;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_standard___kernel___Int___min;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:215 */
+  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);
+  }
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-  /* ./../lib/standard//kernel.nit:273 */
+  /* ./../lib/standard//kernel.nit:290 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:274 */
+    /* ./../lib/standard//kernel.nit:291 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:276 */
+    /* ./../lib/standard//kernel.nit:293 */
     REGB1 = REGB0;
     goto label1;
   }
@@ -1330,12 +1477,12 @@ 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 = 280;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_standard___kernel___Int___ascii;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:280 */
+  /* ./../lib/standard//kernel.nit:297 */
   REGB0 = TAG_Char(UNTAG_Int(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1351,69 +1498,79 @@ val_t standard___kernel___Int___digit_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___kernel;
-  fra.me.line = 283;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_standard___kernel___Int___digit_count;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:289 */
+  /* ./../lib/standard//kernel.nit:306 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ./../lib/standard//kernel.nit:289 */
+  /* ./../lib/standard//kernel.nit:306 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:290 */
+    /* ./../lib/standard//kernel.nit:307 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB3 = TAG_Int(-UNTAG_Int(REGB0));
   } else {
-    /* ./../lib/standard//kernel.nit:292 */
+    /* ./../lib/standard//kernel.nit:309 */
     REGB4 = TAG_Int(0);
     REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
     if (UNTAG_Bool(REGB5)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB4 = TAG_Bool((REGB0)==(REGB4));
-      /* ./../lib/standard//kernel.nit:292 */
+      /* ./../lib/standard//kernel.nit:309 */
       REGB5 = REGB4;
     }
     if (UNTAG_Bool(REGB5)) {
-      /* ./../lib/standard//kernel.nit:293 */
+      /* ./../lib/standard//kernel.nit:310 */
       REGB5 = TAG_Int(1);
       goto label1;
     } else {
-      /* ./../lib/standard//kernel.nit:295 */
+      /* ./../lib/standard//kernel.nit:312 */
       REGB4 = TAG_Int(0);
       REGB2 = REGB4;
-      /* ./../lib/standard//kernel.nit:296 */
+      /* ./../lib/standard//kernel.nit:313 */
       REGB3 = REGB0;
     }
   }
-  /* ./../lib/standard//kernel.nit:299 */
+  /* ./../lib/standard//kernel.nit:316 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:299 */
+    /* ./../lib/standard//kernel.nit:316 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//kernel.nit:300 */
+      /* ./../lib/standard//kernel.nit:317 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:300 */
+      /* ./../lib/standard//kernel.nit:317 */
       REGB2 = REGB0;
-      /* ./../lib/standard//kernel.nit:222 */
+      /* ./../lib/standard//kernel.nit:239 */
       REGB0 = TAG_Int(UNTAG_Int(REGB3)/UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:301 */
+      /* ./../lib/standard//kernel.nit:318 */
       REGB3 = REGB0;
     } else {
-      /* ./../lib/standard//kernel.nit:299 */
+      /* ./../lib/standard//kernel.nit:316 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//kernel.nit:303 */
+  /* ./../lib/standard//kernel.nit:320 */
   REGB5 = REGB2;
   goto label1;
   label1: while(0);
@@ -1429,59 +1586,74 @@ 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 = 306;
+  fra.me.line = 323;
   fra.me.meth = LOCATE_standard___kernel___Int___to_c;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:311 */
+  /* ./../lib/standard//kernel.nit:328 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:311 */
+  /* ./../lib/standard//kernel.nit:328 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Int(36);
-    /* ./../lib/standard//kernel.nit:214 */
+    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:231 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//kernel.nit:311 */
+    /* ./../lib/standard//kernel.nit:328 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___kernel, 311);
+    nit_abort("Assert failed", NULL, LOCATE_standard___kernel, 328);
   }
-  /* ./../lib/standard//kernel.nit:312 */
+  /* ./../lib/standard//kernel.nit:329 */
   REGB1 = TAG_Int(10);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:312 */
+  /* ./../lib/standard//kernel.nit:329 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//kernel.nit:313 */
+    /* ./../lib/standard//kernel.nit:330 */
     REGB1 = TAG_Char('0');
-    /* ./../lib/standard//kernel.nit:385 */
+    /* ./../lib/standard//kernel.nit:413 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:280 */
+    /* ./../lib/standard//kernel.nit:297 */
     REGB1 = TAG_Char(UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:313 */
+    /* ./../lib/standard//kernel.nit:330 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:315 */
+    /* ./../lib/standard//kernel.nit:332 */
     REGB2 = TAG_Char('a');
-    /* ./../lib/standard//kernel.nit:385 */
+    /* ./../lib/standard//kernel.nit:413 */
     REGB2 = TAG_Int((unsigned char)UNTAG_Char(REGB2));
-    /* ./../lib/standard//kernel.nit:315 */
+    /* ./../lib/standard//kernel.nit:332 */
     REGB3 = TAG_Int(10);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:280 */
+    /* ./../lib/standard//kernel.nit:297 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:315 */
+    /* ./../lib/standard//kernel.nit:332 */
     REGB1 = REGB3;
     goto label1;
   }
@@ -1498,7 +1670,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 = 319;
+  fra.me.line = 336;
   fra.me.meth = LOCATE_standard___kernel___Int___enumerate_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1507,25 +1679,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:324 */
+  /* ./../lib/standard//kernel.nit:341 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:214 */
+    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:231 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:324 */
+    /* ./../lib/standard//kernel.nit:341 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//kernel.nit:325 */
+      /* ./../lib/standard//kernel.nit:342 */
       ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:326 */
+      /* ./../lib/standard//kernel.nit:343 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:326 */
+      /* ./../lib/standard//kernel.nit:343 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:324 */
+      /* ./../lib/standard//kernel.nit:341 */
       goto label2;
     }
   }
@@ -1543,7 +1720,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 = 330;
+  fra.me.line = 347;
   fra.me.meth = LOCATE_standard___kernel___Int___enumerate_before;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
@@ -1552,25 +1729,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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//kernel.nit:336 */
+      /* ./../lib/standard//kernel.nit:353 */
       ((void (*)(struct stack_frame_t *, val_t))(CREG[0]))(closctx_param, REGB0);
       if (closctx_param->has_broke) {
         goto label1;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -1579,18 +1761,60 @@ void standard___kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack
   stack_frame_head = fra.me.prev;
   return;
 }
+val_t standard___kernel___Int___abs(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___kernel;
+  fra.me.line = 358;
+  fra.me.meth = LOCATE_standard___kernel___Int___abs;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 0;
+  REGB0 = p0;
+  /* ./../lib/standard//kernel.nit:361 */
+  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:233 */
+  REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+  /* ./../lib/standard//kernel.nit:361 */
+  if (UNTAG_Bool(REGB1)) {
+    /* ./../lib/standard//kernel.nit:363 */
+    REGB1 = REGB0;
+    goto label1;
+  } else {
+    /* ./../lib/standard//kernel.nit:365 */
+    REGB2 = TAG_Int(1);
+    /* ./../lib/standard//kernel.nit:236 */
+    REGB2 = TAG_Int(-UNTAG_Int(REGB2));
+    /* ./../lib/standard//kernel.nit:238 */
+    REGB0 = TAG_Int(UNTAG_Int(REGB2)*UNTAG_Int(REGB0));
+    /* ./../lib/standard//kernel.nit:365 */
+    REGB1 = REGB0;
+    goto label1;
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return REGB1;
+}
 val_t standard___kernel___Char___object_id(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___kernel;
-  fra.me.line = 349;
+  fra.me.line = 377;
   fra.me.meth = LOCATE_standard___kernel___Char___object_id;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:349 */
+  /* ./../lib/standard//kernel.nit:377 */
   REGB0 = TAG_Int(UNTAG_Char(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1601,14 +1825,14 @@ 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 = 350;
+  fra.me.line = 378;
   fra.me.meth = LOCATE_standard___kernel___Char_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:350 */
+  /* ./../lib/standard//kernel.nit:378 */
   REGB0 = TAG_Bool((REGB0)==(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1619,14 +1843,14 @@ 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 = 351;
+  fra.me.line = 379;
   fra.me.meth = LOCATE_standard___kernel___Char_____neq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
   fra.me.REG[0] = p1;
-  /* ./../lib/standard//kernel.nit:351 */
+  /* ./../lib/standard//kernel.nit:379 */
   REGB0 = TAG_Bool((REGB0)!=(fra.me.REG[0]));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1637,12 +1861,12 @@ 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 = 352;
+  fra.me.line = 380;
   fra.me.meth = LOCATE_standard___kernel___Char___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:352 */
+  /* ./../lib/standard//kernel.nit:380 */
   printf("%c", (unsigned char)UNTAG_Char(REGB0));;
   stack_frame_head = fra.me.prev;
   return;
@@ -1651,16 +1875,22 @@ val_t standard___kernel___Char_____leq(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___kernel;
-  fra.me.line = 354;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_standard___kernel___Char_____leq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:354 */
+  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:382 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1669,16 +1899,22 @@ val_t standard___kernel___Char_____l(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___kernel;
-  fra.me.line = 355;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_standard___kernel___Char_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:355 */
+  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:383 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)<UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1687,16 +1923,22 @@ val_t standard___kernel___Char_____geq(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___kernel;
-  fra.me.line = 356;
+  fra.me.line = 384;
   fra.me.meth = LOCATE_standard___kernel___Char_____geq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:356 */
+  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:384 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1705,16 +1947,22 @@ val_t standard___kernel___Char_____g(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___kernel;
-  fra.me.line = 357;
+  fra.me.line = 385;
   fra.me.meth = LOCATE_standard___kernel___Char_____g;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:357 */
+  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:385 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1725,12 +1973,12 @@ 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 = 359;
+  fra.me.line = 387;
   fra.me.meth = LOCATE_standard___kernel___Char___succ;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:359 */
+  /* ./../lib/standard//kernel.nit:387 */
   REGB0 = TAG_Char(UNTAG_Char(REGB0)+1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1741,12 +1989,12 @@ 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 = 360;
+  fra.me.line = 388;
   fra.me.meth = LOCATE_standard___kernel___Char___prec;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:360 */
+  /* ./../lib/standard//kernel.nit:388 */
   REGB0 = TAG_Char(UNTAG_Char(REGB0)-1);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1755,33 +2003,44 @@ val_t standard___kernel___Char___distance(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___kernel;
-  fra.me.line = 362;
+  fra.me.line = 390;
   fra.me.meth = LOCATE_standard___kernel___Char___distance;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:385 */
+  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:413 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//kernel.nit:365 */
+  /* ./../lib/standard//kernel.nit:393 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ./../lib/standard//kernel.nit:365 */
+  /* ./../lib/standard//kernel.nit:393 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//kernel.nit:366 */
+    /* ./../lib/standard//kernel.nit:394 */
     REGB0 = REGB1;
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:368 */
+    /* ./../lib/standard//kernel.nit:396 */
     REGB0 = REGB1;
     goto label1;
   }
@@ -1798,59 +2057,59 @@ 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 = 372;
+  fra.me.line = 400;
   fra.me.meth = LOCATE_standard___kernel___Char___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:376 */
+  /* ./../lib/standard//kernel.nit:404 */
   REGB1 = TAG_Char('-');
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:350 */
+    /* ./../lib/standard//kernel.nit:378 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./../lib/standard//kernel.nit:376 */
+    /* ./../lib/standard//kernel.nit:404 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:377 */
+    /* ./../lib/standard//kernel.nit:405 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:377 */
+    /* ./../lib/standard//kernel.nit:405 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:378 */
+    /* ./../lib/standard//kernel.nit:406 */
     REGB1 = CALL_standard___kernel___Char___is_digit(REGB0)(REGB0);
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-      /* ./../lib/standard//kernel.nit:379 */
+      /* ./../lib/standard//kernel.nit:407 */
       REGB3 = TAG_Char('0');
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:379 */
+      /* ./../lib/standard//kernel.nit:407 */
       REGB2 = REGB3;
       goto label1;
     } else {
-      /* ./../lib/standard//kernel.nit:381 */
+      /* ./../lib/standard//kernel.nit:409 */
       REGB0 = CALL_standard___kernel___Char___to_lower(REGB0)(REGB0);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-      /* ./../lib/standard//kernel.nit:381 */
+      /* ./../lib/standard//kernel.nit:409 */
       REGB3 = TAG_Char('a');
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ./../lib/standard//kernel.nit:381 */
+      /* ./../lib/standard//kernel.nit:409 */
       REGB1 = TAG_Int(10);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:381 */
+      /* ./../lib/standard//kernel.nit:409 */
       REGB2 = REGB1;
       goto label1;
     }
@@ -1865,12 +2124,12 @@ 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 = 385;
+  fra.me.line = 413;
   fra.me.meth = LOCATE_standard___kernel___Char___ascii;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:385 */
+  /* ./../lib/standard//kernel.nit:413 */
   REGB0 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -1882,13 +2141,13 @@ 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 = 388;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_standard___kernel___Char_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:388 */
+  /* ./../lib/standard//kernel.nit:416 */
   REGB1 = TAG_Char(UNTAG_Char(REGB0)+UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1900,13 +2159,13 @@ 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 = 389;
+  fra.me.line = 417;
   fra.me.meth = LOCATE_standard___kernel___Char_____minus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
   REGB1 = p1;
-  /* ./../lib/standard//kernel.nit:389 */
+  /* ./../lib/standard//kernel.nit:417 */
   REGB1 = TAG_Char(UNTAG_Char(REGB0)-UNTAG_Char(REGB1));
   stack_frame_head = fra.me.prev;
   return REGB1;
@@ -1920,28 +2179,28 @@ 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 = 391;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_standard___kernel___Char___to_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:394 */
+  /* ./../lib/standard//kernel.nit:423 */
   REGB1 = CALL_standard___kernel___Char___is_upper(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//kernel.nit:385 */
+    /* ./../lib/standard//kernel.nit:413 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-    /* ./../lib/standard//kernel.nit:395 */
+    /* ./../lib/standard//kernel.nit:424 */
     REGB2 = TAG_Char('a');
     REGB3 = TAG_Char('A');
     REGB3 = CALL_standard___kernel___Discrete___distance(REGB2)(REGB2, REGB3);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:280 */
+    /* ./../lib/standard//kernel.nit:297 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:395 */
+    /* ./../lib/standard//kernel.nit:424 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:397 */
+    /* ./../lib/standard//kernel.nit:426 */
     REGB3 = REGB0;
     goto label1;
   }
@@ -1958,28 +2217,28 @@ 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 = 401;
+  fra.me.line = 430;
   fra.me.meth = LOCATE_standard___kernel___Char___to_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:404 */
+  /* ./../lib/standard//kernel.nit:434 */
   REGB1 = CALL_standard___kernel___Char___is_lower(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//kernel.nit:385 */
+    /* ./../lib/standard//kernel.nit:413 */
     REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB0));
-    /* ./../lib/standard//kernel.nit:405 */
+    /* ./../lib/standard//kernel.nit:435 */
     REGB2 = TAG_Char('a');
     REGB3 = TAG_Char('A');
     REGB3 = CALL_standard___kernel___Discrete___distance(REGB2)(REGB2, REGB3);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:280 */
+    /* ./../lib/standard//kernel.nit:297 */
     REGB3 = TAG_Char(UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:405 */
+    /* ./../lib/standard//kernel.nit:435 */
     goto label1;
   } else {
-    /* ./../lib/standard//kernel.nit:407 */
+    /* ./../lib/standard//kernel.nit:437 */
     REGB3 = REGB0;
     goto label1;
   }
@@ -1991,25 +2250,36 @@ val_t standard___kernel___Char___is_digit(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___kernel;
-  fra.me.line = 411;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_standard___kernel___Char___is_digit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:413 */
+  /* ./../lib/standard//kernel.nit:444 */
   REGB1 = TAG_Char('0');
-  /* ./../lib/standard//kernel.nit:356 */
+  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:384 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ./../lib/standard//kernel.nit:413 */
+  /* ./../lib/standard//kernel.nit:444 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('9');
-    /* ./../lib/standard//kernel.nit:354 */
+    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:382 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ./../lib/standard//kernel.nit:413 */
+    /* ./../lib/standard//kernel.nit:444 */
     REGB0 = TAG_Bool(false);
     REGB1 = REGB0;
   }
@@ -2022,25 +2292,36 @@ val_t standard___kernel___Char___is_lower(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___kernel;
-  fra.me.line = 416;
+  fra.me.line = 447;
   fra.me.meth = LOCATE_standard___kernel___Char___is_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:418 */
+  /* ./../lib/standard//kernel.nit:450 */
   REGB1 = TAG_Char('a');
-  /* ./../lib/standard//kernel.nit:356 */
+  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:384 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ./../lib/standard//kernel.nit:418 */
+  /* ./../lib/standard//kernel.nit:450 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('z');
-    /* ./../lib/standard//kernel.nit:354 */
+    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:382 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ./../lib/standard//kernel.nit:418 */
+    /* ./../lib/standard//kernel.nit:450 */
     REGB0 = TAG_Bool(false);
     REGB1 = REGB0;
   }
@@ -2053,25 +2334,36 @@ val_t standard___kernel___Char___is_upper(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___kernel;
-  fra.me.line = 421;
+  fra.me.line = 453;
   fra.me.meth = LOCATE_standard___kernel___Char___is_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:423 */
+  /* ./../lib/standard//kernel.nit:456 */
   REGB1 = TAG_Char('A');
-  /* ./../lib/standard//kernel.nit:356 */
+  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:384 */
   REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
-  /* ./../lib/standard//kernel.nit:423 */
+  /* ./../lib/standard//kernel.nit:456 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Char('Z');
-    /* ./../lib/standard//kernel.nit:354 */
+    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:382 */
     REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
   } else {
-    /* ./../lib/standard//kernel.nit:423 */
+    /* ./../lib/standard//kernel.nit:456 */
     REGB0 = TAG_Bool(false);
     REGB1 = REGB0;
   }
@@ -2087,12 +2379,12 @@ 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 = 426;
+  fra.me.line = 459;
   fra.me.meth = LOCATE_standard___kernel___Char___is_letter;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//kernel.nit:428 */
+  /* ./../lib/standard//kernel.nit:462 */
   REGB1 = CALL_standard___kernel___Char___is_lower(REGB0)(REGB0);
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
index b2e6841..aea21b5 100644 (file)
@@ -48,14 +48,16 @@ extern const int SFT_standard___kernel[];
 #define ID_standard___kernel___Comparable (SFT_standard___kernel[6])
 #define COLOR_standard___kernel___Comparable (SFT_standard___kernel[7])
 #define INIT_TABLE_POS_standard___kernel___Comparable (SFT_standard___kernel[8] + 0)
-#define CALL_standard___kernel___Comparable_____l(recv) ((standard___kernel___Comparable_____l_t)CALL((recv), (SFT_standard___kernel[8] + 1)))
-#define CALL_standard___kernel___Comparable_____leq(recv) ((standard___kernel___Comparable_____leq_t)CALL((recv), (SFT_standard___kernel[8] + 2)))
-#define CALL_standard___kernel___Comparable_____geq(recv) ((standard___kernel___Comparable_____geq_t)CALL((recv), (SFT_standard___kernel[8] + 3)))
-#define CALL_standard___kernel___Comparable_____g(recv) ((standard___kernel___Comparable_____g_t)CALL((recv), (SFT_standard___kernel[8] + 4)))
-#define CALL_standard___kernel___Comparable_____leqg(recv) ((standard___kernel___Comparable_____leqg_t)CALL((recv), (SFT_standard___kernel[8] + 5)))
-#define CALL_standard___kernel___Comparable___is_between(recv) ((standard___kernel___Comparable___is_between_t)CALL((recv), (SFT_standard___kernel[8] + 6)))
-#define CALL_standard___kernel___Comparable___max(recv) ((standard___kernel___Comparable___max_t)CALL((recv), (SFT_standard___kernel[8] + 7)))
-#define CALL_standard___kernel___Comparable___min(recv) ((standard___kernel___Comparable___min_t)CALL((recv), (SFT_standard___kernel[8] + 8)))
+#define VTID_standard___kernel___Comparable___OTHER(recv) (VAL2VFT(recv)[SFT_standard___kernel[8] + 1].i)
+#define VTCOLOR_standard___kernel___Comparable___OTHER(recv) (VAL2VFT(recv)[SFT_standard___kernel[8] + 2].i)
+#define CALL_standard___kernel___Comparable_____l(recv) ((standard___kernel___Comparable_____l_t)CALL((recv), (SFT_standard___kernel[8] + 3)))
+#define CALL_standard___kernel___Comparable_____leq(recv) ((standard___kernel___Comparable_____leq_t)CALL((recv), (SFT_standard___kernel[8] + 4)))
+#define CALL_standard___kernel___Comparable_____geq(recv) ((standard___kernel___Comparable_____geq_t)CALL((recv), (SFT_standard___kernel[8] + 5)))
+#define CALL_standard___kernel___Comparable_____g(recv) ((standard___kernel___Comparable_____g_t)CALL((recv), (SFT_standard___kernel[8] + 6)))
+#define CALL_standard___kernel___Comparable_____leqg(recv) ((standard___kernel___Comparable_____leqg_t)CALL((recv), (SFT_standard___kernel[8] + 7)))
+#define CALL_standard___kernel___Comparable___is_between(recv) ((standard___kernel___Comparable___is_between_t)CALL((recv), (SFT_standard___kernel[8] + 8)))
+#define CALL_standard___kernel___Comparable___max(recv) ((standard___kernel___Comparable___max_t)CALL((recv), (SFT_standard___kernel[8] + 9)))
+#define CALL_standard___kernel___Comparable___min(recv) ((standard___kernel___Comparable___min_t)CALL((recv), (SFT_standard___kernel[8] + 10)))
 #define ID_standard___kernel___Discrete (SFT_standard___kernel[9])
 #define COLOR_standard___kernel___Discrete (SFT_standard___kernel[10])
 #define INIT_TABLE_POS_standard___kernel___Discrete (SFT_standard___kernel[11] + 0)
@@ -95,6 +97,7 @@ extern const int SFT_standard___kernel[];
 #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 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)
@@ -316,6 +319,9 @@ typedef void (*CLOS_standard___kernel___Int___enumerate_before_0)(struct stack_f
 static const char * const LOCATE_standard___kernel___Int___enumerate_before = "kernel::Int::enumerate_before";
 void standard___kernel___Int___enumerate_before(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
 typedef void (*standard___kernel___Int___enumerate_before_t)(val_t p0, val_t p1, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+static const char * const LOCATE_standard___kernel___Int___abs = "kernel::Int::abs";
+val_t standard___kernel___Int___abs(val_t p0);
+typedef val_t (*standard___kernel___Int___abs_t)(val_t p0);
 static const char * const LOCATE_standard___kernel___Char___object_id = "kernel::Char::(kernel::Object::object_id)";
 val_t standard___kernel___Char___object_id(val_t p0);
 typedef val_t (*standard___kernel___Char___object_id_t)(val_t p0);
index f1f16fa..f4987eb 100644 (file)
@@ -6,12 +6,12 @@ val_t standard___math___Int___rand(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 19;
+  fra.me.line = 20;
   fra.me.meth = LOCATE_standard___math___Int___rand;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
   REGB0 = p0;
-  /* ./../lib/standard//math.nit:19 */
+  /* ./../lib/standard//math.nit:20 */
   REGB0 = Int_rand___out(REGB0);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -21,13 +21,13 @@ val_t standard___math___Float___sqrt(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 23;
+  fra.me.line = 24;
   fra.me.meth = LOCATE_standard___math___Float___sqrt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:23 */
+  /* ./../lib/standard//math.nit:24 */
   fra.me.REG[0] = Float_sqrt___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -37,13 +37,13 @@ val_t standard___math___Float___cos(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 24;
+  fra.me.line = 25;
   fra.me.meth = LOCATE_standard___math___Float___cos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:24 */
+  /* ./../lib/standard//math.nit:25 */
   fra.me.REG[0] = Float_cos___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -53,13 +53,13 @@ val_t standard___math___Float___sin(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 25;
+  fra.me.line = 26;
   fra.me.meth = LOCATE_standard___math___Float___sin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:25 */
+  /* ./../lib/standard//math.nit:26 */
   fra.me.REG[0] = Float_sin___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -69,13 +69,13 @@ val_t standard___math___Float___tan(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 26;
+  fra.me.line = 27;
   fra.me.meth = LOCATE_standard___math___Float___tan;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:26 */
+  /* ./../lib/standard//math.nit:27 */
   fra.me.REG[0] = Float_tan___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -85,13 +85,13 @@ val_t standard___math___Float___acos(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 27;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_standard___math___Float___acos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:27 */
+  /* ./../lib/standard//math.nit:28 */
   fra.me.REG[0] = Float_acos___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -101,13 +101,13 @@ val_t standard___math___Float___asin(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 28;
+  fra.me.line = 29;
   fra.me.meth = LOCATE_standard___math___Float___asin;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:28 */
+  /* ./../lib/standard//math.nit:29 */
   fra.me.REG[0] = Float_asin___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -117,13 +117,13 @@ val_t standard___math___Float___atan(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 29;
+  fra.me.line = 30;
   fra.me.meth = LOCATE_standard___math___Float___atan;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:29 */
+  /* ./../lib/standard//math.nit:30 */
   fra.me.REG[0] = Float_atan___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -133,7 +133,7 @@ val_t standard___math___Float___pow(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___math;
-  fra.me.line = 31;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_standard___math___Float___pow;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -141,7 +141,7 @@ val_t standard___math___Float___pow(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//math.nit:31 */
+  /* ./../lib/standard//math.nit:32 */
   fra.me.REG[1] = Float_pow___out(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[1];
@@ -151,13 +151,13 @@ val_t standard___math___Float___log(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 32;
+  fra.me.line = 33;
   fra.me.meth = LOCATE_standard___math___Float___log;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:32 */
+  /* ./../lib/standard//math.nit:33 */
   fra.me.REG[0] = Float_log___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -167,13 +167,13 @@ val_t standard___math___Float___exp(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 33;
+  fra.me.line = 34;
   fra.me.meth = LOCATE_standard___math___Float___exp;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:33 */
+  /* ./../lib/standard//math.nit:34 */
   fra.me.REG[0] = Float_exp___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -183,23 +183,123 @@ val_t standard___math___Float___rand(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 35;
+  fra.me.line = 36;
   fra.me.meth = LOCATE_standard___math___Float___rand;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:35 */
+  /* ./../lib/standard//math.nit:36 */
   fra.me.REG[0] = Float_rand___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+val_t standard___math___Float___hypot_with(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; 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___math;
+  fra.me.line = 37;
+  fra.me.meth = LOCATE_standard___math___Float___hypot_with;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./../lib/standard//math.nit:37 */
+  fra.me.REG[1] = Float_hypot_with___out(fra.me.REG[0], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+val_t standard___math___Collection___rand(val_t p0){
+  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_standard___math;
+  fra.me.line = 41;
+  fra.me.meth = LOCATE_standard___math___Collection___rand;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//math.nit:44 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[1] = NIT_NULL;
+    goto label1;
+  }
+  /* ./../lib/standard//math.nit:46 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_standard___math___Int___rand(REGB0)(REGB0);
+  fra.me.REG[2] = REGB0;
+  /* ./../lib/standard//math.nit:47 */
+  fra.me.REG[3] = NIT_NULL;
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], (&(fra.me)), ((fun_t)OC_standard___math___Collection___rand_2));
+  switch ((&(fra.me))->has_broke) {
+    case 0: break;
+    case 1: (&(fra.me))->has_broke = 0; goto label4;
+  }
+  label4: while(0);
+  /* ./../lib/standard//math.nit:59 */
+  fra.me.REG[1] = fra.me.REG[3];
+  goto label1;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[1];
+}
+  void OC_standard___math___Collection___rand_2(struct stack_frame_t *closctx, val_t p0){
+    struct {struct stack_frame_t me;} fra;
+    val_t REGB0;
+    val_t REGB1;
+    val_t tmp;
+    /* ./../lib/standard//math.nit:49 */
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_standard___math;
+    fra.me.line = 49;
+    fra.me.meth = LOCATE_standard___math___Collection___rand;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 1;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[0] = p0;
+    /* ./../lib/standard//math.nit:50 */
+    REGB0 = TAG_Int(0);
+    REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[2],REGB0));
+    if (UNTAG_Bool(REGB1)) {
+    } else {
+      /* ./../lib/standard//kernel.nit:227 */
+      REGB0 = TAG_Bool((closctx->REG[2])==(REGB0));
+      /* ./../lib/standard//math.nit:50 */
+      REGB1 = REGB0;
+    }
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//math.nit:52 */
+      closctx->REG[3] = fra.me.REG[0];
+      /* ./../lib/standard//math.nit:53 */
+      closctx->has_broke = 1;
+      goto label3;
+    } else {
+      /* ./../lib/standard//math.nit:55 */
+      REGB1 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:237 */
+      REGB1 = TAG_Int(UNTAG_Int(closctx->REG[2])-UNTAG_Int(REGB1));
+      /* ./../lib/standard//math.nit:55 */
+      closctx->REG[2] = REGB1;
+    }
+    label3: while(0);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
 val_t standard___math___Object___atan2(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_standard___math;
-  fra.me.line = 38;
+  fra.me.line = 63;
   fra.me.meth = LOCATE_standard___math___Object___atan2;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -209,7 +309,7 @@ val_t standard___math___Object___atan2(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//math.nit:38 */
+  /* ./../lib/standard//math.nit:63 */
   fra.me.REG[2] = Object_atan2___out(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[2];
@@ -219,13 +319,13 @@ val_t standard___math___Object___pi(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 39;
+  fra.me.line = 64;
   fra.me.meth = LOCATE_standard___math___Object___pi;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:39 */
+  /* ./../lib/standard//math.nit:64 */
   fra.me.REG[0] = Object_pi___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -236,14 +336,14 @@ void standard___math___Object___srand_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___math;
-  fra.me.line = 40;
+  fra.me.line = 65;
   fra.me.meth = LOCATE_standard___math___Object___srand_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//math.nit:40 */
+  /* ./../lib/standard//math.nit:65 */
   Object_srand_from___out(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
   return;
@@ -253,13 +353,13 @@ void standard___math___Object___srand(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___math;
-  fra.me.line = 41;
+  fra.me.line = 66;
   fra.me.meth = LOCATE_standard___math___Object___srand;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//math.nit:41 */
+  /* ./../lib/standard//math.nit:66 */
   Object_srand___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
index 58e260c..0d368c8 100644 (file)
@@ -1,7 +1,7 @@
 /* This C header file is generated by NIT to compile modules and programs that requires ./../lib/standard/math. */
 #ifndef standard___math_sep
 #define standard___math_sep
-#include "standard___kernel._sep.h"
+#include "standard___collection._sep.h"
 #include <nit_common.h>
 #include "math._nitni.h"
 extern const char *LOCATE_standard___math;
@@ -18,10 +18,12 @@ extern const int SFT_standard___math[];
 #define CALL_standard___math___Float___log(recv) ((standard___math___Float___log_t)CALL((recv), (SFT_standard___math[1] + 8)))
 #define CALL_standard___math___Float___exp(recv) ((standard___math___Float___exp_t)CALL((recv), (SFT_standard___math[1] + 9)))
 #define CALL_standard___math___Float___rand(recv) ((standard___math___Float___rand_t)CALL((recv), (SFT_standard___math[1] + 10)))
-#define CALL_standard___math___Object___atan2(recv) ((standard___math___Object___atan2_t)CALL((recv), (SFT_standard___math[2] + 0)))
-#define CALL_standard___math___Object___pi(recv) ((standard___math___Object___pi_t)CALL((recv), (SFT_standard___math[2] + 1)))
-#define CALL_standard___math___Object___srand_from(recv) ((standard___math___Object___srand_from_t)CALL((recv), (SFT_standard___math[2] + 2)))
-#define CALL_standard___math___Object___srand(recv) ((standard___math___Object___srand_t)CALL((recv), (SFT_standard___math[2] + 3)))
+#define CALL_standard___math___Float___hypot_with(recv) ((standard___math___Float___hypot_with_t)CALL((recv), (SFT_standard___math[1] + 11)))
+#define CALL_standard___math___Collection___rand(recv) ((standard___math___Collection___rand_t)CALL((recv), (SFT_standard___math[2] + 0)))
+#define CALL_standard___math___Object___atan2(recv) ((standard___math___Object___atan2_t)CALL((recv), (SFT_standard___math[3] + 0)))
+#define CALL_standard___math___Object___pi(recv) ((standard___math___Object___pi_t)CALL((recv), (SFT_standard___math[3] + 1)))
+#define CALL_standard___math___Object___srand_from(recv) ((standard___math___Object___srand_from_t)CALL((recv), (SFT_standard___math[3] + 2)))
+#define CALL_standard___math___Object___srand(recv) ((standard___math___Object___srand_t)CALL((recv), (SFT_standard___math[3] + 3)))
 static const char * const LOCATE_standard___math___Int___rand = "math::Int::rand";
 val_t standard___math___Int___rand(val_t p0);
 typedef val_t (*standard___math___Int___rand_t)(val_t p0);
@@ -58,6 +60,14 @@ typedef val_t (*standard___math___Float___exp_t)(val_t p0);
 static const char * const LOCATE_standard___math___Float___rand = "math::Float::rand";
 val_t standard___math___Float___rand(val_t p0);
 typedef val_t (*standard___math___Float___rand_t)(val_t p0);
+static const char * const LOCATE_standard___math___Float___hypot_with = "math::Float::hypot_with";
+val_t standard___math___Float___hypot_with(val_t p0, val_t p1);
+typedef val_t (*standard___math___Float___hypot_with_t)(val_t p0, val_t p1);
+static const char * const LOCATE_standard___math___Collection___rand = "math::Collection::rand";
+val_t standard___math___Collection___rand(val_t p0);
+typedef val_t (*standard___math___Collection___rand_t)(val_t p0);
+  void OC_standard___math___Collection___rand_2(struct stack_frame_t *closctx, val_t p0);
+  typedef void (*OC_standard___math___Collection___rand_2_t)(struct stack_frame_t *closctx, val_t p0);
 static const char * const LOCATE_standard___math___Object___atan2 = "math::Object::atan2";
 val_t standard___math___Object___atan2(val_t p0, val_t p1, val_t p2);
 typedef val_t (*standard___math___Object___atan2_t)(val_t p0, val_t p1, val_t p2);
index da55aae..11db91f 100644 (file)
@@ -48,6 +48,7 @@ val_t standard___stream___IStream___read(val_t p0, val_t p1){
   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_standard___stream;
@@ -64,7 +65,12 @@ val_t standard___stream___IStream___read(val_t p0, val_t p1){
   /* ./../lib/standard//stream.nit:34 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* ./../lib/standard//stream.nit:34 */
     if (UNTAG_Bool(REGB1)) {
@@ -79,17 +85,22 @@ val_t standard___stream___IStream___read(val_t p0, val_t p1){
       REGB1 = CALL_standard___stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
       /* ./../lib/standard//stream.nit:36 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
       /* ./../lib/standard//stream.nit:36 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//kernel.nit:280 */
+        /* ./../lib/standard//kernel.nit:297 */
         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:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
         /* ./../lib/standard//stream.nit:38 */
         REGB0 = REGB1;
@@ -142,6 +153,7 @@ val_t standard___stream___IStream___read_all(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___stream;
@@ -163,11 +175,16 @@ val_t standard___stream___IStream___read_all(val_t p0){
       REGB0 = CALL_standard___stream___IStream___read_char(fra.me.REG[0])(fra.me.REG[0]);
       /* ./../lib/standard//stream.nit:59 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
       /* ./../lib/standard//stream.nit:59 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//kernel.nit:280 */
+        /* ./../lib/standard//kernel.nit:297 */
         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);
@@ -207,13 +224,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:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./../lib/standard//stream.nit:69 */
       REGB2 = REGB1;
@@ -225,7 +242,7 @@ void standard___stream___IStream___append_line_to(val_t p0, val_t p1){
         goto label1;
       }
     } else {
-      /* ./../lib/standard//kernel.nit:280 */
+      /* ./../lib/standard//kernel.nit:297 */
       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);
@@ -234,7 +251,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:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB2 = TAG_Bool((REGB0)==(REGB2));
         /* ./../lib/standard//stream.nit:74 */
         REGB1 = REGB2;
@@ -325,14 +342,19 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 99);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ./../lib/standard//stream.nit:99 */
   if (UNTAG_Bool(REGB1)) {
@@ -351,20 +373,25 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 102);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:216 */
+  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:233 */
   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:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB0 = TAG_Int(-UNTAG_Int(REGB0));
     /* ./../lib/standard//stream.nit:103 */
     goto label1;
@@ -381,15 +408,15 @@ val_t standard___stream___BufferedIStream___read_char(val_t p0){
   if (UNTAG_Bool(REGB2)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 105);
   }
-  REGB1 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+  REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
   /* ./../lib/standard//stream.nit:106 */
   REGB2 = ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   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:385 */
+  /* ./../lib/standard//kernel.nit:413 */
   REGB1 = TAG_Int((unsigned char)UNTAG_Char(REGB1));
   /* ./../lib/standard//stream.nit:107 */
   REGB0 = REGB1;
@@ -433,21 +460,31 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB2)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 114);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./../lib/standard//stream.nit:115 */
   while(1) {
     REGB3 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
     /* ./../lib/standard//stream.nit:115 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
       /* ./../lib/standard//stream.nit:116 */
       if (UNTAG_Bool(REGB3)) {
@@ -473,11 +510,11 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
         if (UNTAG_Bool(REGB3)) {
           nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 120);
         }
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         /* ./../lib/standard//stream.nit:120 */
@@ -485,12 +522,22 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
       }
       /* ./../lib/standard//stream.nit:122 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
         /* ./../lib/standard//stream.nit:122 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:217 */
+          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:234 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
         } else {
           /* ./../lib/standard//stream.nit:122 */
@@ -504,17 +551,17 @@ val_t standard___stream___BufferedIStream___read(val_t p0, val_t p1){
           if (UNTAG_Bool(REGB3)) {
             nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 123);
           }
-          REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB1);
+          REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB1);
           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:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           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:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
           /* ./../lib/standard//stream.nit:125 */
           REGB0 = REGB3;
@@ -576,16 +623,21 @@ val_t standard___stream___BufferedIStream___read_all(val_t p0){
       if (UNTAG_Bool(REGB1)) {
         nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 137);
       }
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       /* ./../lib/standard//stream.nit:138 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
         /* ./../lib/standard//stream.nit:138 */
         if (UNTAG_Bool(REGB2)) {
@@ -595,11 +647,11 @@ val_t standard___stream___BufferedIStream___read_all(val_t p0){
           if (UNTAG_Bool(REGB2)) {
             nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 139);
           }
-          REGB2 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+          REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
           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:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
           /* ./../lib/standard//stream.nit:140 */
           REGB0 = REGB2;
@@ -660,14 +712,19 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB1)) {
         nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 153);
       }
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
       /* ./../lib/standard//stream.nit:153 */
       if (UNTAG_Bool(REGB1)) {
@@ -676,12 +733,12 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
         if (UNTAG_Bool(REGB1)) {
           nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 153);
         }
-        REGB1 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+        REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
         REGB2 = TAG_Char('\n');
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ./../lib/standard//kernel.nit:350 */
+          /* ./../lib/standard//kernel.nit:378 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
           /* ./../lib/standard//stream.nit:153 */
           REGB3 = REGB2;
@@ -693,7 +750,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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
         /* ./../lib/standard//stream.nit:153 */
         REGB0 = REGB3;
@@ -709,18 +766,23 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
       nit_abort("Uninitialized attribute %s", "_buffer_pos", LOCATE_standard___stream, 156);
     }
     REGB3 = ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
     /* ./../lib/standard//stream.nit:156 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       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);
@@ -729,7 +791,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:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       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);
@@ -742,7 +804,12 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
       REGB2 = ATTR_standard___stream___BufferedIStream____buffer_pos(fra.me.REG[0]);
       /* ./../lib/standard//stream.nit:162 */
       while(1) {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
         /* ./../lib/standard//stream.nit:162 */
         if (UNTAG_Bool(REGB3)) {
@@ -752,11 +819,11 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
           if (UNTAG_Bool(REGB3)) {
             nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 163);
           }
-          REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
+          REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
           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:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
           /* ./../lib/standard//stream.nit:164 */
           REGB2 = REGB3;
@@ -773,20 +840,25 @@ void standard___stream___BufferedIStream___append_line_to(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB2)) {
       nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 168);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       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;
@@ -814,6 +886,7 @@ val_t standard___stream___BufferedIStream___eof(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___stream;
@@ -836,14 +909,19 @@ val_t standard___stream___BufferedIStream___eof(val_t p0){
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_standard___stream, 184);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
   /* ./../lib/standard//stream.nit:184 */
   if (UNTAG_Bool(REGB1)) {
@@ -1081,13 +1159,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:236 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
   /* ./../lib/standard//stream.nit:236 */
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./../lib/standard//stream.nit:236 */
     REGB2 = REGB1;
@@ -1149,6 +1227,7 @@ void standard___stream___FDOStream___write(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 REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___stream;
@@ -1169,23 +1248,28 @@ void standard___stream___FDOStream___write(val_t p0, val_t p1){
   }
   REGB0 = ATTR_standard___stream___FDStream____fd(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___string___String___to_cstring(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./../lib/standard//stream.nit:250 */
   REGB1 = CALL_standard___stream___FDStream___native_write(fra.me.REG[0])(fra.me.REG[0], REGB0, fra.me.REG[2], REGB1);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:215 */
+  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:232 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
   /* ./../lib/standard//stream.nit:251 */
   if (UNTAG_Bool(REGB0)) {
index 322116d..001d0b3 100644 (file)
@@ -6,17 +6,17 @@ 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 = 26;
+  fra.me.line = 28;
   fra.me.meth = LOCATE_standard___string___AbstractString___items;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:26 */
+  /* ./../lib/standard//string.nit:28 */
   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, 26);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 28);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -29,23 +29,23 @@ 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 = 28;
+  fra.me.line = 30;
   fra.me.meth = LOCATE_standard___string___AbstractString_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:28 */
+  /* ./../lib/standard//string.nit:30 */
   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, 28);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 30);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:590 */
+  /* ./../lib/standard//string.nit:593 */
   REGB0 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
-  /* ./../lib/standard//string.nit:28 */
+  /* ./../lib/standard//string.nit:30 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -56,11 +56,12 @@ val_t standard___string___AbstractString___substring(val_t p0, val_t p1, val_t p
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
     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 = 30;
+  fra.me.line = 32;
   fra.me.meth = LOCATE_standard___string___AbstractString___substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -70,91 +71,116 @@ 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:38 */
+  /* ./../lib/standard//string.nit:40 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:38 */
+  /* ./../lib/standard//string.nit:40 */
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 38);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 40);
   }
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* ./../lib/standard//string.nit:39 */
+  /* ./../lib/standard//string.nit:41 */
   REGB1 = REGB2;
-  /* ./../lib/standard//string.nit:40 */
+  /* ./../lib/standard//string.nit:42 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:40 */
+  /* ./../lib/standard//string.nit:42 */
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Int(0);
     REGB0 = REGB2;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:217 */
+  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 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:41 */
+  /* ./../lib/standard//string.nit:43 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:41 */
+    /* ./../lib/standard//string.nit:43 */
     REGB1 = REGB2;
   }
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:42 */
+  /* ./../lib/standard//string.nit:44 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:43 */
+    /* ./../lib/standard//string.nit:45 */
     fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB2);
-    /* ./../lib/standard//string.nit:44 */
+    /* ./../lib/standard//string.nit:46 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:44 */
+      /* ./../lib/standard//string.nit:46 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//string.nit:45 */
+        /* ./../lib/standard//string.nit:47 */
         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, 45);
+          nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 47);
         }
         fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-        /* ./../lib/standard//string.nit:590 */
+        /* ./../lib/standard//string.nit:593 */
         REGB2 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
-        /* ./../lib/standard//string.nit:45 */
+        /* ./../lib/standard//string.nit:47 */
         CALL_standard___collection___abstract_collection___Sequence___push(fra.me.REG[1])(fra.me.REG[1], REGB2);
-        /* ./../lib/standard//string.nit:46 */
+        /* ./../lib/standard//string.nit:48 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//string.nit:46 */
+        /* ./../lib/standard//string.nit:48 */
         REGB0 = REGB2;
       } else {
-        /* ./../lib/standard//string.nit:44 */
+        /* ./../lib/standard//string.nit:46 */
         goto label1;
       }
     }
     label1: while(0);
-    /* ./../lib/standard//string.nit:48 */
+    /* ./../lib/standard//string.nit:50 */
     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:50 */
+    /* ./../lib/standard//string.nit:52 */
     if (!once_value_3) {
       fra.me.REG[0] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
@@ -174,40 +200,46 @@ val_t standard___string___AbstractString___substring_from(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 = 54;
+  fra.me.line = 56;
   fra.me.meth = LOCATE_standard___string___AbstractString___substring_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:61 */
+  /* ./../lib/standard//string.nit:63 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 61);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 63);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
-  /* ./../lib/standard//string.nit:62 */
+  /* ./../lib/standard//string.nit:64 */
   fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[0])(fra.me.REG[0], REGB0, REGB1);
   goto label1;
   label1: while(0);
@@ -225,7 +257,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 = 65;
+  fra.me.line = 67;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_substring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -235,72 +267,87 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:71 */
+  /* ./../lib/standard//string.nit:73 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB0 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:73 */
+  /* ./../lib/standard//string.nit:75 */
   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, 73);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 75);
   }
   fra.me.REG[2] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:74 */
+  /* ./../lib/standard//string.nit:76 */
   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, 74);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 76);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:217 */
+  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:234 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:75 */
+  /* ./../lib/standard//string.nit:77 */
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:75 */
+    /* ./../lib/standard//string.nit:77 */
     REGB1 = REGB3;
   }
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(false);
     goto label1;
   }
-  /* ./../lib/standard//string.nit:76 */
+  /* ./../lib/standard//string.nit:78 */
   while(1) {
     REGB3 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-    /* ./../lib/standard//string.nit:76 */
+    /* ./../lib/standard//string.nit:78 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[2])[UNTAG_Int(REGB0)]);
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]);
-      /* ./../lib/standard//string.nit:77 */
+      /* ./../lib/standard//string.nit:79 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ./../lib/standard//kernel.nit:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB4 = TAG_Bool((REGB3)==(REGB4));
-        /* ./../lib/standard//string.nit:77 */
+        /* ./../lib/standard//string.nit:79 */
         REGB5 = REGB4;
       }
       REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -309,25 +356,25 @@ val_t standard___string___AbstractString___has_substring(val_t p0, val_t p1, val
         REGB1 = REGB5;
         goto label1;
       }
-      /* ./../lib/standard//string.nit:78 */
+      /* ./../lib/standard//string.nit:80 */
       REGB5 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB5 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB5));
-      /* ./../lib/standard//string.nit:78 */
+      /* ./../lib/standard//string.nit:80 */
       REGB0 = REGB5;
-      /* ./../lib/standard//string.nit:79 */
+      /* ./../lib/standard//string.nit:81 */
       REGB5 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB5 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB5));
-      /* ./../lib/standard//string.nit:79 */
+      /* ./../lib/standard//string.nit:81 */
       REGB2 = REGB5;
     } else {
-      /* ./../lib/standard//string.nit:76 */
+      /* ./../lib/standard//string.nit:78 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string.nit:81 */
+  /* ./../lib/standard//string.nit:83 */
   REGB2 = TAG_Bool(true);
   REGB1 = REGB2;
   goto label1;
@@ -341,7 +388,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 = 84;
+  fra.me.line = 86;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_prefix;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -349,7 +396,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:88 */
+  /* ./../lib/standard//string.nit:90 */
   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;
@@ -364,7 +411,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 = 90;
+  fra.me.line = 92;
   fra.me.meth = LOCATE_standard___string___AbstractString___has_suffix;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -372,22 +419,22 @@ val_t standard___string___AbstractString___has_suffix(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:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:94 */
+  /* ./../lib/standard//string.nit:96 */
   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);
@@ -400,18 +447,18 @@ 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 = 96;
+  fra.me.line = 98;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_i;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:100 */
+  /* ./../lib/standard//string.nit:102 */
   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:601 */
+  /* ./../lib/standard//string.nit:604 */
   REGB0 = TAG_Int(atoi(UNBOX_NativeString(fra.me.REG[0])));
-  /* ./../lib/standard//string.nit:100 */
+  /* ./../lib/standard//string.nit:102 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -423,13 +470,13 @@ 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 = 103;
+  fra.me.line = 105;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_hex;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:104 */
+  /* ./../lib/standard//string.nit:106 */
   REGB0 = TAG_Int(16);
   REGB0 = CALL_standard___string___AbstractString___a_to(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -443,7 +490,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 = 106;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_standard___string___AbstractString___a_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -453,12 +500,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:106 */
+  /* ./../lib/standard//string.nit:108 */
   fra.me.REG[1] = REGB0;
-  /* ./../lib/standard//string.nit:109 */
+  /* ./../lib/standard//string.nit:111 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = REGB0;
-  /* ./../lib/standard//string.nit:110 */
+  /* ./../lib/standard//string.nit:112 */
   REGB0 = TAG_Bool(false);
   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));
@@ -466,15 +513,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:127 */
+  /* ./../lib/standard//string.nit:129 */
   if (UNTAG_Bool(fra.me.REG[3])) {
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB0 = TAG_Int(-UNTAG_Int(fra.me.REG[2]));
-    /* ./../lib/standard//string.nit:128 */
+    /* ./../lib/standard//string.nit:130 */
     fra.me.REG[0] = REGB0;
     goto label3;
   } else {
-    /* ./../lib/standard//string.nit:130 */
+    /* ./../lib/standard//string.nit:132 */
     fra.me.REG[0] = fra.me.REG[2];
     goto label3;
   }
@@ -486,9 +533,10 @@ val_t standard___string___AbstractString___a_to(val_t p0, val_t p1){
     struct {struct stack_frame_t me;} fra;
     val_t REGB0;
     val_t REGB1;
+    val_t REGB2;
     fun_t CREG[1];
     val_t tmp;
-    /* ./../lib/standard//string.nit:112 */
+    /* ./../lib/standard//string.nit:114 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -501,42 +549,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:114 */
+    /* ./../lib/standard//string.nit:116 */
     REGB0 = CALL_standard___kernel___Char___to_i(REGB0)(REGB0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(closctx->REG[1]));
-    /* ./../lib/standard//string.nit:115 */
+    /* ./../lib/standard//string.nit:117 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//string.nit:116 */
+      /* ./../lib/standard//string.nit:118 */
       if (UNTAG_Bool(closctx->REG[3])) {
-        /* ./../lib/standard//kernel.nit:219 */
+        /* ./../lib/standard//kernel.nit:236 */
         REGB1 = TAG_Int(-UNTAG_Int(closctx->REG[2]));
-        /* ./../lib/standard//string.nit:117 */
+        /* ./../lib/standard//string.nit:119 */
         closctx->REG[0] = REGB1;
         closctx->has_broke = 1;
         goto label2;
       } else {
-        /* ./../lib/standard//string.nit:119 */
+        /* ./../lib/standard//string.nit:121 */
         closctx->REG[0] = closctx->REG[2];
         closctx->has_broke = 1;
         goto label2;
       }
     } else {
-      /* ./../lib/standard//string.nit:121 */
+      /* ./../lib/standard//string.nit:123 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:121 */
+      /* ./../lib/standard//string.nit:123 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//string.nit:122 */
+        /* ./../lib/standard//string.nit:124 */
         REGB1 = TAG_Bool(true);
         closctx->REG[3] = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:221 */
+        /* ./../lib/standard//kernel.nit:238 */
         REGB1 = TAG_Int(UNTAG_Int(closctx->REG[2])*UNTAG_Int(closctx->REG[1]));
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//string.nit:124 */
+        /* ./../lib/standard//string.nit:126 */
         closctx->REG[2] = REGB0;
       }
     }
@@ -550,24 +608,24 @@ 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 = 134;
+  fra.me.line = 136;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_upper;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:137 */
+  /* ./../lib/standard//string.nit:139 */
   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:139 */
+  /* ./../lib/standard//string.nit:141 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -579,7 +637,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:138 */
+    /* ./../lib/standard//string.nit:140 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -603,24 +661,24 @@ 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 = 142;
+  fra.me.line = 144;
   fra.me.meth = LOCATE_standard___string___AbstractString___to_lower;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:145 */
+  /* ./../lib/standard//string.nit:147 */
   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:147 */
+  /* ./../lib/standard//string.nit:149 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -632,7 +690,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:146 */
+    /* ./../lib/standard//string.nit:148 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -654,50 +712,56 @@ void standard___string___AbstractString___output(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 = 151;
+  fra.me.line = 153;
   fra.me.meth = LOCATE_standard___string___AbstractString___output;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:153 */
+  /* ./../lib/standard//string.nit:155 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:154 */
+  /* ./../lib/standard//string.nit:156 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:154 */
+    /* ./../lib/standard//string.nit:156 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//string.nit:155 */
+      /* ./../lib/standard//string.nit:157 */
       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, 155);
+        nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 157);
       }
       fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]);
-      /* ./../lib/standard//kernel.nit:352 */
+      /* ./../lib/standard//kernel.nit:380 */
       printf("%c", (unsigned char)UNTAG_Char(REGB1));;
-      /* ./../lib/standard//string.nit:156 */
+      /* ./../lib/standard//string.nit:158 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:156 */
+      /* ./../lib/standard//string.nit:158 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//string.nit:154 */
+      /* ./../lib/standard//string.nit:156 */
       goto label1;
     }
   }
@@ -710,11 +774,12 @@ void standard___string___String___with_native(val_t p0, val_t p1, val_t p2, int*
   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[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 167;
+  fra.me.line = 170;
   fra.me.meth = LOCATE_standard___string___String___with_native;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -723,18 +788,23 @@ 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:170 */
+  /* ./../lib/standard//string.nit:173 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:170 */
+  /* ./../lib/standard//string.nit:173 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 170);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 173);
   }
-  /* ./../lib/standard//string.nit:171 */
+  /* ./../lib/standard//string.nit:174 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//string.nit:172 */
+  /* ./../lib/standard//string.nit:175 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -748,7 +818,7 @@ void standard___string___String___from_cstring(val_t p0, val_t p1, int* init_tab
   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 = 175;
+  fra.me.line = 178;
   fra.me.meth = LOCATE_standard___string___String___from_cstring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -756,11 +826,11 @@ void standard___string___String___from_cstring(val_t p0, val_t p1, int* init_tab
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//string.nit:178 */
+  /* ./../lib/standard//string.nit:181 */
   REGB0 = CALL_standard___string___NativeString___cstring_length(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//string.nit:179 */
+  /* ./../lib/standard//string.nit:182 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//string.nit:180 */
+  /* ./../lib/standard//string.nit:183 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -772,17 +842,17 @@ 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 = 183;
+  fra.me.line = 186;
   fra.me.meth = LOCATE_standard___string___String___to_cstring;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:186 */
+  /* ./../lib/standard//string.nit:189 */
   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, 186);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 189);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
   goto label1;
@@ -801,7 +871,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 = 189;
+  fra.me.line = 192;
   fra.me.meth = LOCATE_standard___string___String_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -809,7 +879,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:191 */
+  /* ./../lib/standard//string.nit:194 */
   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)) {
@@ -822,32 +892,32 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:193 */
+  /* ./../lib/standard//string.nit:196 */
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 193);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 196);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:193 */
+  /* ./../lib/standard//string.nit:196 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB2)==(REGB1));
-    /* ./../lib/standard//string.nit:193 */
+    /* ./../lib/standard//string.nit:196 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -856,38 +926,43 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./../lib/standard//string.nit:194 */
+  /* ./../lib/standard//string.nit:197 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:195 */
+  /* ./../lib/standard//string.nit:198 */
   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, 195);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 198);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:196 */
+  /* ./../lib/standard//string.nit:199 */
   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, 196);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 199);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ./../lib/standard//string.nit:197 */
+  /* ./../lib/standard//string.nit:200 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:197 */
+    /* ./../lib/standard//string.nit:200 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       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:198 */
+      /* ./../lib/standard//string.nit:201 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ./../lib/standard//kernel.nit:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB4 = TAG_Bool((REGB2)==(REGB4));
-        /* ./../lib/standard//string.nit:198 */
+        /* ./../lib/standard//string.nit:201 */
         REGB5 = REGB4;
       }
       REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -896,19 +971,19 @@ val_t standard___string___String_____eqeq(val_t p0, val_t p1){
         REGB0 = REGB5;
         goto label1;
       }
-      /* ./../lib/standard//string.nit:199 */
+      /* ./../lib/standard//string.nit:202 */
       REGB5 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-      /* ./../lib/standard//string.nit:199 */
+      /* ./../lib/standard//string.nit:202 */
       REGB3 = REGB5;
     } else {
-      /* ./../lib/standard//string.nit:197 */
+      /* ./../lib/standard//string.nit:200 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string.nit:201 */
+  /* ./../lib/standard//string.nit:204 */
   REGB3 = TAG_Bool(true);
   REGB0 = REGB3;
   goto label1;
@@ -924,10 +999,11 @@ val_t standard___string___String_____l(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___string;
-  fra.me.line = 204;
+  fra.me.line = 207;
   fra.me.meth = LOCATE_standard___string___String_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -935,97 +1011,127 @@ val_t standard___string___String_____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//string.nit:206 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___string, 0);
+  }
+  /* ./../lib/standard//string.nit:209 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   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, 23);
+    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:209 */
+  /* ./../lib/standard//string.nit:212 */
   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, 209);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 212);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:210 */
+  /* ./../lib/standard//string.nit:213 */
   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, 210);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 213);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ./../lib/standard//string.nit:211 */
+  /* ./../lib/standard//string.nit:214 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:211 */
+    /* ./../lib/standard//string.nit:214 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
     } else {
-      /* ./../lib/standard//string.nit:211 */
+      /* ./../lib/standard//string.nit:214 */
       REGB4 = TAG_Bool(false);
       REGB3 = REGB4;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       REGB4 = TAG_Char(UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB0)]);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB4 = TAG_Int((unsigned char)UNTAG_Char(REGB4));
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-      /* ./../lib/standard//string.nit:214 */
+      /* ./../lib/standard//string.nit:217 */
       if (UNTAG_Bool(REGB5)) {
-        /* ./../lib/standard//string.nit:215 */
+        /* ./../lib/standard//string.nit:218 */
         REGB5 = TAG_Bool(true);
         goto label1;
       } else {
-        /* ./../lib/standard//kernel.nit:215 */
+        REGB6 = TAG_Bool(VAL_ISA(REGB3, 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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-        /* ./../lib/standard//string.nit:216 */
+        /* ./../lib/standard//string.nit:219 */
         if (UNTAG_Bool(REGB3)) {
-          /* ./../lib/standard//string.nit:217 */
+          /* ./../lib/standard//string.nit:220 */
           REGB3 = TAG_Bool(false);
           REGB5 = REGB3;
           goto label1;
         }
       }
-      /* ./../lib/standard//string.nit:219 */
+      /* ./../lib/standard//string.nit:222 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:219 */
+      /* ./../lib/standard//string.nit:222 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//string.nit:211 */
+      /* ./../lib/standard//string.nit:214 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:221 */
+  /* ./../lib/standard//string.nit:224 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//string.nit:222 */
+    /* ./../lib/standard//string.nit:225 */
     REGB2 = TAG_Bool(true);
     REGB5 = REGB2;
     goto label1;
   } else {
-    /* ./../lib/standard//string.nit:224 */
+    /* ./../lib/standard//string.nit:227 */
     REGB2 = TAG_Bool(false);
     REGB5 = REGB2;
     goto label1;
@@ -1041,7 +1147,7 @@ val_t standard___string___String_____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___string;
-  fra.me.line = 228;
+  fra.me.line = 231;
   fra.me.meth = LOCATE_standard___string___String_____plus;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1050,28 +1156,28 @@ val_t standard___string___String_____plus(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:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   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, 23);
+    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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:231 */
+  /* ./../lib/standard//string.nit:234 */
   fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB1);
-  /* ./../lib/standard//string.nit:232 */
+  /* ./../lib/standard//string.nit:235 */
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:233 */
+  /* ./../lib/standard//string.nit:236 */
   CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ./../lib/standard//string.nit:234 */
+  /* ./../lib/standard//string.nit:237 */
   fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
   goto label1;
   label1: while(0);
@@ -1082,10 +1188,11 @@ val_t standard___string___String_____star(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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 237;
+  fra.me.line = 240;
   fra.me.meth = LOCATE_standard___string___String_____star;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1093,48 +1200,58 @@ 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:240 */
+  /* ./../lib/standard//string.nit:243 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:240 */
+  /* ./../lib/standard//string.nit:243 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 240);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 243);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:221 */
+  /* ./../lib/standard//kernel.nit:238 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB0));
-  /* ./../lib/standard//string.nit:241 */
+  /* ./../lib/standard//string.nit:244 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB1);
-  /* ./../lib/standard//string.nit:242 */
+  /* ./../lib/standard//string.nit:245 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:242 */
+    /* ./../lib/standard//string.nit:245 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//string.nit:243 */
+      /* ./../lib/standard//string.nit:246 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* ./../lib/standard//string.nit:244 */
+      /* ./../lib/standard//string.nit:247 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:244 */
+      /* ./../lib/standard//string.nit:247 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//string.nit:242 */
+      /* ./../lib/standard//string.nit:245 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string.nit:246 */
+  /* ./../lib/standard//string.nit:249 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -1146,13 +1263,13 @@ 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 = 249;
+  fra.me.line = 252;
   fra.me.meth = LOCATE_standard___string___String___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:249 */
+  /* ./../lib/standard//string.nit:252 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1167,65 +1284,70 @@ 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 = 251;
+  fra.me.line = 254;
   fra.me.meth = LOCATE_standard___string___String___hash;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:254 */
+  /* ./../lib/standard//string.nit:257 */
   REGB0 = TAG_Int(5381);
-  /* ./../lib/standard//string.nit:255 */
+  /* ./../lib/standard//string.nit:258 */
   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, 255);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 258);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:256 */
+  /* ./../lib/standard//string.nit:259 */
   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, 256);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 259);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:257 */
+  /* ./../lib/standard//string.nit:260 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:257 */
+    /* ./../lib/standard//string.nit:260 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//string.nit:258 */
+      /* ./../lib/standard//string.nit:261 */
       REGB1 = TAG_Int(32);
-      /* ./../lib/standard//kernel.nit:221 */
+      /* ./../lib/standard//kernel.nit:238 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)*UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       REGB3 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB2)]);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//kernel.nit:413 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:258 */
+      /* ./../lib/standard//string.nit:261 */
       REGB0 = REGB3;
-      /* ./../lib/standard//string.nit:259 */
+      /* ./../lib/standard//string.nit:262 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:259 */
+      /* ./../lib/standard//string.nit:262 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//string.nit:257 */
+      /* ./../lib/standard//string.nit:260 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string.nit:261 */
+  /* ./../lib/standard//string.nit:264 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -1240,7 +1362,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 = 275;
+  fra.me.line = 278;
   fra.me.meth = LOCATE_standard___string___Buffer_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1248,60 +1370,70 @@ void standard___string___Buffer_____braeq(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   REGB0 = p1;
   REGB1 = p2;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:277 */
+  /* ./../lib/standard//string.nit:280 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./../lib/standard//string.nit:277 */
+    /* ./../lib/standard//string.nit:280 */
     REGB3 = REGB2;
   }
   if (UNTAG_Bool(REGB3)) {
-    /* ./../lib/standard//string.nit:278 */
+    /* ./../lib/standard//string.nit:281 */
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
-    /* ./../lib/standard//string.nit:279 */
+    /* ./../lib/standard//string.nit:282 */
     goto label1;
   }
-  /* ./../lib/standard//string.nit:281 */
+  /* ./../lib/standard//string.nit:284 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB3));
-  /* ./../lib/standard//string.nit:281 */
+  /* ./../lib/standard//string.nit:284 */
   if (UNTAG_Bool(REGB3)) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
   } else {
-    /* ./../lib/standard//string.nit:281 */
+    /* ./../lib/standard//string.nit:284 */
     REGB2 = TAG_Bool(false);
     REGB3 = REGB2;
   }
   if (UNTAG_Bool(REGB3)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 281);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 284);
   }
-  /* ./../lib/standard//string.nit:282 */
+  /* ./../lib/standard//string.nit:285 */
   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, 282);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 285);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:591 */
+  /* ./../lib/standard//string.nit:594 */
   UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1312,10 +1444,11 @@ void standard___string___Buffer___add(val_t p0, val_t p1){
   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_standard___string;
-  fra.me.line = 285;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_standard___string___Buffer___add;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1323,60 +1456,65 @@ 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:287 */
+  /* ./../lib/standard//string.nit:290 */
   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, 287);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 290);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:287 */
+  /* ./../lib/standard//string.nit:290 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:287 */
+    /* ./../lib/standard//string.nit:290 */
     REGB1 = TAG_Int(5);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:287 */
+    /* ./../lib/standard//string.nit:290 */
     CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[0])(fra.me.REG[0], REGB1);
   }
-  /* ./../lib/standard//string.nit:288 */
+  /* ./../lib/standard//string.nit:291 */
   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, 288);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 291);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:591 */
+  /* ./../lib/standard//string.nit:594 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB1)]=UNTAG_Char(REGB0);;
-  /* ./../lib/standard//string.nit:289 */
+  /* ./../lib/standard//string.nit:292 */
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:289 */
+  /* ./../lib/standard//string.nit:292 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   return;
@@ -1390,7 +1528,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 = 292;
+  fra.me.line = 295;
   fra.me.meth = LOCATE_standard___string___Buffer___enlarge;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1399,67 +1537,77 @@ 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:294 */
+  /* ./../lib/standard//string.nit:297 */
   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, 294);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 297);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:214 */
+  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:231 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:295 */
+  /* ./../lib/standard//string.nit:298 */
   if (UNTAG_Bool(REGB2)) {
     goto label1;
   }
-  /* ./../lib/standard//string.nit:296 */
+  /* ./../lib/standard//string.nit:299 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:214 */
+    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:231 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<=UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:296 */
+    /* ./../lib/standard//string.nit:299 */
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:221 */
+      /* ./../lib/standard//kernel.nit:238 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)*UNTAG_Int(REGB2));
-      /* ./../lib/standard//string.nit:296 */
+      /* ./../lib/standard//string.nit:299 */
       REGB3 = TAG_Int(2);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:296 */
+      /* ./../lib/standard//string.nit:299 */
       REGB1 = REGB3;
     } else {
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string.nit:297 */
+  /* ./../lib/standard//string.nit:300 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* ./../lib/standard//string.nit:606 */
+  /* ./../lib/standard//string.nit:609 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB0) * sizeof(char))));
-  /* ./../lib/standard//string.nit:298 */
+  /* ./../lib/standard//string.nit:301 */
   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, 298);
+    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//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:298 */
+  /* ./../lib/standard//string.nit:301 */
   REGB3 = TAG_Int(0);
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:592 */
+  /* ./../lib/standard//string.nit:595 */
   (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:299 */
+  /* ./../lib/standard//string.nit:302 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//string.nit:300 */
+  /* ./../lib/standard//string.nit:303 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[0]) = REGB1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1470,10 +1618,11 @@ void standard___string___Buffer___append(val_t p0, val_t p1){
   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_standard___string;
-  fra.me.line = 303;
+  fra.me.line = 306;
   fra.me.meth = LOCATE_standard___string___Buffer___append;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -1484,77 +1633,82 @@ void standard___string___Buffer___append(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./../lib/standard//string.nit:303 */
+  /* ./../lib/standard//string.nit:306 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./../lib/standard//string.nit:305 */
+  /* ./../lib/standard//string.nit:308 */
   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:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:307 */
+    /* ./../lib/standard//string.nit:310 */
     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, 307);
+      nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 310);
     }
     REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//string.nit:307 */
+    /* ./../lib/standard//string.nit:310 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//string.nit:307 */
+      /* ./../lib/standard//string.nit:310 */
       CALL_standard___collection___array___AbstractArray___enlarge(fra.me.REG[2])(fra.me.REG[2], REGB2);
     }
-    /* ./../lib/standard//string.nit:308 */
+    /* ./../lib/standard//string.nit:311 */
     fra.me.REG[3] = 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, 308);
+      nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 311);
     }
     fra.me.REG[4] = ATTR_standard___string___AbstractString____items(fra.me.REG[2]);
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//string.nit:592 */
+    /* ./../lib/standard//string.nit:595 */
     (void)memcpy(UNBOX_NativeString(fra.me.REG[4])+UNTAG_Int(REGB1), UNBOX_NativeString(fra.me.REG[3])+UNTAG_Int(REGB2), UNTAG_Int(REGB0));;
-    /* ./../lib/standard//string.nit:309 */
+    /* ./../lib/standard//string.nit:312 */
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:309 */
+    /* ./../lib/standard//string.nit:312 */
     ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB0;
   } else {
-    /* ./../lib/standard//string.nit:311 */
+    /* ./../lib/standard//string.nit:314 */
     CALL_SUPER_standard___string___Buffer___append(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
   stack_frame_head = fra.me.prev;
@@ -1568,7 +1722,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 = 315;
+  fra.me.line = 318;
   fra.me.meth = LOCATE_standard___string___Buffer___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1576,49 +1730,49 @@ val_t standard___string___Buffer___to_s(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:23 */
+  /* ./../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, 23);
+    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:318 */
+  /* ./../lib/standard//string.nit:321 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:606 */
+  /* ./../lib/standard//string.nit:609 */
   fra.me.REG[1] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ./../lib/standard//string.nit:319 */
+  /* ./../lib/standard//string.nit:322 */
   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, 319);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 322);
   }
   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:592 */
+  /* ./../lib/standard//string.nit:595 */
   (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:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:322 */
+  /* ./../lib/standard//string.nit:325 */
   REGB1 = TAG_Char('\0');
-  /* ./../lib/standard//string.nit:591 */
+  /* ./../lib/standard//string.nit:594 */
   UNBOX_NativeString(fra.me.REG[1])[UNTAG_Int(REGB2)]=UNTAG_Char(REGB1);;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:324 */
+  /* ./../lib/standard//string.nit:327 */
   fra.me.REG[1] = NEW_String_standard___string___String___with_native(fra.me.REG[1], REGB1);
   goto label1;
   label1: while(0);
@@ -1633,10 +1787,11 @@ val_t standard___string___Buffer_____l(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___string;
-  fra.me.line = 327;
+  fra.me.line = 330;
   fra.me.meth = LOCATE_standard___string___Buffer_____l;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1644,83 +1799,113 @@ val_t standard___string___Buffer_____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//string.nit:329 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[0]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[0]))) /*cast OTHER*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_standard___string, 0);
+  }
+  /* ./../lib/standard//string.nit:332 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
   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, 23);
+    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:332 */
+  /* ./../lib/standard//string.nit:335 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:332 */
+    /* ./../lib/standard//string.nit:335 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
     } else {
-      /* ./../lib/standard//string.nit:332 */
+      /* ./../lib/standard//string.nit:335 */
       REGB4 = TAG_Bool(false);
       REGB3 = REGB4;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string.nit:333 */
-      REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//string.nit:336 */
+      REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB0);
+      /* ./../lib/standard//kernel.nit:413 */
       REGB3 = TAG_Int((unsigned char)UNTAG_Char(REGB3));
-      /* ./../lib/standard//string.nit:334 */
-      REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      /* ./../lib/standard//kernel.nit:385 */
+      /* ./../lib/standard//string.nit:337 */
+      REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
+      /* ./../lib/standard//kernel.nit:413 */
       REGB4 = TAG_Int((unsigned char)UNTAG_Char(REGB4));
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
-      /* ./../lib/standard//string.nit:335 */
+      /* ./../lib/standard//string.nit:338 */
       if (UNTAG_Bool(REGB5)) {
-        /* ./../lib/standard//string.nit:336 */
+        /* ./../lib/standard//string.nit:339 */
         REGB5 = TAG_Bool(true);
         goto label1;
       } else {
-        /* ./../lib/standard//kernel.nit:215 */
+        REGB6 = TAG_Bool(VAL_ISA(REGB3, 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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-        /* ./../lib/standard//string.nit:337 */
+        /* ./../lib/standard//string.nit:340 */
         if (UNTAG_Bool(REGB3)) {
-          /* ./../lib/standard//string.nit:338 */
+          /* ./../lib/standard//string.nit:341 */
           REGB3 = TAG_Bool(false);
           REGB5 = REGB3;
           goto label1;
         }
       }
-      /* ./../lib/standard//string.nit:340 */
+      /* ./../lib/standard//string.nit:343 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:340 */
+      /* ./../lib/standard//string.nit:343 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//string.nit:332 */
+      /* ./../lib/standard//string.nit:335 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:342 */
+  /* ./../lib/standard//string.nit:345 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//string.nit:343 */
+    /* ./../lib/standard//string.nit:346 */
     REGB2 = TAG_Bool(true);
     REGB5 = REGB2;
     goto label1;
   } else {
-    /* ./../lib/standard//string.nit:345 */
+    /* ./../lib/standard//string.nit:348 */
     REGB2 = TAG_Bool(false);
     REGB5 = REGB2;
     goto label1;
@@ -1737,13 +1922,13 @@ void standard___string___Buffer___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___string;
-  fra.me.line = 349;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_standard___string___Buffer___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:352 */
+  /* ./../lib/standard//string.nit:355 */
   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;
@@ -1760,7 +1945,7 @@ void standard___string___Buffer___from(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_standard___string;
-  fra.me.line = 355;
+  fra.me.line = 358;
   fra.me.meth = LOCATE_standard___string___Buffer___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1769,59 +1954,59 @@ void standard___string___Buffer___from(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//string.nit:355 */
+  /* ./../lib/standard//string.nit:358 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_standard___string___StringCapable___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:357 */
+  /* ./../lib/standard//string.nit:360 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:357 */
+  /* ./../lib/standard//string.nit:360 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[2]) = REGB1;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:358 */
+  /* ./../lib/standard//string.nit:361 */
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]) = REGB1;
-  /* ./../lib/standard//string.nit:359 */
+  /* ./../lib/standard//string.nit:362 */
   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, 359);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 362);
   }
   REGB1 = ATTR_standard___string___Buffer____capacity(fra.me.REG[2]);
-  /* ./../lib/standard//string.nit:606 */
+  /* ./../lib/standard//string.nit:609 */
   fra.me.REG[0] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ./../lib/standard//string.nit:359 */
+  /* ./../lib/standard//string.nit:362 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./../lib/standard//string.nit:360 */
+  /* ./../lib/standard//string.nit:363 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___items(fra.me.REG[1])(fra.me.REG[1]);
   REGB1 = TAG_Bool(ATTR_standard___string___AbstractString____items(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 360);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 363);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[2]);
   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, 360);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string, 363);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   REGB0 = TAG_Int(0);
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:592 */
+  /* ./../lib/standard//string.nit:595 */
   (void)memcpy(UNBOX_NativeString(fra.me.REG[0])+UNTAG_Int(REGB2), UNBOX_NativeString(fra.me.REG[1])+UNTAG_Int(REGB0), UNTAG_Int(REGB1));;
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -1832,11 +2017,12 @@ void standard___string___Buffer___with_capacity(val_t p0, val_t p1, int* init_ta
   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[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 363;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_standard___string___Buffer___with_capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1844,29 +2030,34 @@ 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:363 */
+  /* ./../lib/standard//string.nit:366 */
   fra.me.REG[1] = fra.me.REG[0];
   CALL_standard___string___StringCapable___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./../lib/standard//string.nit:366 */
+  /* ./../lib/standard//string.nit:369 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:366 */
+  /* ./../lib/standard//string.nit:369 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string, 366);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string, 369);
   }
-  /* ./../lib/standard//string.nit:368 */
+  /* ./../lib/standard//string.nit:371 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string.nit:606 */
+  /* ./../lib/standard//string.nit:609 */
   fra.me.REG[0] = BOX_NativeString((char*)raw_alloc((UNTAG_Int(REGB1) * sizeof(char))));
-  /* ./../lib/standard//string.nit:368 */
+  /* ./../lib/standard//string.nit:371 */
   ATTR_standard___string___AbstractString____items(fra.me.REG[1]) = fra.me.REG[0];
-  /* ./../lib/standard//string.nit:369 */
+  /* ./../lib/standard//string.nit:372 */
   ATTR_standard___string___Buffer____capacity(fra.me.REG[1]) = REGB0;
-  /* ./../lib/standard//string.nit:370 */
+  /* ./../lib/standard//string.nit:373 */
   REGB0 = TAG_Int(0);
   ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]) = REGB0;
   stack_frame_head = fra.me.prev;
@@ -1884,7 +2075,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 = 373;
+  fra.me.line = 376;
   fra.me.meth = LOCATE_standard___string___Buffer_____eqeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1892,7 +2083,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:375 */
+  /* ./../lib/standard//string.nit:378 */
   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)) {
@@ -1905,32 +2096,32 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
     REGB0 = TAG_Bool(false);
     goto label1;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:377 */
+  /* ./../lib/standard//string.nit:380 */
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 377);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___string, 380);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:377 */
+  /* ./../lib/standard//string.nit:380 */
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB2)==(REGB1));
-    /* ./../lib/standard//string.nit:377 */
+    /* ./../lib/standard//string.nit:380 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -1939,38 +2130,43 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
     REGB0 = REGB3;
     goto label1;
   }
-  /* ./../lib/standard//string.nit:378 */
+  /* ./../lib/standard//string.nit:381 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:379 */
+  /* ./../lib/standard//string.nit:382 */
   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, 379);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 382);
   }
   fra.me.REG[0] = ATTR_standard___string___AbstractString____items(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:380 */
+  /* ./../lib/standard//string.nit:383 */
   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, 380);
+    nit_abort("Uninitialized attribute %s", "_items", LOCATE_standard___string, 383);
   }
   fra.me.REG[1] = ATTR_standard___string___AbstractString____items(fra.me.REG[1]);
-  /* ./../lib/standard//string.nit:381 */
+  /* ./../lib/standard//string.nit:384 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:381 */
+    /* ./../lib/standard//string.nit:384 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string.nit:590 */
+      /* ./../lib/standard//string.nit:593 */
       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:382 */
+      /* ./../lib/standard//string.nit:385 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ./../lib/standard//kernel.nit:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB4 = TAG_Bool((REGB2)==(REGB4));
-        /* ./../lib/standard//string.nit:382 */
+        /* ./../lib/standard//string.nit:385 */
         REGB5 = REGB4;
       }
       REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -1979,19 +2175,19 @@ val_t standard___string___Buffer_____eqeq(val_t p0, val_t p1){
         REGB0 = REGB5;
         goto label1;
       }
-      /* ./../lib/standard//string.nit:383 */
+      /* ./../lib/standard//string.nit:386 */
       REGB5 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB5));
-      /* ./../lib/standard//string.nit:383 */
+      /* ./../lib/standard//string.nit:386 */
       REGB3 = REGB5;
     } else {
-      /* ./../lib/standard//string.nit:381 */
+      /* ./../lib/standard//string.nit:384 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string.nit:385 */
+  /* ./../lib/standard//string.nit:388 */
   REGB3 = TAG_Bool(true);
   REGB0 = REGB3;
   goto label1;
@@ -2005,17 +2201,17 @@ 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 = 388;
+  fra.me.line = 391;
   fra.me.meth = LOCATE_standard___string___Buffer___capacity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:388 */
+  /* ./../lib/standard//string.nit:391 */
   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, 388);
+    nit_abort("Uninitialized attribute %s", "_capacity", LOCATE_standard___string, 391);
   }
   REGB0 = ATTR_standard___string___Buffer____capacity(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2026,13 +2222,13 @@ 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 = 398;
+  fra.me.line = 401;
   fra.me.meth = LOCATE_standard___string___Object___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:399 */
+  /* ./../lib/standard//string.nit:402 */
   fra.me.REG[0] = CALL_standard___string___Object___inspect(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -2044,13 +2240,13 @@ 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 = 401;
+  fra.me.line = 404;
   fra.me.meth = LOCATE_standard___string___Object___native_class_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:401 */
+  /* ./../lib/standard//string.nit:404 */
   fra.me.REG[0] = BOX_NativeString(VAL2VFT(fra.me.REG[0])[2].cname);;
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2060,13 +2256,13 @@ 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 = 404;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_standard___string___Object___class_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:406 */
+  /* ./../lib/standard//string.nit:409 */
   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]);
   goto label1;
@@ -2082,7 +2278,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 = 408;
+  fra.me.line = 411;
   fra.me.meth = LOCATE_standard___string___Object___inspect;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2090,7 +2286,7 @@ 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:412 */
+  /* ./../lib/standard//string.nit:415 */
   REGB0 = TAG_Int(3);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2128,7 +2324,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 = 415;
+  fra.me.line = 418;
   fra.me.meth = LOCATE_standard___string___Object___inspect_head;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2136,7 +2332,7 @@ 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:419 */
+  /* ./../lib/standard//string.nit:422 */
   REGB0 = TAG_Int(5);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2182,13 +2378,13 @@ 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 = 422;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_standard___string___Object___args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:424 */
+  /* ./../lib/standard//string.nit:427 */
   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;
@@ -2206,16 +2402,16 @@ 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 = 429;
+  fra.me.line = 432;
   fra.me.meth = LOCATE_standard___string___Bool___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//string.nit:431 */
+  /* ./../lib/standard//string.nit:434 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//string.nit:432 */
+    /* ./../lib/standard//string.nit:435 */
     if (!once_value_1) {
       if (!once_value_2) {
         fra.me.REG[0] = BOX_NativeString("true");
@@ -2231,7 +2427,7 @@ 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:434 */
+    /* ./../lib/standard//string.nit:437 */
     if (!once_value_4) {
       if (!once_value_5) {
         fra.me.REG[1] = BOX_NativeString("false");
@@ -2262,7 +2458,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 = 440;
+  fra.me.line = 443;
   fra.me.meth = LOCATE_standard___string___Int___fill_buffer;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2271,79 +2467,94 @@ 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:446 */
+  /* ./../lib/standard//string.nit:449 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-  /* ./../lib/standard//string.nit:446 */
+  /* ./../lib/standard//string.nit:449 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB2 = TAG_Int(-UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:448 */
+    /* ./../lib/standard//string.nit:451 */
     REGB3 = TAG_Int(0);
     REGB4 = TAG_Char('-');
-    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
+    CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
   } else {
-    /* ./../lib/standard//string.nit:449 */
+    /* ./../lib/standard//string.nit:452 */
     REGB4 = TAG_Int(0);
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ./../lib/standard//kernel.nit:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB4 = TAG_Bool((REGB0)==(REGB4));
-      /* ./../lib/standard//string.nit:449 */
+      /* ./../lib/standard//string.nit:452 */
       REGB3 = REGB4;
     }
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string.nit:450 */
+      /* ./../lib/standard//string.nit:453 */
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Char('0');
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
-      /* ./../lib/standard//string.nit:451 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB4);
+      /* ./../lib/standard//string.nit:454 */
       goto label1;
     } else {
-      /* ./../lib/standard//string.nit:453 */
+      /* ./../lib/standard//string.nit:456 */
       REGB2 = REGB0;
     }
   }
-  /* ./../lib/standard//string.nit:456 */
+  /* ./../lib/standard//string.nit:459 */
   REGB0 = CALL_standard___kernel___Int___digit_count(REGB0)(REGB0, REGB1);
   REGB4 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
-  /* ./../lib/standard//string.nit:457 */
+  /* ./../lib/standard//string.nit:460 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    REGB3 = TAG_Bool(VAL_ISA(REGB0, 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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:457 */
+    /* ./../lib/standard//string.nit:460 */
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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:234 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB0));
     } else {
-      /* ./../lib/standard//string.nit:457 */
+      /* ./../lib/standard//string.nit:460 */
       REGB3 = TAG_Bool(false);
       REGB0 = REGB3;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//kernel.nit:223 */
+      /* ./../lib/standard//kernel.nit:240 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)%UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:458 */
+      /* ./../lib/standard//string.nit:461 */
       REGB0 = CALL_standard___kernel___Int___to_c(REGB0)(REGB0);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB4, REGB0);
-      /* ./../lib/standard//kernel.nit:222 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB4, REGB0);
+      /* ./../lib/standard//kernel.nit:239 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)/UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:459 */
+      /* ./../lib/standard//string.nit:462 */
       REGB2 = REGB0;
-      /* ./../lib/standard//string.nit:460 */
+      /* ./../lib/standard//string.nit:463 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB0));
-      /* ./../lib/standard//string.nit:460 */
+      /* ./../lib/standard//string.nit:463 */
       REGB4 = REGB0;
     } else {
-      /* ./../lib/standard//string.nit:457 */
+      /* ./../lib/standard//string.nit:460 */
       goto label2;
     }
   }
@@ -2360,13 +2571,13 @@ val_t standard___string___Int___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 = 464;
+  fra.me.line = 467;
   fra.me.meth = LOCATE_standard___string___Int___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//string.nit:465 */
+  /* ./../lib/standard//string.nit:468 */
   REGB1 = TAG_Int(10);
   REGB2 = TAG_Bool(true);
   fra.me.REG[0] = CALL_standard___string___Int___to_base(REGB0)(REGB0, REGB1, REGB2);
@@ -2383,13 +2594,13 @@ 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 = 467;
+  fra.me.line = 470;
   fra.me.meth = LOCATE_standard___string___Int___to_hex;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//string.nit:468 */
+  /* ./../lib/standard//string.nit:471 */
   REGB1 = TAG_Int(16);
   REGB2 = TAG_Bool(false);
   fra.me.REG[0] = CALL_standard___string___Int___to_base(REGB0)(REGB0, REGB1, REGB2);
@@ -2409,7 +2620,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 = 470;
+  fra.me.line = 473;
   fra.me.meth = LOCATE_standard___string___Int___to_base;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -2417,9 +2628,9 @@ 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:473 */
+  /* ./../lib/standard//string.nit:476 */
   REGB3 = CALL_standard___kernel___Int___digit_count(REGB0)(REGB0, REGB1);
-  /* ./../lib/standard//string.nit:474 */
+  /* ./../lib/standard//string.nit:477 */
   if (!once_value_1) {
     fra.me.REG[0] = BOX_NativeString(" ");
     REGB4 = TAG_Int(1);
@@ -2430,9 +2641,9 @@ val_t standard___string___Int___to_base(val_t p0, val_t p1, val_t p2){
   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:475 */
+  /* ./../lib/standard//string.nit:478 */
   CALL_standard___string___Int___fill_buffer(REGB0)(REGB0, fra.me.REG[0], REGB1, REGB2);
-  /* ./../lib/standard//string.nit:476 */
+  /* ./../lib/standard//string.nit:479 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label2;
   label2: while(0);
@@ -2445,13 +2656,13 @@ 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 = 481;
+  fra.me.line = 484;
   fra.me.meth = LOCATE_standard___string___Float___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:481 */
+  /* ./../lib/standard//string.nit:484 */
   REGB0 = TAG_Int(6);
   fra.me.REG[0] = CALL_standard___string___Float___to_precision(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -2464,13 +2675,14 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
+  val_t REGB3;
   val_t tmp;
   static val_t once_value_3; /* Once value */
   static val_t once_value_4; /* Once value */
   static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 483;
+  fra.me.line = 486;
   fra.me.meth = LOCATE_standard___string___Float___to_precision;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2480,61 +2692,66 @@ val_t standard___string___Float___to_precision(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:486 */
+  /* ./../lib/standard//string.nit:489 */
   REGB1 = TAG_Int(0);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./../lib/standard//string.nit:486 */
+    /* ./../lib/standard//string.nit:489 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./../lib/standard//kernel.nit:199 */
+    /* ./../lib/standard//kernel.nit:216 */
     REGB2 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
-    /* ./../lib/standard//string.nit:486 */
+    /* ./../lib/standard//string.nit:489 */
     fra.me.REG[1] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
     goto label1;
   }
-  /* ./../lib/standard//kernel.nit:199 */
+  /* ./../lib/standard//kernel.nit:216 */
   REGB2 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[0]));
-  /* ./../lib/standard//string.nit:489 */
+  /* ./../lib/standard//string.nit:492 */
   fra.me.REG[2] = BOX_Float(1.0);
-  /* ./../lib/standard//string.nit:490 */
+  /* ./../lib/standard//string.nit:493 */
   while(1) {
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:490 */
+    /* ./../lib/standard//string.nit:493 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//string.nit:491 */
+      /* ./../lib/standard//string.nit:494 */
       fra.me.REG[3] = BOX_Float(10.0);
-      /* ./../lib/standard//kernel.nit:196 */
+      /* ./../lib/standard//kernel.nit:213 */
       fra.me.REG[3] = BOX_Float(UNBOX_Float(fra.me.REG[2])*UNBOX_Float(fra.me.REG[3]));
-      /* ./../lib/standard//string.nit:491 */
+      /* ./../lib/standard//string.nit:494 */
       fra.me.REG[2] = fra.me.REG[3];
-      /* ./../lib/standard//string.nit:492 */
+      /* ./../lib/standard//string.nit:495 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//string.nit:492 */
+      /* ./../lib/standard//string.nit:495 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//string.nit:490 */
+      /* ./../lib/standard//string.nit:493 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//kernel.nit:227 */
+  /* ./../lib/standard//kernel.nit:244 */
   fra.me.REG[3] = BOX_Float((float)UNTAG_Int(REGB2));
-  /* ./../lib/standard//kernel.nit:195 */
+  /* ./../lib/standard//kernel.nit:212 */
   fra.me.REG[3] = BOX_Float(UNBOX_Float(fra.me.REG[0])-UNBOX_Float(fra.me.REG[3]));
-  /* ./../lib/standard//kernel.nit:196 */
+  /* ./../lib/standard//kernel.nit:213 */
   fra.me.REG[2] = BOX_Float(UNBOX_Float(fra.me.REG[3])*UNBOX_Float(fra.me.REG[2]));
-  /* ./../lib/standard//kernel.nit:199 */
+  /* ./../lib/standard//kernel.nit:216 */
   REGB0 = TAG_Int((bigint)UNBOX_Float(fra.me.REG[2]));
-  /* ./../lib/standard//string.nit:495 */
+  /* ./../lib/standard//string.nit:498 */
   REGB1 = TAG_Int(5);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
   if (!once_value_3) {
@@ -2582,19 +2799,19 @@ 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 = 500;
+  fra.me.line = 503;
   fra.me.meth = LOCATE_standard___string___Char___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   REGB0 = p0;
-  /* ./../lib/standard//string.nit:502 */
+  /* ./../lib/standard//string.nit:505 */
   REGB1 = TAG_Int(1);
   fra.me.REG[0] = NEW_Buffer_standard___string___Buffer___with_capacity(REGB1);
-  /* ./../lib/standard//string.nit:503 */
+  /* ./../lib/standard//string.nit:506 */
   REGB1 = TAG_Int(0);
-  CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB0);
-  /* ./../lib/standard//string.nit:504 */
+  CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB1, REGB0);
+  /* ./../lib/standard//string.nit:507 */
   fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
   label1: while(0);
@@ -2606,17 +2823,17 @@ 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 = 509;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_standard___string___Collection___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:512 */
+  /* ./../lib/standard//string.nit:515 */
   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:514 */
+  /* ./../lib/standard//string.nit:517 */
   fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
   goto label2;
   label2: while(0);
@@ -2629,7 +2846,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:513 */
+    /* ./../lib/standard//string.nit:516 */
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
     fra.me.file = LOCATE_standard___string;
     fra.me.line = 0;
@@ -2657,7 +2874,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, 513);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___string, 516);
       }
       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]);
@@ -2673,7 +2890,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 = 517;
+  fra.me.line = 520;
   fra.me.meth = LOCATE_standard___string___Collection___join;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2685,7 +2902,7 @@ 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:520 */
+  /* ./../lib/standard//string.nit:523 */
   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) {
@@ -2698,13 +2915,13 @@ val_t standard___string___Collection___join(val_t p0, val_t p1){
     fra.me.REG[2] = fra.me.REG[2];
     goto label2;
   }
-  /* ./../lib/standard//string.nit:522 */
-  fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
   /* ./../lib/standard//string.nit:525 */
+  fra.me.REG[3] = NEW_Buffer_standard___string___Buffer___init();
+  /* ./../lib/standard//string.nit:528 */
   fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:526 */
+  /* ./../lib/standard//string.nit:529 */
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:527 */
+  /* ./../lib/standard//string.nit:530 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2721,23 +2938,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, 527);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___string, 530);
     }
     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:530 */
+  /* ./../lib/standard//string.nit:533 */
   CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:531 */
+  /* ./../lib/standard//string.nit:534 */
   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:532 */
+      /* ./../lib/standard//string.nit:535 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
-      /* ./../lib/standard//string.nit:533 */
+      /* ./../lib/standard//string.nit:536 */
       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:534 */
+      /* ./../lib/standard//string.nit:537 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -2754,20 +2971,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, 534);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 537);
         }
         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:535 */
+      /* ./../lib/standard//string.nit:538 */
       CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ./../lib/standard//string.nit:531 */
+      /* ./../lib/standard//string.nit:534 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./../lib/standard//string.nit:537 */
+  /* ./../lib/standard//string.nit:540 */
   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;
@@ -2785,7 +3002,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 = 542;
+  fra.me.line = 545;
   fra.me.meth = LOCATE_standard___string___Array___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2793,61 +3010,76 @@ 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:545 */
+  /* ./../lib/standard//string.nit:548 */
   fra.me.REG[1] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./../lib/standard//string.nit:546 */
+  /* ./../lib/standard//string.nit:549 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:548 */
+  /* ./../lib/standard//string.nit:551 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string.nit:548 */
+    /* ./../lib/standard//string.nit:551 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[2] = fra.me.REG[0];
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
-      /* ./../lib/standard//string.nit:550 */
+      /* ./../lib/standard//string.nit:553 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -2864,31 +3096,31 @@ 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, 550);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___string, 553);
         }
         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:551 */
+      /* ./../lib/standard//string.nit:554 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//string.nit:551 */
+      /* ./../lib/standard//string.nit:554 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//string.nit:548 */
+      /* ./../lib/standard//string.nit:551 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string.nit:553 */
+  /* ./../lib/standard//string.nit:556 */
   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];
 }
-val_t standard___string___Map___map_join(val_t p0, val_t p1, val_t p2){
+val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
@@ -2904,8 +3136,8 @@ val_t standard___string___Map___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 = 558;
-  fra.me.meth = LOCATE_standard___string___Map___map_join;
+  fra.me.line = 561;
+  fra.me.meth = LOCATE_standard___string___Map___join;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
   fra.me.REG[0] = NIT_NULL;
@@ -2920,8 +3152,8 @@ val_t standard___string___Map___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:561 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string.nit:564 */
+  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("");
@@ -2933,15 +3165,15 @@ val_t standard___string___Map___map_join(val_t p0, val_t p1, val_t p2){
     fra.me.REG[3] = fra.me.REG[3];
     goto label2;
   }
-  /* ./../lib/standard//string.nit:563 */
-  fra.me.REG[4] = NEW_Buffer_standard___string___Buffer___init();
   /* ./../lib/standard//string.nit:566 */
-  fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___iterator(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:567 */
-  fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:568 */
-  fra.me.REG[6] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = NEW_Buffer_standard___string___Buffer___init();
   /* ./../lib/standard//string.nit:569 */
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___iterator(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string.nit:570 */
+  fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapIterator___key(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string.nit:571 */
+  fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapIterator___item(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string.nit:572 */
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3002,21 +3234,21 @@ val_t standard___string___Map___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:572 */
-  CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:573 */
+  /* ./../lib/standard//string.nit:575 */
+  CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string.nit:576 */
   while(1) {
-    REGB0 = CALL_standard___collection___abstract_collection___Iterator___is_ok(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]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//string.nit:574 */
+      /* ./../lib/standard//string.nit:577 */
       CALL_standard___collection___abstract_collection___Sequence___append(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      /* ./../lib/standard//string.nit:575 */
+      /* ./../lib/standard//string.nit:578 */
       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:576 */
-      fra.me.REG[7] = CALL_standard___collection___abstract_collection___Iterator___item(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./../lib/standard//string.nit:579 */
+      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:577 */
+      /* ./../lib/standard//string.nit:580 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -3077,15 +3309,15 @@ val_t standard___string___Map___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:578 */
-      CALL_standard___collection___abstract_collection___Iterator___next(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./../lib/standard//string.nit:581 */
+      CALL_standard___collection___abstract_collection___MapIterator___next(fra.me.REG[0])(fra.me.REG[0]);
     } else {
-      /* ./../lib/standard//string.nit:573 */
+      /* ./../lib/standard//string.nit:576 */
       goto label11;
     }
   }
   label11: while(0);
-  /* ./../lib/standard//string.nit:580 */
+  /* ./../lib/standard//string.nit:583 */
   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;
@@ -3099,14 +3331,14 @@ 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 = 590;
+  fra.me.line = 593;
   fra.me.meth = LOCATE_standard___string___NativeString_____bra;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:590 */
+  /* ./../lib/standard//string.nit:593 */
   REGB0 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -3118,7 +3350,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 = 591;
+  fra.me.line = 594;
   fra.me.meth = LOCATE_standard___string___NativeString_____braeq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -3126,7 +3358,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:591 */
+  /* ./../lib/standard//string.nit:594 */
   UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]=UNTAG_Char(REGB1);;
   stack_frame_head = fra.me.prev;
   return;
@@ -3139,7 +3371,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 = 592;
+  fra.me.line = 595;
   fra.me.meth = LOCATE_standard___string___NativeString___copy_to;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3150,7 +3382,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:592 */
+  /* ./../lib/standard//string.nit:595 */
   (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;
@@ -3164,41 +3396,41 @@ 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 = 594;
+  fra.me.line = 597;
   fra.me.meth = LOCATE_standard___string___NativeString___cstring_length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:597 */
+  /* ./../lib/standard//string.nit:600 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//string.nit:598 */
+  /* ./../lib/standard//string.nit:601 */
   while(1) {
-    /* ./../lib/standard//string.nit:590 */
+    /* ./../lib/standard//string.nit:593 */
     REGB1 = TAG_Char(UNBOX_NativeString(fra.me.REG[0])[UNTAG_Int(REGB0)]);
-    /* ./../lib/standard//string.nit:598 */
+    /* ./../lib/standard//string.nit:601 */
     REGB2 = TAG_Char('\0');
     REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
     if (UNTAG_Bool(REGB3)) {
     } else {
-      /* ./../lib/standard//kernel.nit:350 */
+      /* ./../lib/standard//kernel.nit:378 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
-      /* ./../lib/standard//string.nit:598 */
+      /* ./../lib/standard//string.nit:601 */
       REGB3 = REGB2;
     }
     REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
     if (UNTAG_Bool(REGB3)) {
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string.nit:598 */
+      /* ./../lib/standard//string.nit:601 */
       REGB0 = REGB3;
     } else {
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string.nit:599 */
+  /* ./../lib/standard//string.nit:602 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -3210,13 +3442,13 @@ 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 = 601;
+  fra.me.line = 604;
   fra.me.meth = LOCATE_standard___string___NativeString___atoi;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:601 */
+  /* ./../lib/standard//string.nit:604 */
   REGB0 = TAG_Int(atoi(UNBOX_NativeString(fra.me.REG[0])));
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -3242,14 +3474,14 @@ 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 = 606;
+  fra.me.line = 609;
   fra.me.meth = LOCATE_standard___string___StringCapable___calloc_string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:606 */
+  /* ./../lib/standard//string.nit:609 */
   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];
@@ -3270,47 +3502,50 @@ void standard___string___StringCapable___init(val_t p0, int* init_table){
   return;
 }
 val_t standard___string___Sys___args(val_t p0){
-  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;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string;
-  fra.me.line = 612;
+  fra.me.line = 615;
   fra.me.meth = LOCATE_standard___string___Sys___args;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:614 */
-  fra.me.REG[1] = ATTR_standard___string___Sys____args_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  /* ./../lib/standard//string.nit:615 */
+  fra.me.REG[1] = fra.me.REG[0];
+  /* ./../lib/standard//string.nit:617 */
+  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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    CALL_standard___string___Sys___init_args(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_standard___string___Sys___init_args(fra.me.REG[1])(fra.me.REG[1]);
   }
-  /* ./../lib/standard//string.nit:615 */
-  fra.me.REG[0] = ATTR_standard___string___Sys____args_cache(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./../lib/standard//string.nit:618 */
+  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, 615);
+    nit_abort("Cast failed", NULL, LOCATE_standard___string, 618);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t standard___string___Sys___program_name(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -3318,13 +3553,13 @@ 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 = 618;
+  fra.me.line = 621;
   fra.me.meth = LOCATE_standard___string___Sys___program_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:621 */
+  /* ./../lib/standard//string.nit:624 */
   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]);
@@ -3341,7 +3576,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 = 624;
+  fra.me.line = 627;
   fra.me.meth = LOCATE_standard___string___Sys___init_args;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3349,40 +3584,45 @@ 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:627 */
+  /* ./../lib/standard//string.nit:630 */
   REGB0 = CALL_standard___string___Sys___native_argc(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//string.nit:628 */
+  /* ./../lib/standard//string.nit:631 */
   REGB1 = TAG_Int(0);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-  /* ./../lib/standard//string.nit:629 */
+  /* ./../lib/standard//string.nit:632 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//string.nit:630 */
+  /* ./../lib/standard//string.nit:633 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//string.nit:630 */
+    /* ./../lib/standard//string.nit:633 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string.nit:631 */
+      /* ./../lib/standard//string.nit:634 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-      /* ./../lib/standard//string.nit:631 */
+      /* ./../lib/standard//string.nit:634 */
       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]);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[2]);
-      /* ./../lib/standard//string.nit:632 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[1])(fra.me.REG[1], REGB2, fra.me.REG[2]);
+      /* ./../lib/standard//string.nit:635 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//string.nit:632 */
+      /* ./../lib/standard//string.nit:635 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//string.nit:630 */
+      /* ./../lib/standard//string.nit:633 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string.nit:634 */
+  /* ./../lib/standard//string.nit:637 */
   ATTR_standard___string___Sys____args_cache(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -3393,13 +3633,13 @@ 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 = 637;
+  fra.me.line = 640;
   fra.me.meth = LOCATE_standard___string___Sys___native_argc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string.nit:637 */
+  /* ./../lib/standard//string.nit:640 */
   REGB0 = Sys_native_argc___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
@@ -3410,14 +3650,14 @@ 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 = 639;
+  fra.me.line = 642;
   fra.me.meth = LOCATE_standard___string___Sys___native_argv;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string.nit:639 */
+  /* ./../lib/standard//string.nit:642 */
   fra.me.REG[0] = Sys_native_argv___out(fra.me.REG[0], REGB0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
index a0464fd..26382e4 100644 (file)
@@ -62,7 +62,7 @@ extern const int SFT_standard___string[];
 #define CALL_standard___string___Int___to_base(recv) ((standard___string___Int___to_base_t)CALL((recv), (SFT_standard___string[12] + 2)))
 #define CALL_standard___string___Float___to_precision(recv) ((standard___string___Float___to_precision_t)CALL((recv), (SFT_standard___string[13] + 0)))
 #define CALL_standard___string___Collection___join(recv) ((standard___string___Collection___join_t)CALL((recv), (SFT_standard___string[14] + 0)))
-#define CALL_standard___string___Map___map_join(recv) ((standard___string___Map___map_join_t)CALL((recv), (SFT_standard___string[15] + 0)))
+#define CALL_standard___string___Map___join(recv) ((standard___string___Map___join_t)CALL((recv), (SFT_standard___string[15] + 0)))
 #define ID_standard___string___NativeString (SFT_standard___string[16])
 #define COLOR_standard___string___NativeString (SFT_standard___string[17])
 #define INIT_TABLE_POS_standard___string___NativeString (SFT_standard___string[18] + 0)
@@ -85,7 +85,7 @@ extern const int SFT_standard___string[];
 static const char * const LOCATE_standard___string___AbstractString___items = "string::AbstractString::items";
 val_t standard___string___AbstractString___items(val_t p0);
 typedef val_t (*standard___string___AbstractString___items_t)(val_t p0);
-static const char * const LOCATE_standard___string___AbstractString_____bra = "string::AbstractString::(abstract_collection::MapRead::[])";
+static const char * const LOCATE_standard___string___AbstractString_____bra = "string::AbstractString::(abstract_collection::SequenceRead::[])";
 val_t standard___string___AbstractString_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___string___AbstractString_____bra_t)(val_t p0, val_t p1);
 static const char * const LOCATE_standard___string___AbstractString___substring = "string::AbstractString::substring";
@@ -160,7 +160,7 @@ typedef val_t (*standard___string___String___to_s_t)(val_t p0);
 static const char * const LOCATE_standard___string___String___hash = "string::String::(hash::Object::hash)";
 val_t standard___string___String___hash(val_t p0);
 typedef val_t (*standard___string___String___hash_t)(val_t p0);
-static const char * const LOCATE_standard___string___Buffer_____braeq = "string::Buffer::(abstract_collection::Map::[]=)";
+static const char * const LOCATE_standard___string___Buffer_____braeq = "string::Buffer::(abstract_collection::Sequence::[]=)";
 void standard___string___Buffer_____braeq(val_t p0, val_t p1, val_t p2);
 typedef void (*standard___string___Buffer_____braeq_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_standard___string___Buffer___add = "string::Buffer::(abstract_collection::SimpleCollection::add)";
@@ -255,9 +255,9 @@ val_t NEW_Array_standard___collection___array___Array___init();
 val_t NEW_Array_standard___collection___array___Array___filled_with(val_t p0, val_t p1);
 val_t NEW_Array_standard___collection___array___Array___with_items(val_t p0);
 val_t NEW_Array_standard___collection___array___Array___with_native(val_t p0, val_t p1);
-static const char * const LOCATE_standard___string___Map___map_join = "string::Map::map_join";
-val_t standard___string___Map___map_join(val_t p0, val_t p1, val_t p2);
-typedef val_t (*standard___string___Map___map_join_t)(val_t p0, val_t p1, val_t p2);
+static const char * const LOCATE_standard___string___Map___join = "string::Map::join";
+val_t standard___string___Map___join(val_t p0, val_t p1, val_t p2);
+typedef val_t (*standard___string___Map___join_t)(val_t p0, val_t p1, val_t p2);
 static const char * const LOCATE_standard___string___NativeString_____bra = "string::NativeString::[]";
 val_t standard___string___NativeString_____bra(val_t p0, val_t p1);
 typedef val_t (*standard___string___NativeString_____bra_t)(val_t p0, val_t p1);
index f05ceac..27c18d5 100644 (file)
@@ -137,7 +137,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, 50);
       }
       REGB1 = CALL_standard___string_search___Match___from(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ./../lib/standard//string_search.nit:51 */
       fra.me.REG[4] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
@@ -158,14 +158,14 @@ val_t standard___string_search___Pattern___split_in(val_t p0, val_t p1){
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
   /* ./../lib/standard//string_search.nit:56 */
   fra.me.REG[1] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
@@ -182,17 +182,17 @@ val_t standard___string_search___BM_Pattern___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 = 67;
+  fra.me.line = 68;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:67 */
+  /* ./../lib/standard//string_search.nit:68 */
   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, 67);
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 68);
   }
   fra.me.REG[0] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
   goto label1;
@@ -213,7 +213,7 @@ val_t standard___string_search___BM_Pattern___search_index_in(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 = 69;
+  fra.me.line = 70;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___search_index_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -223,69 +223,84 @@ val_t standard___string_search___BM_Pattern___search_index_in(val_t p0, val_t p1
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//string_search.nit:72 */
+  /* ./../lib/standard//string_search.nit:73 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:72 */
+  /* ./../lib/standard//string_search.nit:73 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 72);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 73);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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_search.nit:74 */
+  /* ./../lib/standard//string_search.nit:75 */
   REGB2 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 74);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 75);
   }
   REGB2 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:77 */
+  /* ./../lib/standard//string_search.nit:78 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB3 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./../lib/standard//string_search.nit:77 */
+    /* ./../lib/standard//string_search.nit:78 */
     REGB4 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB4));
-    /* ./../lib/standard//string_search.nit:77 */
+    /* ./../lib/standard//string_search.nit:78 */
     if (UNTAG_Bool(REGB4)) {
-      /* ./../lib/standard//string_search.nit:78 */
+      /* ./../lib/standard//string_search.nit:79 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB4 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB4));
-      /* ./../lib/standard//string_search.nit:79 */
+      /* ./../lib/standard//string_search.nit:80 */
       while(1) {
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//string_search.nit:79 */
+        /* ./../lib/standard//string_search.nit:80 */
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0])!=NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
           } else {
-            nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 79);
+            nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 80);
           }
           fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
-          REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
-          /* ./../lib/standard//kernel.nit:218 */
+          REGB3 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
-          /* ./../lib/standard//string_search.nit:79 */
-          REGB5 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB5);
+          /* ./../lib/standard//string_search.nit:80 */
+          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:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB5 = TAG_Bool((REGB3)==(REGB5));
-            /* ./../lib/standard//string_search.nit:79 */
+            /* ./../lib/standard//string_search.nit:80 */
             REGB6 = REGB5;
           }
         } else {
@@ -294,108 +309,128 @@ 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:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB6 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB6));
-          /* ./../lib/standard//string_search.nit:79 */
+          /* ./../lib/standard//string_search.nit:80 */
           REGB4 = REGB6;
         } else {
           goto label1;
         }
       }
       label1: while(0);
-      /* ./../lib/standard//string_search.nit:80 */
+      /* ./../lib/standard//string_search.nit:81 */
       REGB6 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:215 */
+      REGB5 = TAG_Bool(VAL_ISA(REGB6, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB5)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:232 */
       REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
-      /* ./../lib/standard//string_search.nit:80 */
+      /* ./../lib/standard//string_search.nit:81 */
       if (UNTAG_Bool(REGB6)) {
-        /* ./../lib/standard//string_search.nit:81 */
+        /* ./../lib/standard//string_search.nit:82 */
         REGB6 = REGB0;
         goto label2;
       } else {
-        /* ./../lib/standard//string_search.nit:83 */
+        /* ./../lib/standard//string_search.nit:84 */
         REGB5 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 83);
+          nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 84);
         }
         fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         REGB5 = REGB4;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB7 = TAG_Bool(false);
           REGB3 = REGB7;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label3;
         label3: while(0);
-        /* ./../lib/standard//string_search.nit:83 */
+        /* ./../lib/standard//string_search.nit:84 */
         REGB5 = fra.me.REG[2];
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//string_search.nit:84 */
-        REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB3);
+        /* ./../lib/standard//string_search.nit:85 */
+        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:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB3 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
-        /* ./../lib/standard//string_search.nit:84 */
+        /* ./../lib/standard//string_search.nit:85 */
         REGB7 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
         REGB4 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB4));
-        /* ./../lib/standard//kernel.nit:217 */
+        REGB7 = TAG_Bool(VAL_ISA(REGB4, 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:234 */
         REGB7 = TAG_Bool(UNTAG_Int(REGB5)>UNTAG_Int(REGB4));
-        /* ./../lib/standard//string_search.nit:86 */
+        /* ./../lib/standard//string_search.nit:87 */
         if (UNTAG_Bool(REGB7)) {
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
-          /* ./../lib/standard//string_search.nit:87 */
+          /* ./../lib/standard//string_search.nit:88 */
           REGB0 = REGB5;
         } else {
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-          /* ./../lib/standard//string_search.nit:89 */
+          /* ./../lib/standard//string_search.nit:90 */
           REGB0 = REGB4;
         }
       }
     } else {
-      /* ./../lib/standard//string_search.nit:77 */
+      /* ./../lib/standard//string_search.nit:78 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./../lib/standard//string_search.nit:93 */
+  /* ./../lib/standard//string_search.nit:94 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ./../lib/standard//string_search.nit:93 */
+  /* ./../lib/standard//string_search.nit:94 */
   REGB6 = REGB0;
   goto label2;
   label2: while(0);
@@ -406,10 +441,11 @@ val_t standard___string_search___BM_Pattern___search_in(val_t p0, val_t p1, val_
   struct {struct stack_frame_t me; val_t MORE_REG[2];} 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_search;
-  fra.me.line = 96;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___search_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -419,23 +455,28 @@ val_t standard___string_search___BM_Pattern___search_in(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   REGB0 = p2;
-  /* ./../lib/standard//string_search.nit:99 */
-  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:100 */
+  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:101 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:100 */
+  /* ./../lib/standard//string_search.nit:101 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//string_search.nit:101 */
+    /* ./../lib/standard//string_search.nit:102 */
     fra.me.REG[2] = NIT_NULL;
     goto label1;
   } else {
-    /* ./../lib/standard//string_search.nit:103 */
+    /* ./../lib/standard//string_search.nit:104 */
     REGB1 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 103);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 104);
     }
     REGB1 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
     fra.me.REG[1] = NEW_Match_standard___string_search___Match___init(fra.me.REG[1], REGB0, REGB1);
@@ -454,7 +495,7 @@ void standard___string_search___BM_Pattern___init(val_t p0, val_t p1, int* init_
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 107;
+  fra.me.line = 108;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -462,32 +503,32 @@ void standard___string_search___BM_Pattern___init(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//string_search.nit:110 */
+  /* ./../lib/standard//string_search.nit:111 */
   ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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_search.nit:111 */
-  ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]) = REGB0;
   /* ./../lib/standard//string_search.nit:112 */
+  ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//string_search.nit:113 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 112);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 113);
   }
   REGB0 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//string_search.nit:113 */
+  /* ./../lib/standard//string_search.nit:114 */
   fra.me.REG[1] = NEW_ArrayMap_standard___collection___array___ArrayMap___init();
   ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./../lib/standard//string_search.nit:114 */
-  CALL_standard___string_search___BM_Pattern___compute_gs(fra.me.REG[0])(fra.me.REG[0]);
   /* ./../lib/standard//string_search.nit:115 */
+  CALL_standard___string_search___BM_Pattern___compute_gs(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./../lib/standard//string_search.nit:116 */
   CALL_standard___string_search___BM_Pattern___compute_bc(fra.me.REG[0])(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -500,7 +541,7 @@ val_t standard___string_search___BM_Pattern___bc(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 = 124;
+  fra.me.line = 125;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___bc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -508,31 +549,31 @@ val_t standard___string_search___BM_Pattern___bc(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./../lib/standard//string_search.nit:126 */
+  /* ./../lib/standard//string_search.nit:127 */
   REGB1 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 126);
+    nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 127);
   }
   fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0]);
   REGB1 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[1])(fra.me.REG[1], REGB0);
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//string_search.nit:127 */
+    /* ./../lib/standard//string_search.nit:128 */
     REGB1 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 127);
+      nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 128);
     }
     fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0]);
     fra.me.REG[1] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB0);
     REGB0 = fra.me.REG[1];
     goto label1;
   } else {
-    /* ./../lib/standard//string_search.nit:129 */
+    /* ./../lib/standard//string_search.nit:130 */
     REGB1 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 129);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 130);
     }
     REGB1 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
     REGB0 = REGB1;
@@ -552,7 +593,7 @@ void standard___string_search___BM_Pattern___compute_bc(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 = 139;
+  fra.me.line = 140;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___compute_bc;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -560,55 +601,60 @@ void standard___string_search___BM_Pattern___compute_bc(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:141 */
+  /* ./../lib/standard//string_search.nit:142 */
   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, 141);
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 142);
   }
   fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:142 */
+  /* ./../lib/standard//string_search.nit:143 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 142);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 143);
   }
   REGB0 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:143 */
-  REGB1 = TAG_Int(0);
   /* ./../lib/standard//string_search.nit:144 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//string_search.nit:145 */
   while(1) {
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//string_search.nit:144 */
+    /* ./../lib/standard//string_search.nit:145 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string_search.nit:145 */
+      /* ./../lib/standard//string_search.nit:146 */
       REGB2 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 145);
+        nit_abort("Uninitialized attribute %s", "_bc_table", LOCATE_standard___string_search, 146);
       }
       fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____bc_table(fra.me.REG[0]);
-      REGB2 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      /* ./../lib/standard//kernel.nit:220 */
+      REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//string_search.nit:145 */
+      /* ./../lib/standard//string_search.nit:146 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       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 */
+      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
+      /* ./../lib/standard//string_search.nit:147 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ./../lib/standard//string_search.nit:146 */
+      /* ./../lib/standard//string_search.nit:147 */
       REGB1 = REGB4;
     } else {
-      /* ./../lib/standard//string_search.nit:144 */
+      /* ./../lib/standard//string_search.nit:145 */
       goto label1;
     }
   }
@@ -628,7 +674,7 @@ val_t standard___string_search___BM_Pattern___suffixes(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 = 150;
+  fra.me.line = 151;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___suffixes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -636,178 +682,223 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:152 */
+  /* ./../lib/standard//string_search.nit:153 */
   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, 152);
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 153);
   }
   fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:153 */
+  /* ./../lib/standard//string_search.nit:154 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 153);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 154);
   }
   REGB0 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:154 */
+  /* ./../lib/standard//string_search.nit:155 */
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___filled_with(REGB0, REGB0);
-  /* ./../lib/standard//string_search.nit:156 */
-  REGB1 = TAG_Int(0);
   /* ./../lib/standard//string_search.nit:157 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//string_search.nit:158 */
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//string_search.nit:158 */
+  /* ./../lib/standard//string_search.nit:159 */
   REGB3 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-  /* ./../lib/standard//string_search.nit:159 */
+  /* ./../lib/standard//string_search.nit:160 */
   while(1) {
     REGB4 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-    /* ./../lib/standard//string_search.nit:159 */
+    /* ./../lib/standard//string_search.nit:160 */
     if (UNTAG_Bool(REGB4)) {
-      /* ./../lib/standard//kernel.nit:217 */
+      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:234 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB2));
-      /* ./../lib/standard//string_search.nit:160 */
+      /* ./../lib/standard//string_search.nit:161 */
       if (UNTAG_Bool(REGB4)) {
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//string_search.nit:160 */
+        /* ./../lib/standard//string_search.nit:161 */
         REGB5 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB5 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB5));
         REGB5 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[2] = fra.me.REG[0];
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB5)>=UNTAG_Int(REGB4));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB6 = TAG_Bool(false);
           REGB4 = REGB6;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB5)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label1;
         label1: while(0);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB2));
-        /* ./../lib/standard//string_search.nit:160 */
+        /* ./../lib/standard//string_search.nit:161 */
         REGB4 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___string_search, 160);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___string_search, 161);
         }
-        /* ./../lib/standard//kernel.nit:215 */
+        REGB4 = TAG_Bool(VAL_ISA(REGB5, VTCOLOR_standard___kernel___Comparable___OTHER(fra.me.REG[2]), VTID_standard___kernel___Comparable___OTHER(fra.me.REG[2]))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
         REGB5 = TAG_Bool(UNTAG_Int(fra.me.REG[2])<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//string_search.nit:160 */
+        /* ./../lib/standard//string_search.nit:161 */
         REGB4 = TAG_Bool(false);
         REGB5 = REGB4;
       }
       if (UNTAG_Bool(REGB5)) {
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB5 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-        /* ./../lib/standard//string_search.nit:161 */
+        /* ./../lib/standard//string_search.nit:162 */
         REGB4 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB4 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB4));
         REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[2] = fra.me.REG[0];
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB6 = TAG_Bool(false);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label2;
         label2: while(0);
-        /* ./../lib/standard//string_search.nit:161 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
+        /* ./../lib/standard//string_search.nit:162 */
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, fra.me.REG[2]);
       } else {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-        /* ./../lib/standard//string_search.nit:163 */
+        /* ./../lib/standard//string_search.nit:164 */
         if (UNTAG_Bool(REGB4)) {
           REGB2 = REGB3;
         }
-        /* ./../lib/standard//string_search.nit:164 */
-        REGB1 = REGB3;
         /* ./../lib/standard//string_search.nit:165 */
+        REGB1 = REGB3;
+        /* ./../lib/standard//string_search.nit:166 */
         while(1) {
           REGB4 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB5)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:233 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
-          /* ./../lib/standard//string_search.nit:165 */
+          /* ./../lib/standard//string_search.nit:166 */
           if (UNTAG_Bool(REGB4)) {
-            REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB2);
-            /* ./../lib/standard//kernel.nit:218 */
+            REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB2);
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-            /* ./../lib/standard//string_search.nit:165 */
+            /* ./../lib/standard//string_search.nit:166 */
             REGB6 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:220 */
+            /* ./../lib/standard//kernel.nit:237 */
             REGB6 = TAG_Int(UNTAG_Int(REGB5)-UNTAG_Int(REGB6));
             REGB6 = TAG_Int(UNTAG_Int(REGB6)-UNTAG_Int(REGB1));
-            /* ./../lib/standard//string_search.nit:165 */
-            REGB6 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB6);
+            /* ./../lib/standard//string_search.nit:166 */
+            REGB6 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB6);
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB6));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ./../lib/standard//kernel.nit:350 */
+              /* ./../lib/standard//kernel.nit:378 */
               REGB6 = TAG_Bool((REGB4)==(REGB6));
-              /* ./../lib/standard//string_search.nit:165 */
+              /* ./../lib/standard//string_search.nit:166 */
               REGB5 = REGB6;
             }
           } else {
@@ -816,33 +907,33 @@ val_t standard___string_search___BM_Pattern___suffixes(val_t p0){
           }
           if (UNTAG_Bool(REGB5)) {
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:220 */
+            /* ./../lib/standard//kernel.nit:237 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB5));
-            /* ./../lib/standard//string_search.nit:165 */
+            /* ./../lib/standard//string_search.nit:166 */
             REGB2 = REGB5;
           } else {
             goto label3;
           }
         }
         label3: while(0);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB5 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-        /* ./../lib/standard//string_search.nit:166 */
-        CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB5);
+        /* ./../lib/standard//string_search.nit:167 */
+        CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[0])(fra.me.REG[0], REGB3, REGB5);
       }
-      /* ./../lib/standard//string_search.nit:168 */
+      /* ./../lib/standard//string_search.nit:169 */
       REGB5 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
-      /* ./../lib/standard//string_search.nit:168 */
+      /* ./../lib/standard//string_search.nit:169 */
       REGB3 = REGB5;
     } else {
-      /* ./../lib/standard//string_search.nit:159 */
+      /* ./../lib/standard//string_search.nit:160 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./../lib/standard//string_search.nit:170 */
+  /* ./../lib/standard//string_search.nit:171 */
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
@@ -860,7 +951,7 @@ void standard___string_search___BM_Pattern___compute_gs(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 = 173;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_standard___string_search___BM_Pattern___compute_gs;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -869,125 +960,145 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:175 */
+  /* ./../lib/standard//string_search.nit:176 */
   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, 175);
+    nit_abort("Uninitialized attribute %s", "_motif", LOCATE_standard___string_search, 176);
   }
   fra.me.REG[1] = ATTR_standard___string_search___BM_Pattern____motif(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:176 */
+  /* ./../lib/standard//string_search.nit:177 */
   REGB0 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 176);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___string_search, 177);
   }
   REGB0 = ATTR_standard___string_search___BM_Pattern____length(fra.me.REG[0]);
-  /* ./../lib/standard//string_search.nit:177 */
-  fra.me.REG[1] = CALL_standard___string_search___BM_Pattern___suffixes(fra.me.REG[0])(fra.me.REG[0]);
   /* ./../lib/standard//string_search.nit:178 */
-  REGB1 = TAG_Int(0);
+  fra.me.REG[1] = CALL_standard___string_search___BM_Pattern___suffixes(fra.me.REG[0])(fra.me.REG[0]);
   /* ./../lib/standard//string_search.nit:179 */
+  REGB1 = TAG_Int(0);
+  /* ./../lib/standard//string_search.nit:180 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//string_search.nit:179 */
+    /* ./../lib/standard//string_search.nit:180 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string_search.nit:180 */
+      /* ./../lib/standard//string_search.nit:181 */
       REGB2 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 180);
+        nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 181);
       }
       fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB1, REGB0);
-      /* ./../lib/standard//string_search.nit:181 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB1, REGB0);
+      /* ./../lib/standard//string_search.nit:182 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//string_search.nit:181 */
+      /* ./../lib/standard//string_search.nit:182 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//string_search.nit:179 */
+      /* ./../lib/standard//string_search.nit:180 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string_search.nit:183 */
-  REGB2 = TAG_Int(0);
   /* ./../lib/standard//string_search.nit:184 */
+  REGB2 = TAG_Int(0);
+  /* ./../lib/standard//string_search.nit:185 */
   REGB3 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB3 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB3));
-  /* ./../lib/standard//string_search.nit:184 */
-  REGB1 = REGB3;
   /* ./../lib/standard//string_search.nit:185 */
+  REGB1 = REGB3;
+  /* ./../lib/standard//string_search.nit:186 */
   while(1) {
     REGB3 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:219 */
+    /* ./../lib/standard//kernel.nit:236 */
     REGB3 = TAG_Int(-UNTAG_Int(REGB3));
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
-    /* ./../lib/standard//string_search.nit:185 */
+    /* ./../lib/standard//string_search.nit:186 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string_search.nit:186 */
+      /* ./../lib/standard//string_search.nit:187 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB3 = TAG_Int(-UNTAG_Int(REGB3));
-      /* ./../lib/standard//string_search.nit:186 */
+      /* ./../lib/standard//string_search.nit:187 */
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB3 = TAG_Bool((REGB1)==(REGB3));
-        /* ./../lib/standard//string_search.nit:186 */
+        /* ./../lib/standard//string_search.nit:187 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
         REGB4 = TAG_Bool(true);
       } else {
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[2] = fra.me.REG[1];
         REGB3 = REGB1;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB5));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB6 = TAG_Bool(false);
           REGB5 = REGB6;
         }
         if (UNTAG_Bool(REGB5)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label2;
         label2: while(0);
-        /* ./../lib/standard//string_search.nit:186 */
+        /* ./../lib/standard//string_search.nit:187 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//string_search.nit:186 */
+        /* ./../lib/standard//string_search.nit:187 */
         REGB5 = TAG_Bool(IS_EQUAL_ON(REGB3,fra.me.REG[2]));
         if (UNTAG_Bool(REGB5)) {
         } else {
@@ -996,69 +1107,84 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
             REGB6 = TAG_Bool(false);
             REGB5 = REGB6;
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ./../lib/standard//kernel.nit:227 */
             REGB3 = TAG_Bool((fra.me.REG[2])==(REGB3));
-            /* ./../lib/standard//string_search.nit:186 */
+            /* ./../lib/standard//string_search.nit:187 */
             REGB5 = REGB3;
           }
         }
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* ./../lib/standard//string_search.nit:187 */
+        /* ./../lib/standard//string_search.nit:188 */
         while(1) {
           REGB4 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
           REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB5 = TAG_Bool(VAL_ISA(REGB4, VTCOLOR_standard___kernel___Comparable___OTHER(REGB2), VTID_standard___kernel___Comparable___OTHER(REGB2))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB5)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB4));
-          /* ./../lib/standard//string_search.nit:187 */
+          /* ./../lib/standard//string_search.nit:188 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./../lib/standard//string_search.nit:188 */
+            /* ./../lib/standard//string_search.nit:189 */
             REGB4 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 188);
+              nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 189);
             }
             fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             REGB4 = REGB2;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB5 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB3 = TAG_Bool(false);
               REGB5 = REGB3;
             }
             if (UNTAG_Bool(REGB5)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB4)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label3;
             label3: while(0);
-            /* ./../lib/standard//string_search.nit:188 */
+            /* ./../lib/standard//string_search.nit:189 */
             REGB4 = TAG_Bool(IS_EQUAL_ON(REGB0,fra.me.REG[2]));
             if (UNTAG_Bool(REGB4)) {
             } else {
@@ -1067,9 +1193,9 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
                REGB5 = TAG_Bool(false);
                REGB4 = REGB5;
               } else {
-               /* ./../lib/standard//kernel.nit:210 */
+               /* ./../lib/standard//kernel.nit:227 */
                REGB5 = TAG_Bool((fra.me.REG[2])==(REGB0));
-               /* ./../lib/standard//string_search.nit:188 */
+               /* ./../lib/standard//string_search.nit:189 */
                REGB4 = REGB5;
               }
             }
@@ -1077,117 +1203,132 @@ void standard___string_search___BM_Pattern___compute_gs(val_t p0){
               REGB4 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 188);
+               nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 189);
               }
               fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
               REGB4 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:220 */
+              /* ./../lib/standard//kernel.nit:237 */
               REGB4 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB4));
               REGB4 = TAG_Int(UNTAG_Int(REGB4)-UNTAG_Int(REGB1));
-              /* ./../lib/standard//string_search.nit:188 */
-              CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
+              /* ./../lib/standard//string_search.nit:189 */
+              CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
             }
-            /* ./../lib/standard//string_search.nit:189 */
+            /* ./../lib/standard//string_search.nit:190 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//string_search.nit:189 */
+            /* ./../lib/standard//string_search.nit:190 */
             REGB2 = REGB4;
           } else {
-            /* ./../lib/standard//string_search.nit:187 */
+            /* ./../lib/standard//string_search.nit:188 */
             goto label4;
           }
         }
         label4: while(0);
       }
-      /* ./../lib/standard//string_search.nit:192 */
+      /* ./../lib/standard//string_search.nit:193 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB4));
-      /* ./../lib/standard//string_search.nit:192 */
+      /* ./../lib/standard//string_search.nit:193 */
       REGB1 = REGB4;
     } else {
-      /* ./../lib/standard//string_search.nit:185 */
+      /* ./../lib/standard//string_search.nit:186 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./../lib/standard//string_search.nit:194 */
+  /* ./../lib/standard//string_search.nit:195 */
   REGB2 = TAG_Int(0);
   REGB1 = REGB2;
-  /* ./../lib/standard//string_search.nit:195 */
+  /* ./../lib/standard//string_search.nit:196 */
   while(1) {
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:220 */
+    /* ./../lib/standard//kernel.nit:237 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//string_search.nit:195 */
+    /* ./../lib/standard//string_search.nit:196 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//string_search.nit:196 */
+      /* ./../lib/standard//string_search.nit:197 */
       REGB2 = TAG_Bool(ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0])!=NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 196);
+        nit_abort("Uninitialized attribute %s", "_gs", LOCATE_standard___string_search, 197);
       }
       fra.me.REG[2] = ATTR_standard___string_search___BM_Pattern____gs(fra.me.REG[0]);
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[3] = fra.me.REG[1];
       REGB4 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB5 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Bool(false);
         REGB5 = REGB3;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB4)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label6;
       label6: while(0);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB2 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(fra.me.REG[3]));
-      /* ./../lib/standard//string_search.nit:196 */
+      /* ./../lib/standard//string_search.nit:197 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       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___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
       /* ./../lib/standard//string_search.nit:197 */
+      CALL_standard___collection___abstract_collection___Sequence_____braeq(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB4);
+      /* ./../lib/standard//string_search.nit:198 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-      /* ./../lib/standard//string_search.nit:197 */
+      /* ./../lib/standard//string_search.nit:198 */
       REGB1 = REGB4;
     } else {
-      /* ./../lib/standard//string_search.nit:195 */
+      /* ./../lib/standard//string_search.nit:196 */
       goto label7;
     }
   }
@@ -1201,17 +1342,17 @@ 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 = 205;
   fra.me.meth = LOCATE_standard___string_search___Match___string;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:204 */
+  /* ./../lib/standard//string_search.nit:205 */
   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, 205);
   }
   fra.me.REG[0] = ATTR_standard___string_search___Match____string(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1223,17 +1364,17 @@ 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 = 208;
   fra.me.meth = LOCATE_standard___string_search___Match___from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:207 */
+  /* ./../lib/standard//string_search.nit:208 */
   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, 208);
   }
   REGB0 = ATTR_standard___string_search___Match____from(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1245,17 +1386,17 @@ 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 = 211;
   fra.me.meth = LOCATE_standard___string_search___Match___length;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:210 */
+  /* ./../lib/standard//string_search.nit:211 */
   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, 211);
   }
   REGB0 = ATTR_standard___string_search___Match____length(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1268,28 +1409,28 @@ 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 = 214;
   fra.me.meth = LOCATE_standard___string_search___Match___after;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:215 */
+  /* ./../lib/standard//string_search.nit:216 */
   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, 216);
   }
   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, 216);
   }
   REGB1 = ATTR_standard___string_search___Match____length(fra.me.REG[0]);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:215 */
+  /* ./../lib/standard//string_search.nit:216 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -1302,30 +1443,30 @@ 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 = 218;
   fra.me.meth = LOCATE_standard___string_search___Match___to_s;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   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:219 */
   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, 219);
   }
   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, 219);
   }
   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, 219);
   }
   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);
@@ -1341,11 +1482,12 @@ void standard___string_search___Match___init(val_t p0, val_t p1, val_t p2, val_t
   val_t REGB1;
   val_t REGB2;
   val_t REGB3;
+  val_t REGB4;
   val_t tmp;
   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 = 221;
   fra.me.meth = LOCATE_standard___string_search___Match___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1355,45 +1497,60 @@ 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:224 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-  /* ./../lib/standard//string_search.nit:223 */
+  /* ./../lib/standard//string_search.nit:224 */
   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, 224);
   }
-  /* ./../lib/standard//string_search.nit:224 */
+  /* ./../lib/standard//string_search.nit:225 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-  /* ./../lib/standard//string_search.nit:224 */
+  /* ./../lib/standard//string_search.nit:225 */
   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, 225);
   }
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:214 */
+  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:231 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)<=UNTAG_Int(REGB3));
-  /* ./../lib/standard//string_search.nit:225 */
+  /* ./../lib/standard//string_search.nit:226 */
   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, 226);
   }
-  /* ./../lib/standard//string_search.nit:226 */
-  ATTR_standard___string_search___Match____string(fra.me.REG[0]) = fra.me.REG[1];
   /* ./../lib/standard//string_search.nit:227 */
-  ATTR_standard___string_search___Match____from(fra.me.REG[0]) = REGB0;
+  ATTR_standard___string_search___Match____string(fra.me.REG[0]) = fra.me.REG[1];
   /* ./../lib/standard//string_search.nit:228 */
+  ATTR_standard___string_search___Match____from(fra.me.REG[0]) = REGB0;
+  /* ./../lib/standard//string_search.nit:229 */
   ATTR_standard___string_search___Match____length(fra.me.REG[0]) = REGB1;
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1409,7 +1566,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 = 234;
+  fra.me.line = 236;
   fra.me.meth = LOCATE_standard___string_search___Char___search_index_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
@@ -1417,50 +1574,55 @@ val_t standard___string_search___Char___search_index_in(val_t p0, val_t p1, val_
   REGB0 = p0;
   fra.me.REG[0] = p1;
   REGB1 = p2;
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:237 */
+  /* ./../lib/standard//string_search.nit:239 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//string_search.nit:237 */
+    /* ./../lib/standard//string_search.nit:239 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./../lib/standard//string_search.nit:238 */
-      REGB3 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+      /* ./../lib/standard//string_search.nit:240 */
+      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:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB3 = TAG_Bool((REGB3)==(REGB0));
-        /* ./../lib/standard//string_search.nit:238 */
+        /* ./../lib/standard//string_search.nit:240 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
         REGB4 = REGB1;
         goto label1;
       }
-      /* ./../lib/standard//string_search.nit:239 */
+      /* ./../lib/standard//string_search.nit:241 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string_search.nit:239 */
+      /* ./../lib/standard//string_search.nit:241 */
       REGB1 = REGB3;
     } else {
-      /* ./../lib/standard//string_search.nit:237 */
+      /* ./../lib/standard//string_search.nit:239 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./../lib/standard//string_search.nit:241 */
+  /* ./../lib/standard//string_search.nit:243 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB1 = TAG_Int(-UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:241 */
+  /* ./../lib/standard//string_search.nit:243 */
   REGB4 = REGB1;
   goto label1;
   label1: while(0);
@@ -1471,10 +1633,11 @@ val_t standard___string_search___Char___search_in(val_t p0, val_t p1, val_t p2){
   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_search;
-  fra.me.line = 244;
+  fra.me.line = 246;
   fra.me.meth = LOCATE_standard___string_search___Char___search_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1483,19 +1646,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:246 */
+  /* ./../lib/standard//string_search.nit:248 */
   REGB1 = CALL_standard___string_search___Pattern___search_index_in(REGB0)(REGB0, fra.me.REG[0], REGB1);
-  /* ./../lib/standard//string_search.nit:247 */
+  /* ./../lib/standard//string_search.nit:249 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-  /* ./../lib/standard//string_search.nit:247 */
+  /* ./../lib/standard//string_search.nit:249 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./../lib/standard//string_search.nit:248 */
+    /* ./../lib/standard//string_search.nit:250 */
     fra.me.REG[1] = NIT_NULL;
     goto label1;
   } else {
-    /* ./../lib/standard//string_search.nit:250 */
+    /* ./../lib/standard//string_search.nit:252 */
     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];
@@ -1516,7 +1684,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 = 257;
+  fra.me.line = 260;
   fra.me.meth = LOCATE_standard___string_search___String___search_index_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1525,69 +1693,84 @@ 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:259 */
+  /* ./../lib/standard//string_search.nit:262 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:259 */
+  /* ./../lib/standard//string_search.nit:262 */
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 259);
+    nit_abort("Assert failed", NULL, LOCATE_standard___string_search, 262);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./../lib/standard//string_search.nit:260 */
+  /* ./../lib/standard//string_search.nit:263 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:261 */
+  /* ./../lib/standard//string_search.nit:264 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//string_search.nit:261 */
+    /* ./../lib/standard//string_search.nit:264 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:262 */
+      /* ./../lib/standard//string_search.nit:265 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB3));
-      /* ./../lib/standard//string_search.nit:263 */
+      /* ./../lib/standard//string_search.nit:266 */
       while(1) {
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB2));
-        /* ./../lib/standard//string_search.nit:263 */
+        /* ./../lib/standard//string_search.nit:266 */
         if (UNTAG_Bool(REGB2)) {
-          REGB2 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
-          /* ./../lib/standard//kernel.nit:218 */
+          REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB3);
+          /* ./../lib/standard//kernel.nit:235 */
           REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB0));
-          /* ./../lib/standard//string_search.nit:263 */
-          REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB4);
+          /* ./../lib/standard//string_search.nit:266 */
+          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:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB4 = TAG_Bool((REGB2)==(REGB4));
-            /* ./../lib/standard//string_search.nit:263 */
+            /* ./../lib/standard//string_search.nit:266 */
             REGB5 = REGB4;
           }
         } else {
@@ -1596,41 +1779,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:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB5 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB5));
-          /* ./../lib/standard//string_search.nit:263 */
+          /* ./../lib/standard//string_search.nit:266 */
           REGB3 = REGB5;
         } else {
           goto label1;
         }
       }
       label1: while(0);
-      /* ./../lib/standard//string_search.nit:265 */
+      /* ./../lib/standard//string_search.nit:268 */
       REGB5 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB5));
-      /* ./../lib/standard//string_search.nit:265 */
+      /* ./../lib/standard//string_search.nit:268 */
       if (UNTAG_Bool(REGB5)) {
         REGB5 = REGB0;
         goto label2;
       }
-      /* ./../lib/standard//string_search.nit:267 */
+      /* ./../lib/standard//string_search.nit:270 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//string_search.nit:267 */
+      /* ./../lib/standard//string_search.nit:270 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//string_search.nit:261 */
+      /* ./../lib/standard//string_search.nit:264 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./../lib/standard//string_search.nit:269 */
+  /* ./../lib/standard//string_search.nit:272 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:219 */
+  /* ./../lib/standard//kernel.nit:236 */
   REGB0 = TAG_Int(-UNTAG_Int(REGB0));
-  /* ./../lib/standard//string_search.nit:269 */
+  /* ./../lib/standard//string_search.nit:272 */
   REGB5 = REGB0;
   goto label2;
   label2: while(0);
@@ -1641,10 +1829,11 @@ val_t standard___string_search___String___search_in(val_t p0, val_t p1, val_t p2
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 272;
+  fra.me.line = 275;
   fra.me.meth = LOCATE_standard___string_search___String___search_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1654,26 +1843,31 @@ 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:274 */
+  /* ./../lib/standard//string_search.nit:277 */
   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:275 */
+  /* ./../lib/standard//string_search.nit:278 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-  /* ./../lib/standard//string_search.nit:275 */
+  /* ./../lib/standard//string_search.nit:278 */
   if (UNTAG_Bool(REGB1)) {
-    /* ./../lib/standard//string_search.nit:276 */
+    /* ./../lib/standard//string_search.nit:279 */
     fra.me.REG[2] = NIT_NULL;
     goto label1;
   } else {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:278 */
+    /* ./../lib/standard//string_search.nit:281 */
     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;
@@ -1688,7 +1882,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 = 282;
+  fra.me.line = 285;
   fra.me.meth = LOCATE_standard___string_search___String___search;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1696,7 +1890,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:283 */
+  /* ./../lib/standard//string_search.nit:286 */
   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;
@@ -1710,7 +1904,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 = 285;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_standard___string_search___String___search_from;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1719,7 +1913,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:288 */
+  /* ./../lib/standard//string_search.nit:291 */
   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);
@@ -1731,7 +1925,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 = 290;
+  fra.me.line = 293;
   fra.me.meth = LOCATE_standard___string_search___String___search_all;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1739,7 +1933,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:297 */
+  /* ./../lib/standard//string_search.nit:300 */
   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);
@@ -1750,10 +1944,11 @@ val_t standard___string_search___String___split_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 REGB2;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_standard___string_search;
-  fra.me.line = 299;
+  fra.me.line = 302;
   fra.me.meth = LOCATE_standard___string_search___String___split_with;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1763,64 +1958,69 @@ val_t standard___string_search___String___split_with(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:303 */
+  /* ./../lib/standard//string_search.nit:306 */
   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:23 */
+  /* ./../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, 23);
+    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:304 */
+  /* ./../lib/standard//string_search.nit:307 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//string_search.nit:305 */
+      /* ./../lib/standard//string_search.nit:308 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//string_search.nit:306 */
+  /* ./../lib/standard//string_search.nit:309 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -1832,13 +2032,13 @@ val_t standard___string_search___String___split(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 = 309;
+  fra.me.line = 312;
   fra.me.meth = LOCATE_standard___string_search___String___split;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//string_search.nit:311 */
+  /* ./../lib/standard//string_search.nit:314 */
   REGB0 = TAG_Char('\n');
   fra.me.REG[0] = CALL_standard___string_search___String___split_with(fra.me.REG[0])(fra.me.REG[0], REGB0);
   goto label1;
@@ -1846,3 +2046,114 @@ val_t standard___string_search___String___split(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+val_t standard___string_search___String___replace(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_standard___string_search;
+  fra.me.line = 316;
+  fra.me.meth = LOCATE_standard___string_search___String___replace;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./../lib/standard//string_search.nit:322 */
+  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;
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[2];
+}
+val_t standard___string_search___String___html_escape(val_t p0){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t tmp;
+    static val_t once_value_1; /* Once value */
+    static val_t once_value_2; /* Once value */
+    static val_t once_value_3; /* Once value */
+    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 = 325;
+  fra.me.meth = LOCATE_standard___string_search___String___html_escape;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./../lib/standard//string_search.nit:331 */
+  REGB0 = TAG_Char('&');
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Char('&');
+    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);
+      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___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 */
+  REGB0 = TAG_Char('<');
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Char('<');
+    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);
+      once_value_2 = fra.me.REG[1];
+      register_static_object(&once_value_2);
+    } else fra.me.REG[1] = once_value_2;
+    fra.me.REG[1] = fra.me.REG[1];
+    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 */
+  REGB0 = TAG_Char('>');
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], REGB0);
+  if (UNTAG_Bool(REGB0)) {
+    REGB0 = TAG_Char('>');
+    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);
+      once_value_3 = fra.me.REG[1];
+      register_static_object(&once_value_3);
+    } else fra.me.REG[1] = once_value_3;
+    fra.me.REG[1] = fra.me.REG[1];
+    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: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)) {
+    REGB0 = TAG_Char('"');
+    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);
+      once_value_4 = fra.me.REG[1];
+      register_static_object(&once_value_4);
+    } else fra.me.REG[1] = once_value_4;
+    fra.me.REG[1] = fra.me.REG[1];
+    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:335 */
+  goto label5;
+  label5: while(0);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
index 6ff9cf1..4101f8a 100644 (file)
@@ -46,6 +46,8 @@ extern const int SFT_standard___string_search[];
 #define CALL_standard___string_search___String___search_all(recv) ((standard___string_search___String___search_all_t)CALL((recv), (SFT_standard___string_search[11] + 2)))
 #define CALL_standard___string_search___String___split_with(recv) ((standard___string_search___String___split_with_t)CALL((recv), (SFT_standard___string_search[11] + 3)))
 #define CALL_standard___string_search___String___split(recv) ((standard___string_search___String___split_t)CALL((recv), (SFT_standard___string_search[11] + 4)))
+#define CALL_standard___string_search___String___replace(recv) ((standard___string_search___String___replace_t)CALL((recv), (SFT_standard___string_search[11] + 5)))
+#define CALL_standard___string_search___String___html_escape(recv) ((standard___string_search___String___html_escape_t)CALL((recv), (SFT_standard___string_search[11] + 6)))
 static const char * const LOCATE_standard___string_search___Pattern___search_index_in = "string_search::Pattern::search_index_in";
 val_t standard___string_search___Pattern___search_index_in(val_t p0, val_t p1, val_t p2);
 typedef val_t (*standard___string_search___Pattern___search_index_in_t)(val_t p0, val_t p1, val_t p2);
@@ -129,6 +131,12 @@ typedef val_t (*standard___string_search___String___split_with_t)(val_t p0, val_
 static const char * const LOCATE_standard___string_search___String___split = "string_search::String::split";
 val_t standard___string_search___String___split(val_t p0);
 typedef val_t (*standard___string_search___String___split_t)(val_t p0);
+static const char * const LOCATE_standard___string_search___String___replace = "string_search::String::replace";
+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);
+static const char * const LOCATE_standard___string_search___String___html_escape = "string_search::String::html_escape";
+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);
 #endif
index 5754c0f..0a90cfe 100644 (file)
@@ -6,13 +6,13 @@ 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 = 18;
+  fra.me.line = 19;
   fra.me.meth = LOCATE_standard___time___Object___get_time;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./../lib/standard//time.nit:18 */
+  /* ./../lib/standard//time.nit:19 */
   REGB0 = Object_get_time___out(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
index ec4cb7d..820d6d1 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_FDStream{
 } FDStream;
 #endif
 
-#include "stream_nit.h"
+#include ".././../lib/standard//stream_nit.h"
 
 /* out/indirect function for stream::FDStream::native_close */
 val_t FDStream_native_close___out( val_t recv, val_t i );
index bba40ab..de9ad11 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_Sys{
 } Sys;
 #endif
 
-#include "string_nit.h"
+#include ".././../lib/standard//string_nit.h"
 
 /* out/indirect function for string::Sys::native_argc */
 val_t Sys_native_argc___out( val_t recv );
index 95c8d72..056cc08 100644 (file)
@@ -28,9 +28,10 @@ val_t syntax___SrcModuleLoader___file_type(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4, val_t p5){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_4; /* Once value */
     static val_t once_value_5; /* Once value */
@@ -40,7 +41,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
   fra.me.line = 33;
   fra.me.meth = LOCATE_syntax___SrcModuleLoader___parse_file;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -48,6 +49,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
@@ -55,75 +57,80 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
   fra.me.REG[4] = p4;
   fra.me.REG[5] = p5;
   /* ./syntax//syntax.nit:35 */
-  fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
   /* ./syntax//syntax.nit:35 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./syntax//syntax.nit:35 */
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     REGB1 = TAG_Int(0);
-    REGB1 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[0])(fra.me.REG[0], REGB1);
+    REGB1 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB1);
     REGB1 = CALL_standard___kernel___Char___is_lower(REGB1)(REGB1);
   } else {
     REGB0 = TAG_Bool(false);
     REGB1 = REGB0;
   }
-  fra.me.REG[0] = REGB1;
+  fra.me.REG[6] = REGB1;
   /* ./syntax//syntax.nit:36 */
-  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_syntax___SrcModuleLoader___parse_file_1));
+  fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_syntax___SrcModuleLoader___parse_file_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
   label3: while(0);
   /* ./syntax//syntax.nit:41 */
-  REGB1 = TAG_Bool(!UNTAG_Bool(fra.me.REG[0]));
+  REGB1 = TAG_Bool(!UNTAG_Bool(fra.me.REG[6]));
   if (UNTAG_Bool(REGB1)) {
     /* ./syntax//syntax.nit:42 */
     REGB1 = TAG_Int(5);
-    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_4) {
-      fra.me.REG[6] = BOX_NativeString("");
+      fra.me.REG[7] = BOX_NativeString("");
       REGB1 = TAG_Int(0);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_4 = fra.me.REG[6];
+      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      once_value_4 = fra.me.REG[7];
       register_static_object(&once_value_4);
-    } else fra.me.REG[6] = once_value_4;
-    fra.me.REG[6] = fra.me.REG[6];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+    } else fra.me.REG[7] = once_value_4;
+    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]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
     if (!once_value_5) {
-      fra.me.REG[6] = BOX_NativeString(": Error module name \"");
+      fra.me.REG[7] = BOX_NativeString(": Error module name \"");
       REGB1 = TAG_Int(21);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_5 = fra.me.REG[6];
+      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      once_value_5 = fra.me.REG[7];
       register_static_object(&once_value_5);
-    } else fra.me.REG[6] = once_value_5;
-    fra.me.REG[6] = fra.me.REG[6];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-    fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+    } else fra.me.REG[7] = once_value_5;
+    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]);
+    fra.me.REG[7] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
     if (!once_value_6) {
-      fra.me.REG[6] = BOX_NativeString("\", must start with a lower case letter and contain only letters, digits and '_'.");
+      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[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
-      once_value_6 = fra.me.REG[6];
+      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
+      once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
-    } else fra.me.REG[6] = once_value_6;
-    fra.me.REG[6] = fra.me.REG[6];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
-    fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_mmloader___ToolContext___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[0]);
+    } else fra.me.REG[7] = once_value_6;
+    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]);
+    fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_mmloader___ToolContext___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
   }
   /* ./syntax//syntax.nit:45 */
   fra.me.REG[2] = NEW_SourceFile_location___SourceFile___init(fra.me.REG[3], fra.me.REG[2]);
@@ -134,32 +141,32 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
   /* ./syntax//syntax.nit:48 */
   fra.me.REG[3] = CALL_parser___Parser___parse(fra.me.REG[3])(fra.me.REG[3]);
   /* ./syntax//syntax.nit:49 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___Start___n_base(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  fra.me.REG[6] = CALL_parser___parser_nodes___Start___n_base(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(false);
       REGB1 = REGB0;
     } else {
-      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB1 = REGB0;
     }
   }
   if (UNTAG_Bool(REGB1)) {
     /* ./syntax//syntax.nit:50 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___Start___n_eof(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[6] = CALL_parser___parser_nodes___Start___n_eof(fra.me.REG[3])(fra.me.REG[3]);
     /* ./syntax//syntax.nit:51 */
-    REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AError, ID_parser___parser_nodes___AError)) /*cast AError*/;
+    REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_parser___parser_nodes___AError, ID_parser___parser_nodes___AError)) /*cast AError*/;
     if (UNTAG_Bool(REGB1)) {
     } else {
       nit_abort("Assert failed", NULL, LOCATE_syntax, 51);
     }
     /* ./syntax//syntax.nit:52 */
-    fra.me.REG[6] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_parser___lexer___AError___message(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_mmloader___ToolContext___fatal_error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[0]);
+    fra.me.REG[0] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = CALL_parser___lexer___AError___message(fra.me.REG[6])(fra.me.REG[6]);
+    CALL_mmloader___ToolContext___fatal_error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[6]);
   }
   /* ./syntax//syntax.nit:54 */
   fra.me.REG[3] = CALL_parser___parser_nodes___Start___n_base(fra.me.REG[3])(fra.me.REG[3]);
@@ -224,7 +231,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:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* ./syntax//syntax.nit:36 */
         REGB2 = REGB1;
@@ -237,7 +244,7 @@ val_t syntax___SrcModuleLoader___parse_file(val_t p0, val_t p1, val_t p2, val_t
     if (UNTAG_Bool(REGB2)) {
       /* ./syntax//syntax.nit:38 */
       REGB2 = TAG_Bool(false);
-      closctx->REG[0] = REGB2;
+      closctx->REG[6] = REGB2;
       /* ./syntax//syntax.nit:39 */
       closctx->has_broke = 1;
       goto label2;
@@ -265,6 +272,11 @@ void syntax___SrcModuleLoader___process_metamodel(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], VTCOLOR_mmloader___ModuleLoader___MODULE(fra.me.REG[0]), VTID_mmloader___ModuleLoader___MODULE(fra.me.REG[0]))) /*cast MODULE*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_syntax, 0);
+  }
   /* ./syntax//syntax.nit:63 */
   CALL_syntax___MMSrcModule___process_supermodules(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   /* ./syntax//syntax.nit:64 */
index 8cece91..5161fac 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/syntax. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/syntax. */
 #ifndef syntax_sep
 #define syntax_sep
 #include "syntax___mmbuilder._sep.h"
index 46b5e32..ce34967 100644 (file)
@@ -188,38 +188,43 @@ 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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[3] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -228,23 +233,23 @@ 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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./syntax//flow.nit:77 */
@@ -252,7 +257,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//flow.nit:77 */
     REGB2 = REGB1;
@@ -854,36 +859,41 @@ 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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       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]);
@@ -974,14 +984,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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -1073,36 +1083,41 @@ 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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         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]);
@@ -1125,14 +1140,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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label4;
       }
     }
@@ -1150,6 +1165,7 @@ val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
   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_syntax___flow;
@@ -1184,36 +1200,41 @@ 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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         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]);
@@ -1224,14 +1245,14 @@ val_t syntax___flow___MergeFlowContext___is_set(val_t p0, val_t p1){
           REGB0 = REGB2;
           goto label1;
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label2;
       }
     }
index f5b06d0..52497da 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/flow. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/flow. */
 #ifndef syntax___flow_sep
 #define syntax___flow_sep
 #include "syntax___syntax_base._sep.h"
index a890b92..64d9a58 100644 (file)
@@ -183,7 +183,7 @@ void syntax___icode_generation___A2IContext___add_call_array_add(val_t p0, val_t
   return;
 }
 val_t syntax___icode_generation___A2IContext___variable(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -191,55 +191,58 @@ val_t syntax___icode_generation___A2IContext___variable(val_t p0, val_t p1){
   fra.me.line = 54;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//icode_generation.nit:54 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//icode_generation.nit:58 */
-  REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
+  REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 58);
   }
-  fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0]);
-  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
+  REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//icode_generation.nit:59 */
-    REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 59);
     }
-    fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0]);
-    fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+    fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
+    fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
     goto label1;
   } else {
     /* ./syntax//icode_generation.nit:61 */
-    fra.me.REG[3] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[1])(fra.me.REG[1]);
-    REGB0 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+    fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], 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, 61);
     }
-    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+    fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     /* ./syntax//icode_generation.nit:62 */
-    REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0])!=NIT_NULL);
+    REGB0 = TAG_Bool(ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
       nit_abort("Uninitialized attribute %s", "_variables", LOCATE_syntax___icode_generation, 62);
     }
-    fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[0]);
-    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
+    fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____variables(fra.me.REG[2]);
+    CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4]);
     /* ./syntax//icode_generation.nit:63 */
-    fra.me.REG[2] = fra.me.REG[3];
+    fra.me.REG[3] = fra.me.REG[4];
     goto label1;
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[3];
 }
 val_t syntax___icode_generation___A2IContext___closurevariables(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -369,6 +372,40 @@ val_t syntax___icode_generation___A2IContext___method(val_t p0){
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
+val_t syntax___icode_generation___A2IContext___selfreg(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_syntax___icode_generation;
+  fra.me.line = 85;
+  fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___selfreg;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 1;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  /* ./syntax//icode_generation.nit:85 */
+  fra.me.REG[0] = ATTR_syntax___icode_generation___A2IContext_____atselfreg(fra.me.REG[0]);
+  stack_frame_head = fra.me.prev;
+  return fra.me.REG[0];
+}
+void syntax___icode_generation___A2IContext___selfreg__eq(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___icode_generation;
+  fra.me.line = 85;
+  fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___selfreg__eq;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 2;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//icode_generation.nit:85 */
+  ATTR_syntax___icode_generation___A2IContext_____atselfreg(fra.me.REG[0]) = fra.me.REG[1];
+  stack_frame_head = fra.me.prev;
+  return;
+}
 void syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos0 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___icode_generation___A2IContext].i;
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
@@ -376,7 +413,7 @@ void syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2,
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 85;
+  fra.me.line = 88;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -390,20 +427,20 @@ void syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2,
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//icode_generation.nit:85 */
+  /* ./syntax//icode_generation.nit:88 */
   fra.me.REG[4] = fra.me.REG[0];
-  /* ./syntax//icode_generation.nit:87 */
+  /* ./syntax//icode_generation.nit:90 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   CALL_icode___icode_builder___ICodeBuilder___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2], init_table);
-  /* ./syntax//icode_generation.nit:88 */
+  /* ./syntax//icode_generation.nit:91 */
   ATTR_syntax___icode_generation___A2IContext____visitor(fra.me.REG[4]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:89 */
+  /* ./syntax//icode_generation.nit:92 */
   fra.me.REG[1] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
   ATTR_syntax___icode_generation___A2IContext____return_seq(fra.me.REG[4]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:90 */
+  /* ./syntax//icode_generation.nit:93 */
   fra.me.REG[2] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
   ATTR_syntax___icode_generation___A2IContext____return_value(fra.me.REG[4]) = fra.me.REG[2];
-  /* ./syntax//icode_generation.nit:91 */
+  /* ./syntax//icode_generation.nit:94 */
   ATTR_syntax___icode_generation___A2IContext____method(fra.me.REG[4]) = fra.me.REG[3];
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -419,7 +456,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(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 = 94;
+  fra.me.line = 97;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___invoke_super_init_calls_after;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -431,41 +468,41 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:97 */
+  /* ./syntax//icode_generation.nit:100 */
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___method(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:98 */
+  /* ./syntax//icode_generation.nit:101 */
   REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 98);
+    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 101);
   }
-  /* ./syntax//icode_generation.nit:99 */
+  /* ./syntax//icode_generation.nit:102 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 99);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 102);
   }
   fra.me.REG[2] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:100 */
+  /* ./syntax//icode_generation.nit:103 */
   REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 100);
+    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 103);
   }
-  /* ./syntax//icode_generation.nit:102 */
+  /* ./syntax//icode_generation.nit:105 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 102);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 105);
   }
   fra.me.REG[3] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//icode_generation.nit:103 */
+  /* ./syntax//icode_generation.nit:106 */
   REGB0 = TAG_Int(0);
-  /* ./syntax//icode_generation.nit:104 */
+  /* ./syntax//icode_generation.nit:107 */
   REGB1 = TAG_Int(0);
-  /* ./syntax//icode_generation.nit:105 */
+  /* ./syntax//icode_generation.nit:108 */
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -480,50 +517,60 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//icode_generation.nit:106 */
+    /* ./syntax//icode_generation.nit:109 */
     while(1) {
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 106);
+        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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label2;
       label2: while(0);
-      /* ./syntax//icode_generation.nit:106 */
+      /* ./syntax//icode_generation.nit:109 */
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -538,68 +585,78 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       }
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//icode_generation.nit:107 */
+        /* ./syntax//icode_generation.nit:110 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-        /* ./syntax//icode_generation.nit:107 */
+        /* ./syntax//icode_generation.nit:110 */
         REGB0 = REGB2;
       } else {
-        /* ./syntax//icode_generation.nit:106 */
+        /* ./syntax//icode_generation.nit:109 */
         goto label3;
       }
     }
     label3: while(0);
-    /* ./syntax//icode_generation.nit:109 */
+    /* ./syntax//icode_generation.nit:112 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-    /* ./syntax//icode_generation.nit:109 */
+    /* ./syntax//icode_generation.nit:112 */
     REGB0 = REGB2;
-    /* ./syntax//icode_generation.nit:111 */
+    /* ./syntax//icode_generation.nit:114 */
     while(1) {
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 111);
+        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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB2 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label4;
       label4: while(0);
-      /* ./syntax//icode_generation.nit:111 */
+      /* ./syntax//icode_generation.nit:114 */
       REGB2 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -614,149 +671,179 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       }
       REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//icode_generation.nit:112 */
+        /* ./syntax//icode_generation.nit:115 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./syntax//icode_generation.nit:112 */
+        /* ./syntax//icode_generation.nit:115 */
         REGB1 = REGB2;
       } else {
-        /* ./syntax//icode_generation.nit:111 */
+        /* ./syntax//icode_generation.nit:114 */
         goto label5;
       }
     }
     label5: while(0);
-    /* ./syntax//icode_generation.nit:114 */
+    /* ./syntax//icode_generation.nit:117 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:218 */
+    /* ./../lib/standard//kernel.nit:235 */
     REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-    /* ./syntax//icode_generation.nit:114 */
+    /* ./syntax//icode_generation.nit:117 */
     REGB1 = REGB2;
   }
-  /* ./syntax//icode_generation.nit:116 */
+  /* ./syntax//icode_generation.nit:119 */
   fra.me.REG[1] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:117 */
+  /* ./syntax//icode_generation.nit:120 */
   REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 117);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 120);
   }
   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:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:215 */
+  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:232 */
   REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:117 */
+  /* ./syntax//icode_generation.nit:120 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//icode_generation.nit:118 */
+    /* ./syntax//icode_generation.nit:121 */
     REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 118);
+      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:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     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, 245);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
     } else {
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Bool(false);
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+      nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
     }
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     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, 246);
+      nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
     }
-    /* ./../lib/standard//collection//array.nit:654 */
+    /* ./../lib/standard//collection//array.nit:718 */
     fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB1)];
-    /* ./../lib/standard//collection//array.nit:246 */
+    /* ./../lib/standard//collection//array.nit:281 */
     goto label6;
     label6: while(0);
-    /* ./syntax//icode_generation.nit:118 */
+    /* ./syntax//icode_generation.nit:121 */
     fra.me.REG[1] = fra.me.REG[3];
   }
-  /* ./syntax//icode_generation.nit:120 */
+  /* ./syntax//icode_generation.nit:123 */
   REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 120);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 123);
   }
   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:23 */
+  /* ./../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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:121 */
+  /* ./syntax//icode_generation.nit:124 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./syntax//icode_generation.nit:121 */
+    /* ./syntax//icode_generation.nit:124 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:122 */
+      /* ./syntax//icode_generation.nit:125 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 122);
+        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:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label7;
       label7: while(0);
-      /* ./syntax//icode_generation.nit:123 */
+      /* ./syntax//icode_generation.nit:126 */
       REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[1]));
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -766,47 +853,47 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
       if (UNTAG_Bool(REGB2)) {
         goto label8;
       }
-      /* ./syntax//icode_generation.nit:124 */
+      /* ./syntax//icode_generation.nit:127 */
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-      /* ./syntax//icode_generation.nit:125 */
+      /* ./syntax//icode_generation.nit:128 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 125);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 128);
       }
       REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[5])(fra.me.REG[5]);
       REGB3 = TAG_Int(0);
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB3 = TAG_Bool((REGB2)==(REGB3));
-        /* ./syntax//icode_generation.nit:125 */
+        /* ./syntax//icode_generation.nit:128 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* ./syntax//icode_generation.nit:126 */
+        /* ./syntax//icode_generation.nit:129 */
         fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
         fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       } else {
-        /* ./syntax//icode_generation.nit:128 */
+        /* ./syntax//icode_generation.nit:131 */
         fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[0])(fra.me.REG[0]);
         fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(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_syntax___icode_generation___A2IContext___invoke_super_init_calls_after_9));
       }
-      /* ./syntax//icode_generation.nit:132 */
+      /* ./syntax//icode_generation.nit:135 */
       fra.me.REG[4] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[3], fra.me.REG[4]);
       CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-      /* ./syntax//icode_generation.nit:133 */
+      /* ./syntax//icode_generation.nit:136 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-      /* ./syntax//icode_generation.nit:133 */
+      /* ./syntax//icode_generation.nit:136 */
       REGB0 = REGB4;
     } else {
-      /* ./syntax//icode_generation.nit:121 */
+      /* ./syntax//icode_generation.nit:124 */
       goto label8;
     }
   }
@@ -830,7 +917,7 @@ void syntax___icode_generation___A2IContext___invoke_super_init_calls_after(val_
           fra.me.closure_funs = CREG;
           fra.me.REG[0] = p0;
           CREG[0] = clos_fun0;
-          /* ./syntax//icode_generation.nit:129 */
+          /* ./syntax//icode_generation.nit:132 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
           stack_frame_head = fra.me.prev;
           return;
@@ -842,7 +929,7 @@ void syntax___icode_generation___A2IContext___generate_stmt(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 = 140;
+  fra.me.line = 143;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___generate_stmt;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -851,7 +938,7 @@ void syntax___icode_generation___A2IContext___generate_stmt(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:143 */
+  /* ./syntax//icode_generation.nit:146 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -867,51 +954,54 @@ void syntax___icode_generation___A2IContext___generate_stmt(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//icode_generation.nit:144 */
+  /* ./syntax//icode_generation.nit:147 */
   fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:145 */
+  /* ./syntax//icode_generation.nit:148 */
   ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:146 */
+  /* ./syntax//icode_generation.nit:149 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 146);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 149);
   }
   CALL_syntax___icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:147 */
+  /* ./syntax//icode_generation.nit:150 */
   ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[2];
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
 val_t syntax___icode_generation___A2IContext___generate_expr(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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_syntax___icode_generation;
-  fra.me.line = 150;
+  fra.me.line = 153;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IContext___generate_expr;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./syntax//icode_generation.nit:153 */
-  fra.me.REG[2] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:154 */
-  ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:155 */
-  fra.me.REG[1] = CALL_syntax___icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:156 */
+  fra.me.REG[3] = ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:157 */
+  ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]) = fra.me.REG[1];
+  /* ./syntax//icode_generation.nit:158 */
+  fra.me.REG[1] = CALL_syntax___icode_generation___AExpr___generate_icode(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 155);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 158);
   }
-  /* ./syntax//icode_generation.nit:156 */
-  ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./syntax//icode_generation.nit:157 */
+  /* ./syntax//icode_generation.nit:159 */
+  ATTR_syntax___icode_generation___A2IContext____current_node(fra.me.REG[2]) = fra.me.REG[3];
+  /* ./syntax//icode_generation.nit:160 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -922,13 +1012,13 @@ val_t syntax___icode_generation___EscapableBlock___break_seq(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 = 162;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:162 */
+  /* ./syntax//icode_generation.nit:165 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____break_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -938,7 +1028,7 @@ void syntax___icode_generation___EscapableBlock___break_seq__eq(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 162;
+  fra.me.line = 165;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_seq__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -946,7 +1036,7 @@ void syntax___icode_generation___EscapableBlock___break_seq__eq(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:162 */
+  /* ./syntax//icode_generation.nit:165 */
   ATTR_syntax___icode_generation___EscapableBlock____break_seq(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -956,13 +1046,13 @@ val_t syntax___icode_generation___EscapableBlock___continue_seq(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 = 165;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_seq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:165 */
+  /* ./syntax//icode_generation.nit:168 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -972,7 +1062,7 @@ void syntax___icode_generation___EscapableBlock___continue_seq__eq(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 = 165;
+  fra.me.line = 168;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_seq__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -980,7 +1070,7 @@ void syntax___icode_generation___EscapableBlock___continue_seq__eq(val_t p0, val
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:165 */
+  /* ./syntax//icode_generation.nit:168 */
   ATTR_syntax___icode_generation___EscapableBlock____continue_seq(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -990,13 +1080,13 @@ val_t syntax___icode_generation___EscapableBlock___break_value(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 = 168;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:168 */
+  /* ./syntax//icode_generation.nit:171 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____break_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1006,7 +1096,7 @@ void syntax___icode_generation___EscapableBlock___break_value__eq(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 = 168;
+  fra.me.line = 171;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___break_value__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1014,7 +1104,7 @@ void syntax___icode_generation___EscapableBlock___break_value__eq(val_t p0, val_
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:168 */
+  /* ./syntax//icode_generation.nit:171 */
   ATTR_syntax___icode_generation___EscapableBlock____break_value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1024,13 +1114,13 @@ val_t syntax___icode_generation___EscapableBlock___continue_value(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 = 171;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_value;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:171 */
+  /* ./syntax//icode_generation.nit:174 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___EscapableBlock____continue_value(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1040,7 +1130,7 @@ void syntax___icode_generation___EscapableBlock___continue_value__eq(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 = 171;
+  fra.me.line = 174;
   fra.me.meth = LOCATE_syntax___icode_generation___EscapableBlock___continue_value__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1048,29 +1138,31 @@ void syntax___icode_generation___EscapableBlock___continue_value__eq(val_t p0, v
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:171 */
+  /* ./syntax//icode_generation.nit:174 */
   ATTR_syntax___icode_generation___EscapableBlock____continue_value(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
 void syntax___icode_generation___MMSrcModule___generate_icode(val_t p0, val_t p1){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 176;
+  fra.me.line = 179;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcModule___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:179 */
+  /* ./syntax//icode_generation.nit:182 */
   fra.me.REG[1] = NEW_A2IVisitor_syntax___icode_generation___A2IVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:180 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___src_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_syntax___icode_generation___MMSrcModule___generate_icode_1));
+  /* ./syntax//icode_generation.nit:183 */
+  fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___MMSrcModule___generate_icode_1));
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1089,8 +1181,9 @@ void syntax___icode_generation___MMSrcModule___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:181 */
+    /* ./syntax//icode_generation.nit:184 */
     fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[0])(fra.me.REG[0], closctx, ((fun_t)OC_syntax___icode_generation___MMSrcModule___generate_icode_2));
     stack_frame_head = fra.me.prev;
     return;
@@ -1111,16 +1204,16 @@ void syntax___icode_generation___MMSrcModule___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:182 */
+      /* ./syntax//icode_generation.nit:185 */
       REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//icode_generation.nit:183 */
+        /* ./syntax//icode_generation.nit:186 */
         CALL_syntax___icode_generation___MMSrcMethod___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
       } else {
-        /* ./syntax//icode_generation.nit:184 */
+        /* ./syntax//icode_generation.nit:187 */
         REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcAttribute, ID_syntax___syntax_base___MMSrcAttribute)) /*cast MMSrcAttribute*/;
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//icode_generation.nit:185 */
+          /* ./syntax//icode_generation.nit:188 */
           CALL_syntax___icode_generation___MMSrcAttribute___generate_iroutine(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
         }
       }
@@ -1132,13 +1225,13 @@ val_t syntax___icode_generation___MMSrcAttribute___iroutine(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 = 193;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:193 */
+  /* ./syntax//icode_generation.nit:196 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1148,7 +1241,7 @@ void syntax___icode_generation___MMSrcAttribute___iroutine__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 193;
+  fra.me.line = 196;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___iroutine__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1156,7 +1249,7 @@ void syntax___icode_generation___MMSrcAttribute___iroutine__eq(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:193 */
+  /* ./syntax//icode_generation.nit:196 */
   ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1168,7 +1261,7 @@ void syntax___icode_generation___MMSrcAttribute___generate_iroutine(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 = 195;
+  fra.me.line = 198;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcAttribute___generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1178,11 +1271,11 @@ void syntax___icode_generation___MMSrcAttribute___generate_iroutine(val_t p0, va
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:198 */
+  /* ./syntax//icode_generation.nit:201 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMLocalProperty___node(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, 198);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 201);
   }
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
@@ -1199,31 +1292,31 @@ void syntax___icode_generation___MMSrcAttribute___generate_iroutine(val_t p0, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:199 */
+    /* ./syntax//icode_generation.nit:202 */
     fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(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, 199);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 202);
     }
     fra.me.REG[2] = CALL_icode___icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//icode_generation.nit:200 */
+    /* ./syntax//icode_generation.nit:203 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 200);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 203);
     }
     fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
     CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    /* ./syntax//icode_generation.nit:201 */
+    /* ./syntax//icode_generation.nit:204 */
     fra.me.REG[3] = NEW_A2IContext_syntax___icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], NIT_NULL);
-    /* ./syntax//icode_generation.nit:202 */
+    /* ./syntax//icode_generation.nit:205 */
     CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./syntax//icode_generation.nit:203 */
+    /* ./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]);
-    /* ./syntax//icode_generation.nit:204 */
+    /* ./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:205 */
+    /* ./syntax//icode_generation.nit:208 */
     ATTR_syntax___icode_generation___MMSrcAttribute____iroutine(fra.me.REG[0]) = fra.me.REG[2];
   }
   stack_frame_head = fra.me.prev;
@@ -1234,13 +1327,13 @@ val_t syntax___icode_generation___MMSrcMethod___iroutine(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 = 211;
+  fra.me.line = 214;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:211 */
+  /* ./syntax//icode_generation.nit:214 */
   fra.me.REG[0] = ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1250,7 +1343,7 @@ void syntax___icode_generation___MMSrcMethod___iroutine__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_syntax___icode_generation;
-  fra.me.line = 211;
+  fra.me.line = 214;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___iroutine__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1258,7 +1351,7 @@ void syntax___icode_generation___MMSrcMethod___iroutine__eq(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:211 */
+  /* ./syntax//icode_generation.nit:214 */
   ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1270,7 +1363,7 @@ void syntax___icode_generation___MMSrcMethod___generate_iroutine(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 213;
+  fra.me.line = 216;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1280,14 +1373,14 @@ void syntax___icode_generation___MMSrcMethod___generate_iroutine(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:216 */
+  /* ./syntax//icode_generation.nit:219 */
   fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(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, 216);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 219);
   }
   fra.me.REG[2] = CALL_icode___icode_builder___MMSignature___generate_empty_iroutine(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:217 */
+  /* ./syntax//icode_generation.nit:220 */
   fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -1303,24 +1396,24 @@ void syntax___icode_generation___MMSrcMethod___generate_iroutine(val_t p0, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:218 */
+    /* ./syntax//icode_generation.nit:221 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 218);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 221);
     }
     fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[3])(fra.me.REG[3]);
     CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./syntax//icode_generation.nit:220 */
+  /* ./syntax//icode_generation.nit:223 */
   fra.me.REG[3] = NEW_A2IContext_syntax___icode_generation___A2IContext___init(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:221 */
+  /* ./syntax//icode_generation.nit:224 */
   CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:222 */
+  /* ./syntax//icode_generation.nit:225 */
   CALL_syntax___icode_generation___MMSrcMethod___inner_generate_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:223 */
+  /* ./syntax//icode_generation.nit:226 */
   CALL_syntax___icode_generation___A2IVisitor___icode_ctx__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
-  /* ./syntax//icode_generation.nit:224 */
+  /* ./syntax//icode_generation.nit:227 */
   ATTR_syntax___icode_generation___MMSrcMethod____iroutine(fra.me.REG[0]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
   return;
@@ -1330,12 +1423,12 @@ void syntax___icode_generation___MMSrcMethod___inner_generate_iroutine(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 = 227;
+  fra.me.line = 230;
   fra.me.meth = LOCATE_syntax___icode_generation___MMSrcMethod___inner_generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//icode_generation.nit:227 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 227);
+  /* ./syntax//icode_generation.nit:230 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 230);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -1345,7 +1438,7 @@ void syntax___icode_generation___MMReadImplementationMethod___inner_generate_iro
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 232;
+  fra.me.line = 235;
   fra.me.meth = LOCATE_syntax___icode_generation___MMReadImplementationMethod___inner_generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1354,18 +1447,18 @@ void syntax___icode_generation___MMReadImplementationMethod___inner_generate_iro
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:234 */
+  /* ./syntax//icode_generation.nit:237 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(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_syntax___icode_generation, 234);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 237);
   }
   fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
   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]);
   fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
   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]);
-  /* ./syntax//icode_generation.nit:235 */
+  /* ./syntax//icode_generation.nit:238 */
   CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1376,7 +1469,7 @@ void syntax___icode_generation___MMWriteImplementationMethod___inner_generate_ir
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 240;
+  fra.me.line = 243;
   fra.me.meth = LOCATE_syntax___icode_generation___MMWriteImplementationMethod___inner_generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1386,20 +1479,20 @@ void syntax___icode_generation___MMWriteImplementationMethod___inner_generate_ir
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:242 */
+  /* ./syntax//icode_generation.nit:245 */
   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]);
-  /* ./syntax//icode_generation.nit:243 */
+  /* ./syntax//icode_generation.nit:246 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMLocalProperty___node(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_syntax___icode_generation, 243);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 246);
   }
   fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Int(0);
-  fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+  fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
   REGB0 = TAG_Int(1);
-  fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB0);
   fra.me.REG[2] = NEW_IAttrWrite_icode___icode_base___IAttrWrite___init(fra.me.REG[0], 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[2]);
   stack_frame_head = fra.me.prev;
@@ -1410,7 +1503,7 @@ void syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 248;
+  fra.me.line = 251;
   fra.me.meth = LOCATE_syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1418,7 +1511,7 @@ void syntax___icode_generation___MMMethSrcMethod___inner_generate_iroutine(val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:250 */
+  /* ./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]);
@@ -1437,7 +1530,7 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 255;
+  fra.me.line = 258;
   fra.me.meth = LOCATE_syntax___icode_generation___MMImplicitInit___inner_generate_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 10;
@@ -1453,67 +1546,72 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:257 */
+  /* ./syntax//icode_generation.nit:260 */
   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]);
-  /* ./syntax//icode_generation.nit:258 */
+  /* ./syntax//icode_generation.nit:261 */
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../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, 23);
+    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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./syntax//icode_generation.nit:259 */
+  /* ./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:260 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//icode_generation.nit:261 */
+      /* ./syntax//icode_generation.nit:264 */
       REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 261);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 264);
       }
-      /* ./syntax//icode_generation.nit:262 */
+      /* ./syntax//icode_generation.nit:265 */
       REGB2 = TAG_Int(1);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
-      /* ./syntax//icode_generation.nit:263 */
+      /* ./syntax//icode_generation.nit:266 */
       fra.me.REG[8] = CALL_syntax___syntax_base___MMImplicitInit___super_init(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[8]));
       if (UNTAG_Bool(REGB2)) {
@@ -1522,119 +1620,139 @@ void syntax___icode_generation___MMImplicitInit___inner_generate_iroutine(val_t
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//icode_generation.nit:264 */
+        /* ./syntax//icode_generation.nit:267 */
         fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-        /* ./syntax//icode_generation.nit:265 */
+        /* ./syntax//icode_generation.nit:268 */
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
-        /* ./syntax//icode_generation.nit:266 */
+        /* ./syntax//icode_generation.nit:269 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:330 */
+        /* ./../lib/standard//kernel.nit:347 */
         REGB3 = REGB1;
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB4)) {
-            /* ./syntax//icode_generation.nit:266 */
+            /* ./syntax//icode_generation.nit:269 */
             REGB4 = REGB2;
-            /* ./syntax//icode_generation.nit:267 */
-            fra.me.REG[9] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB4);
+            /* ./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:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB2 = REGB4;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label1;
           }
         }
         label1: while(0);
-        /* ./syntax//icode_generation.nit:269 */
+        /* ./syntax//icode_generation.nit:272 */
         fra.me.REG[8] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[8]);
         CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
       } else {
-        /* ./syntax//icode_generation.nit:271 */
+        /* ./syntax//icode_generation.nit:274 */
         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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label2;
     }
   }
   label2: while(0);
-  /* ./syntax//icode_generation.nit:274 */
+  /* ./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:330 */
+  /* ./../lib/standard//kernel.nit:347 */
   REGB2 = REGB1;
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB3)) {
-      /* ./syntax//icode_generation.nit:274 */
+      /* ./syntax//icode_generation.nit:277 */
       REGB3 = REGB2;
-      /* ./syntax//icode_generation.nit:275 */
+      /* ./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:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB4 = TAG_Int(UNTAG_Int(REGB3)-UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB5 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB5 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB5));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB5 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB6 = TAG_Bool(false);
         REGB5 = REGB6;
       }
       if (UNTAG_Bool(REGB5)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB4)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label3;
       label3: while(0);
-      /* ./syntax//icode_generation.nit:276 */
-      fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB3);
+      /* ./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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label4;
     }
   }
@@ -1647,7 +1765,7 @@ void syntax___icode_generation___A2IVisitor___icode_ctx__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_syntax___icode_generation;
-  fra.me.line = 283;
+  fra.me.line = 286;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___icode_ctx__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1655,34 +1773,36 @@ void syntax___icode_generation___A2IVisitor___icode_ctx__eq(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:283 */
+  /* ./syntax//icode_generation.nit:286 */
   ATTR_syntax___icode_generation___A2IVisitor____icode_ctx(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
 }
 val_t syntax___icode_generation___A2IVisitor___icode_ctx(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 284;
+  fra.me.line = 287;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___icode_ctx;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:284 */
-  fra.me.REG[0] = ATTR_syntax___icode_generation___A2IVisitor____icode_ctx(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//icode_generation.nit:287 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___icode_generation___A2IVisitor____icode_ctx(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 284);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 287);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___icode_generation___A2IVisitor___visit(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -1690,7 +1810,7 @@ void syntax___icode_generation___A2IVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 285;
+  fra.me.line = 288;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1698,10 +1818,10 @@ void syntax___icode_generation___A2IVisitor___visit(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:285 */
+  /* ./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, 285);
+    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;
@@ -1714,7 +1834,7 @@ void syntax___icode_generation___A2IVisitor___init(val_t p0, val_t p1, val_t p2,
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 286;
+  fra.me.line = 289;
   fra.me.meth = LOCATE_syntax___icode_generation___A2IVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1724,7 +1844,7 @@ void syntax___icode_generation___A2IVisitor___init(val_t p0, val_t p1, val_t p2,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:286 */
+  /* ./syntax//icode_generation.nit:289 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1735,7 +1855,7 @@ void syntax___icode_generation___ANode___accept_icode_generation(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 293;
+  fra.me.line = 296;
   fra.me.meth = LOCATE_syntax___icode_generation___ANode___accept_icode_generation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1743,7 +1863,7 @@ void syntax___icode_generation___ANode___accept_icode_generation(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:293 */
+  /* ./syntax//icode_generation.nit:296 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -1755,7 +1875,7 @@ void syntax___icode_generation___AAttrPropdef___accept_icode_generation(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 = 297;
+  fra.me.line = 300;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrPropdef___accept_icode_generation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -1767,12 +1887,12 @@ void syntax___icode_generation___AAttrPropdef___accept_icode_generation(val_t p0
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:297 */
+  /* ./syntax//icode_generation.nit:300 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:299 */
+  /* ./syntax//icode_generation.nit:302 */
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:300 */
+  /* ./syntax//icode_generation.nit:303 */
   fra.me.REG[4] = CALL_syntax___syntax_base___APropdef___self_var(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
@@ -1780,11 +1900,11 @@ void syntax___icode_generation___AAttrPropdef___accept_icode_generation(val_t p0
   fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
   fra.me.REG[5] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], fra.me.REG[5]);
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:301 */
+  /* ./syntax//icode_generation.nit:304 */
   CALL_SUPER_syntax___icode_generation___AAttrPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:302 */
+  /* ./syntax//icode_generation.nit:305 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:303 */
+  /* ./syntax//icode_generation.nit:306 */
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -1799,13 +1919,13 @@ void syntax___icode_generation___AAttrPropdef___accept_icode_generation(val_t p0
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:304 */
+    /* ./syntax//icode_generation.nit:307 */
     fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[1] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_icode___icode_base___IRegister, ID_icode___icode_base___IRegister)) /*cast IRegister*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 304);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 307);
     }
     fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
     fra.me.REG[2] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[1], fra.me.REG[2]);
@@ -1819,7 +1939,7 @@ void syntax___icode_generation___AMethPropdef___accept_icode_generation(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 = 310;
+  fra.me.line = 313;
   fra.me.meth = LOCATE_syntax___icode_generation___AMethPropdef___accept_icode_generation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -1829,12 +1949,12 @@ void syntax___icode_generation___AMethPropdef___accept_icode_generation(val_t p0
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:310 */
+  /* ./syntax//icode_generation.nit:313 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//icode_generation.nit:312 */
+  /* ./syntax//icode_generation.nit:315 */
   CALL_SUPER_syntax___icode_generation___AMethPropdef___accept_icode_generation(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:313 */
+  /* ./syntax//icode_generation.nit:316 */
   fra.me.REG[3] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___icode_generation___AMethPropdef___fill_iroutine(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[1]);
@@ -1846,17 +1966,17 @@ void syntax___icode_generation___AMethPropdef___fill_iroutine(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 = 316;
+  fra.me.line = 319;
   fra.me.meth = LOCATE_syntax___icode_generation___AMethPropdef___fill_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//icode_generation.nit:316 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 316);
+  /* ./syntax//icode_generation.nit:319 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 319);
   stack_frame_head = fra.me.prev;
   return;
 }
 void syntax___icode_generation___ASignature___fill_iroutine_parameters(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -1864,56 +1984,64 @@ void syntax___icode_generation___ASignature___fill_iroutine_parameters(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 = 321;
+  fra.me.line = 324;
   fra.me.meth = LOCATE_syntax___icode_generation___ASignature___fill_iroutine_parameters;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
   fra.me.REG[4] = p4;
-  /* ./syntax//icode_generation.nit:323 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[5])(fra.me.REG[5], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASignature___fill_iroutine_parameters_1));
-  /* ./syntax//icode_generation.nit:332 */
+  /* ./syntax//icode_generation.nit:324 */
+  fra.me.REG[5] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:326 */
+  fra.me.REG[6] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[5])(fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[6])(fra.me.REG[6], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___ASignature___fill_iroutine_parameters_1));
+  /* ./syntax//icode_generation.nit:335 */
   REGB0 = TAG_Int(0);
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[0])(fra.me.REG[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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:332 */
+      /* ./syntax//icode_generation.nit:335 */
       REGB2 = REGB0;
-      /* ./syntax//icode_generation.nit:333 */
-      fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      /* ./syntax//icode_generation.nit:334 */
-      fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
+      /* ./syntax//icode_generation.nit:336 */
+      fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_closure_decls(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
+      /* ./syntax//icode_generation.nit:337 */
+      fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___closurevariables(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[3])(fra.me.REG[3]);
       REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 334);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 337);
       }
-      fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
-      CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[5]);
-      /* ./../lib/standard//kernel.nit:337 */
+      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:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label2;
     }
   }
@@ -1940,48 +2068,48 @@ void syntax___icode_generation___ASignature___fill_iroutine_parameters(val_t p0,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//icode_generation.nit:324 */
+    /* ./syntax//icode_generation.nit:327 */
     fra.me.REG[1] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_syntax___icode_generation___A2IContext___variable(closctx->REG[1])(closctx->REG[1], fra.me.REG[1]);
-    /* ./syntax//icode_generation.nit:325 */
+    /* ./syntax//icode_generation.nit:328 */
     REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[2] = CALL_metamodel___static_type___MMSignature_____bra(closctx->REG[2])(closctx->REG[2], REGB0);
-    /* ./syntax//icode_generation.nit:326 */
+    /* ./syntax//icode_generation.nit:329 */
     fra.me.REG[3] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_syntax___syntax_base___Variable___stype(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___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 326);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 329);
     }
-    /* ./syntax//icode_generation.nit:327 */
+    /* ./syntax//icode_generation.nit:330 */
     REGB0 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//icode_generation.nit:328 */
+      /* ./syntax//icode_generation.nit:331 */
       REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
+      fra.me.REG[2] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
       CALL_icode___icode_builder___ICodeBuilder___add_type_cast(closctx->REG[1])(closctx->REG[1], fra.me.REG[2], fra.me.REG[3]);
     }
-    /* ./syntax//icode_generation.nit:330 */
+    /* ./syntax//icode_generation.nit:333 */
     REGB0 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
+    fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(closctx->REG[3])(closctx->REG[3], REGB0);
     fra.me.REG[0] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[1], fra.me.REG[0]);
     CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
   }
 void syntax___icode_generation___AClosureDecl___accept_icode_generation(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 340;
+  fra.me.line = 343;
   fra.me.meth = LOCATE_syntax___icode_generation___AClosureDecl___accept_icode_generation;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1989,107 +2117,110 @@ void syntax___icode_generation___AClosureDecl___accept_icode_generation(val_t p0
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:342 */
-  fra.me.REG[1] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* ./syntax//icode_generation.nit:343 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_icode___icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:344 */
-  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//icode_generation.nit:345 */
-  fra.me.REG[4] = CALL_icode___icode_base___IRoutine___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[4]);
+  fra.me.REG[1] = CALL_syntax___icode_generation___A2IVisitor___icode_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* ./syntax//icode_generation.nit:346 */
-  fra.me.REG[4] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 346);
-  }
-  CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
+  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]);
+  fra.me.REG[3] = CALL_icode___icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   /* ./syntax//icode_generation.nit:347 */
-  fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//icode_generation.nit:348 */
+  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:349 */
+  fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[6] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 347);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 349);
   }
-  CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:348 */
-  fra.me.REG[4] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+  /* ./syntax//icode_generation.nit:350 */
+  fra.me.REG[6] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 348);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 350);
   }
-  CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:349 */
-  fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:351 */
+  fra.me.REG[5] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 349);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 351);
   }
-  CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:350 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDecl___n_signature(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[5])(fra.me.REG[5]);
-  fra.me.REG[5] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[5])(fra.me.REG[5]);
-  fra.me.REG[6] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5], fra.me.REG[6], NIT_NULL);
+  CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   /* ./syntax//icode_generation.nit:352 */
-  fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[6] = CALL_syntax___typing___AClosureDecl___escapable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 352);
+  }
+  CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:353 */
+  fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDecl___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[6] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[6])(fra.me.REG[6]);
+  fra.me.REG[6] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[6])(fra.me.REG[6]);
+  fra.me.REG[7] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[3])(fra.me.REG[3]);
+  CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6], fra.me.REG[7], NIT_NULL);
+  /* ./syntax//icode_generation.nit:355 */
+  fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:353 */
-    fra.me.REG[6] = CALL_parser___parser_nodes___AClosureDecl___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-    CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:354 */
-    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[6] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[6])(fra.me.REG[6]);
-    REGB0 = CALL_syntax___syntax_base___AClosureDecl___position(fra.me.REG[0])(fra.me.REG[0]);
-    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:356 */
+    fra.me.REG[7] = CALL_parser___parser_nodes___AClosureDecl___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[7]);
+    /* ./syntax//icode_generation.nit:357 */
+    fra.me.REG[7] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[7] = CALL_icode___icode_base___IRoutine___closure_decls(fra.me.REG[7])(fra.me.REG[7]);
+    REGB0 = CALL_syntax___syntax_base___AClosureDecl___position(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 354);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 357);
     }
-    fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
-    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
+    REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 354);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 357);
     }
-    CALL_icode___icode_base___IClosureDecl___default__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-    /* ./syntax//icode_generation.nit:357 */
-    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]);
-    REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[0])(fra.me.REG[0]);
+    CALL_icode___icode_base___IClosureDecl___default__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+    /* ./syntax//icode_generation.nit:360 */
+    fra.me.REG[2] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = CALL_syntax___syntax_base___ClosureVariable___closure(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[2])(fra.me.REG[2]);
     if (UNTAG_Bool(REGB0)) {
-      fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
-      REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
+      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
           REGB0 = REGB1;
         }
       }
@@ -2098,18 +2229,18 @@ void syntax___icode_generation___AClosureDecl___accept_icode_generation(val_t p0
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//icode_generation.nit:358 */
-      fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
-      REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+      /* ./syntax//icode_generation.nit:361 */
+      fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
+      REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 358);
+        nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 361);
       }
-      CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     }
   }
-  /* ./syntax//icode_generation.nit:361 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:364 */
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2121,7 +2252,7 @@ void syntax___icode_generation___AConcreteMethPropdef___fill_iroutine(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 = 366;
+  fra.me.line = 369;
   fra.me.meth = LOCATE_syntax___icode_generation___AConcreteMethPropdef___fill_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -2134,191 +2265,286 @@ void syntax___icode_generation___AConcreteMethPropdef___fill_iroutine(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:368 */
+  /* ./syntax//icode_generation.nit:371 */
   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]);
   fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:369 */
+  /* ./syntax//icode_generation.nit:372 */
   fra.me.REG[4] = CALL_syntax___syntax_base___APropdef___self_var(fra.me.REG[0])(fra.me.REG[0]);
   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:370 */
+  /* ./syntax//icode_generation.nit:373 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:243 */
+  /* ./../lib/standard//collection//array.nit:278 */
   fra.me.REG[5] = fra.me.REG[3];
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./../lib/standard//collection//array.nit:245 */
+  /* ./../lib/standard//collection//array.nit:280 */
   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, 245);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   } else {
-    /* ./../lib/standard//collection//array.nit:245 */
+    /* ./../lib/standard//collection//array.nit:280 */
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+    nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
   }
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   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, 246);
+    nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
   }
-  /* ./../lib/standard//collection//array.nit:654 */
+  /* ./../lib/standard//collection//array.nit:718 */
   fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-  /* ./../lib/standard//collection//array.nit:246 */
+  /* ./../lib/standard//collection//array.nit:281 */
   goto label1;
   label1: while(0);
-  /* ./syntax//icode_generation.nit:370 */
+  /* ./syntax//icode_generation.nit:373 */
   fra.me.REG[5] = NEW_IMove_icode___icode_base___IMove___init(fra.me.REG[4], 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:371 */
-  CALL_standard___collection___abstract_collection___Sequence___shift(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:373 */
-  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
   /* ./syntax//icode_generation.nit:374 */
+  CALL_syntax___icode_generation___A2IContext___selfreg__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:375 */
+  CALL_standard___collection___abstract_collection___Sequence___shift(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:377 */
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:378 */
   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, 374);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 378);
   }
   fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:375 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:379 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:376 */
-    fra.me.REG[5] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
-    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___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:380 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[5] = CALL_icode___icode_base___IRoutine___closure_decls(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, 376);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 380);
     }
-    CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
+    CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[5]);
   }
-  /* ./syntax//icode_generation.nit:379 */
+  /* ./syntax//icode_generation.nit:383 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AConcreteInitPropdef, ID_parser___parser_nodes___AConcreteInitPropdef)) /*cast AConcreteInitPropdef*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:380 */
+    /* ./syntax//icode_generation.nit:384 */
     CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
   }
-  /* ./syntax//icode_generation.nit:383 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:387 */
+  fra.me.REG[5] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:384 */
+    /* ./syntax//icode_generation.nit:388 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AConcreteMethPropdef___n_block(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
+  /* ./syntax//icode_generation.nit:390 */
+  CALL_syntax___icode_generation___A2IContext___selfreg__eq(fra.me.REG[1])(fra.me.REG[1], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
 }
+void syntax___icode_generation___AExternPropdef___fill_iroutine(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_syntax___icode_generation;
+  fra.me.line = 395;
+  fra.me.meth = LOCATE_syntax___icode_generation___AExternPropdef___fill_iroutine;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//icode_generation.nit:398 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_syntax___syntax_base___MMMethSrcMethod, ID_syntax___syntax_base___MMMethSrcMethod)) /*cast MMMethSrcMethod*/;
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 398);
+  }
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1));
+  stack_frame_head = fra.me.prev;
+  return;
+}
+  void OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
+    struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+    val_t REGB0;
+    fun_t CREG[1];
+    val_t tmp;
+    fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+    fra.me.file = LOCATE_syntax___icode_generation;
+    fra.me.line = 0;
+    fra.me.meth = LOCATE_syntax___icode_generation___AExternPropdef___fill_iroutine;
+    fra.me.has_broke = 0;
+    fra.me.REG_size = 3;
+    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[1] = NIT_NULL;
+    fra.me.REG[2] = NIT_NULL;
+    fra.me.closure_ctx = closctx_param;
+    fra.me.closure_funs = CREG;
+    fra.me.REG[0] = p0;
+    CREG[0] = clos_fun0;
+    /* ./syntax//icode_generation.nit:400 */
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMExplicitImport___method(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./syntax//icode_generation.nit:402 */
+    REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
+    if (UNTAG_Bool(REGB0)) {
+      /* ./syntax//icode_generation.nit:403 */
+      fra.me.REG[1] = CALL_metamodel___static_type___MMLocalProperty___signature(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_syntax___icode_generation, 403);
+      }
+      fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[2] = NEW_List_standard___collection___list___List___init();
+      fra.me.REG[2] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+    } else {
+      /* ./syntax//icode_generation.nit:405 */
+      fra.me.REG[1] = NEW_List_standard___collection___list___List___init();
+      fra.me.REG[1] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[0], fra.me.REG[1]);
+      fra.me.REG[2] = fra.me.REG[1];
+    }
+    /* ./syntax//icode_generation.nit:407 */
+    REGB0 = TAG_Bool(true);
+    CALL_icode___icode_base___IAbsCall___is_explicit_from_extern__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
+    /* ./syntax//icode_generation.nit:408 */
+    CALL_icode___icode_builder___ICodeBuilder___stmt(closctx->REG[1])(closctx->REG[1], fra.me.REG[2]);
+    stack_frame_head = fra.me.prev;
+    return;
+  }
 void syntax___icode_generation___AExternInitPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} 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_syntax___icode_generation;
-  fra.me.line = 390;
+  fra.me.line = 414;
   fra.me.meth = LOCATE_syntax___icode_generation___AExternInitPropdef___fill_iroutine;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:392 */
-  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[0] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:393 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:394 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:414 */
+  fra.me.REG[3] = fra.me.REG[1];
+  fra.me.REG[4] = fra.me.REG[2];
+  /* ./syntax//icode_generation.nit:416 */
+  fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:417 */
+  fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:418 */
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
+  REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 394);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 418);
   }
-  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
+  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
   REGB2 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:394 */
+  /* ./syntax//icode_generation.nit:418 */
   REGB1 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB2));
   if (UNTAG_Bool(REGB1)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB0)==(REGB2));
-    /* ./syntax//icode_generation.nit:394 */
+    /* ./syntax//icode_generation.nit:418 */
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 394);
+    nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 418);
   }
-  /* ./syntax//icode_generation.nit:395 */
-  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:419 */
+  REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 395);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 419);
   }
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:396 */
+  fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[6])(fra.me.REG[6]);
+  /* ./syntax//icode_generation.nit:420 */
   REGB1 = TAG_Bool(0);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+    REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
     REGB1 = REGB2;
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//icode_generation.nit:397 */
-    fra.me.REG[4] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[3]);
-    fra.me.REG[0] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], 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[0], fra.me.REG[3]);
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
-  }
+    /* ./syntax//icode_generation.nit:421 */
+    fra.me.REG[7] = NEW_IRegister_icode___icode_base___IRegister___init(fra.me.REG[6]);
+    fra.me.REG[5] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5], fra.me.REG[6]);
+    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[6]);
+  }
+  /* ./syntax//icode_generation.nit:424 */
+  CALL_SUPER_syntax___icode_generation___AExternInitPropdef___fill_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2329,7 +2555,7 @@ void syntax___icode_generation___ADeferredMethPropdef___fill_iroutine(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_syntax___icode_generation;
-  fra.me.line = 403;
+  fra.me.line = 429;
   fra.me.meth = LOCATE_syntax___icode_generation___ADeferredMethPropdef___fill_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2339,7 +2565,7 @@ void syntax___icode_generation___ADeferredMethPropdef___fill_iroutine(val_t p0,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:405 */
+  /* ./syntax//icode_generation.nit:431 */
   REGB0 = TAG_Int(0);
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2356,58 +2582,66 @@ void syntax___icode_generation___ADeferredMethPropdef___fill_iroutine(val_t p0,
   return;
 }
 void syntax___icode_generation___AExternMethPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 410;
+  fra.me.line = 436;
   fra.me.meth = LOCATE_syntax___icode_generation___AExternMethPropdef___fill_iroutine;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:412 */
-  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[0] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:413 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:436 */
+  fra.me.REG[3] = fra.me.REG[1];
+  fra.me.REG[4] = fra.me.REG[2];
+  /* ./syntax//icode_generation.nit:438 */
+  fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:439 */
+  fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 413);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 439);
   }
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:414 */
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[6])(fra.me.REG[6]);
+  /* ./syntax//icode_generation.nit:440 */
+  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:415 */
-    fra.me.REG[4] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], 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[4], fra.me.REG[3]);
-    CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+    /* ./syntax//icode_generation.nit:441 */
+    fra.me.REG[7] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[6]);
+    CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
   } else {
-    /* ./syntax//icode_generation.nit:417 */
-    fra.me.REG[0] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
-    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    /* ./syntax//icode_generation.nit:443 */
+    fra.me.REG[5] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[4], fra.me.REG[5]);
+    CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
   }
+  /* ./syntax//icode_generation.nit:446 */
+  CALL_SUPER_syntax___icode_generation___AExternMethPropdef___fill_iroutine(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -2418,7 +2652,7 @@ void syntax___icode_generation___AInternMethPropdef___fill_iroutine(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 = 423;
+  fra.me.line = 451;
   fra.me.meth = LOCATE_syntax___icode_generation___AInternMethPropdef___fill_iroutine;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2430,17 +2664,17 @@ void syntax___icode_generation___AInternMethPropdef___fill_iroutine(val_t p0, va
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//icode_generation.nit:425 */
+  /* ./syntax//icode_generation.nit:453 */
   fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___iroutine(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:426 */
+  /* ./syntax//icode_generation.nit:454 */
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 426);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 454);
   }
   fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:427 */
+  /* ./syntax//icode_generation.nit:455 */
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2455,12 +2689,12 @@ void syntax___icode_generation___AInternMethPropdef___fill_iroutine(val_t p0, va
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:428 */
+    /* ./syntax//icode_generation.nit:456 */
     fra.me.REG[4] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], 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[4], fra.me.REG[3]);
     CALL_icode___icode_builder___ICodeBuilder___add_return_value(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   } else {
-    /* ./syntax//icode_generation.nit:430 */
+    /* ./syntax//icode_generation.nit:458 */
     fra.me.REG[0] = NEW_INative_icode___icode_base___INative___init(fra.me.REG[2], fra.me.REG[0]);
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
@@ -2472,7 +2706,7 @@ void syntax___icode_generation___AExpr___accept_icode_generation(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 438;
+  fra.me.line = 466;
   fra.me.meth = LOCATE_syntax___icode_generation___AExpr___accept_icode_generation;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2488,12 +2722,12 @@ val_t syntax___icode_generation___AExpr___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 = 440;
+  fra.me.line = 468;
   fra.me.meth = LOCATE_syntax___icode_generation___AExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//icode_generation.nit:440 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 440);
+  /* ./syntax//icode_generation.nit:468 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 468);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2504,7 +2738,7 @@ val_t syntax___icode_generation___AVardeclExpr___generate_icode(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 446;
+  fra.me.line = 474;
   fra.me.meth = LOCATE_syntax___icode_generation___AVardeclExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2513,12 +2747,12 @@ val_t syntax___icode_generation___AVardeclExpr___generate_icode(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:448 */
+  /* ./syntax//icode_generation.nit:476 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AVardeclExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:449 */
+  /* ./syntax//icode_generation.nit:477 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AVardeclExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:450 */
+  /* ./syntax//icode_generation.nit:478 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2533,11 +2767,11 @@ val_t syntax___icode_generation___AVardeclExpr___generate_icode(val_t p0, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:451 */
+    /* ./syntax//icode_generation.nit:479 */
     fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
     CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./syntax//icode_generation.nit:453 */
+  /* ./syntax//icode_generation.nit:481 */
   fra.me.REG[0] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2549,7 +2783,7 @@ val_t syntax___icode_generation___ABlockExpr___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 = 458;
+  fra.me.line = 486;
   fra.me.meth = LOCATE_syntax___icode_generation___ABlockExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2557,10 +2791,10 @@ val_t syntax___icode_generation___ABlockExpr___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:460 */
+  /* ./syntax//icode_generation.nit:488 */
   fra.me.REG[0] = CALL_parser___parser_nodes___ABlockExpr___n_expr(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_syntax___icode_generation___ABlockExpr___generate_icode_1));
-  /* ./syntax//icode_generation.nit:461 */
+  /* ./syntax//icode_generation.nit:489 */
   fra.me.REG[1] = NIT_NULL;
   goto label2;
   label2: while(0);
@@ -2592,7 +2826,7 @@ val_t syntax___icode_generation___ADoExpr___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 = 466;
+  fra.me.line = 494;
   fra.me.meth = LOCATE_syntax___icode_generation___ADoExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2603,27 +2837,27 @@ val_t syntax___icode_generation___ADoExpr___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:468 */
+  /* ./syntax//icode_generation.nit:496 */
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:469 */
+  /* ./syntax//icode_generation.nit:497 */
   fra.me.REG[3] = NEW_ISeq_icode___icode_base___ISeq___init();
-  /* ./syntax//icode_generation.nit:470 */
+  /* ./syntax//icode_generation.nit:498 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:471 */
+  /* ./syntax//icode_generation.nit:499 */
   fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 471);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 499);
   }
   CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:472 */
+  /* ./syntax//icode_generation.nit:500 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:474 */
+  /* ./syntax//icode_generation.nit:502 */
   fra.me.REG[0] = CALL_parser___parser_nodes___ADoExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:476 */
+  /* ./syntax//icode_generation.nit:504 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:477 */
+  /* ./syntax//icode_generation.nit:505 */
   fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2631,200 +2865,209 @@ val_t syntax___icode_generation___ADoExpr___generate_icode(val_t p0, val_t p1){
   return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AReturnExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  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_syntax___icode_generation;
-  fra.me.line = 482;
+  fra.me.line = 510;
   fra.me.meth = LOCATE_syntax___icode_generation___AReturnExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:484 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:485 */
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:510 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:512 */
+  fra.me.REG[2] = CALL_parser___parser_nodes___AReturnExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:513 */
+  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      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)) {
-    /* ./syntax//icode_generation.nit:486 */
-    fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
-    REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
+    /* ./syntax//icode_generation.nit:514 */
+    fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___return_value(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 486);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 514);
     }
-    fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], 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]);
+    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:488 */
-  fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//icode_generation.nit:516 */
+  fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___return_seq(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 488);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 516);
   }
-  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:489 */
-  fra.me.REG[0] = NIT_NULL;
+  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:517 */
+  fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___ABreakExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 494;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_syntax___icode_generation___ABreakExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:496 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:497 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:522 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:524 */
+  fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:525 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:498 */
-    fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:526 */
+    fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 498);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 526);
     }
-    fra.me.REG[3] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 498);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 526);
     }
-    fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], 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]);
+    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./syntax//icode_generation.nit:500 */
-  fra.me.REG[0] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:528 */
+  fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___escapable(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, 500);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 528);
   }
-  fra.me.REG[0] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[2] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 500);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 528);
   }
-  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:501 */
-  fra.me.REG[0] = NIT_NULL;
+  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:529 */
+  fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AContinueExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 506;
+  fra.me.line = 534;
   fra.me.meth = LOCATE_syntax___icode_generation___AContinueExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:508 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:509 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:534 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:536 */
+  fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:537 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:510 */
-    fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:538 */
+    fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 510);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 538);
     }
-    fra.me.REG[3] = CALL_syntax___icode_generation___EscapableBlock___continue_value(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___icode_generation___EscapableBlock___continue_value(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 510);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 538);
     }
-    fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], 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]);
+    CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
   }
-  /* ./syntax//icode_generation.nit:512 */
-  fra.me.REG[0] = CALL_syntax___scope___AEscapeExpr___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:540 */
+  fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___escapable(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, 512);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 540);
   }
-  fra.me.REG[0] = CALL_syntax___icode_generation___EscapableBlock___continue_seq(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[2] = CALL_syntax___icode_generation___EscapableBlock___continue_seq(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[2]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 512);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 540);
   }
-  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:513 */
-  fra.me.REG[0] = NIT_NULL;
+  CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:541 */
+  fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AAbortExpr___generate_icode(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
@@ -2833,7 +3076,7 @@ val_t syntax___icode_generation___AAbortExpr___generate_icode(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_syntax___icode_generation;
-  fra.me.line = 518;
+  fra.me.line = 546;
   fra.me.meth = LOCATE_syntax___icode_generation___AAbortExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -2842,7 +3085,7 @@ val_t syntax___icode_generation___AAbortExpr___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:520 */
+  /* ./syntax//icode_generation.nit:548 */
   REGB0 = TAG_Int(0);
   fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   if (!once_value_1) {
@@ -2855,7 +3098,7 @@ val_t syntax___icode_generation___AAbortExpr___generate_icode(val_t p0, val_t p1
   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]);
   CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:521 */
+  /* ./syntax//icode_generation.nit:549 */
   fra.me.REG[0] = NIT_NULL;
   goto label2;
   label2: while(0);
@@ -2869,7 +3112,7 @@ val_t syntax___icode_generation___AIfExpr___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 = 526;
+  fra.me.line = 554;
   fra.me.meth = LOCATE_syntax___icode_generation___AIfExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2880,15 +3123,15 @@ val_t syntax___icode_generation___AIfExpr___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:528 */
+  /* ./syntax//icode_generation.nit:556 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AIfExpr___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]);
   fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:529 */
+  /* ./syntax//icode_generation.nit:557 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:530 */
+  /* ./syntax//icode_generation.nit:558 */
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:532 */
+  /* ./syntax//icode_generation.nit:560 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -2904,14 +3147,14 @@ val_t syntax___icode_generation___AIfExpr___generate_icode(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:533 */
+    /* ./syntax//icode_generation.nit:561 */
     fra.me.REG[4] = CALL_icode___icode_base___IIf___then_seq(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[4]);
-    /* ./syntax//icode_generation.nit:534 */
+    /* ./syntax//icode_generation.nit:562 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./syntax//icode_generation.nit:537 */
+  /* ./syntax//icode_generation.nit:565 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -2927,16 +3170,16 @@ val_t syntax___icode_generation___AIfExpr___generate_icode(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:538 */
+    /* ./syntax//icode_generation.nit:566 */
     fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(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:539 */
+    /* ./syntax//icode_generation.nit:567 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AIfExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./syntax//icode_generation.nit:542 */
+  /* ./syntax//icode_generation.nit:570 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:543 */
+  /* ./syntax//icode_generation.nit:571 */
   fra.me.REG[3] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2950,7 +3193,7 @@ val_t syntax___icode_generation___AWhileExpr___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 = 548;
+  fra.me.line = 576;
   fra.me.meth = LOCATE_syntax___icode_generation___AWhileExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -2963,28 +3206,28 @@ val_t syntax___icode_generation___AWhileExpr___generate_icode(val_t p0, val_t p1
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:550 */
+  /* ./syntax//icode_generation.nit:578 */
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:551 */
+  /* ./syntax//icode_generation.nit:579 */
   fra.me.REG[3] = NEW_ILoop_icode___icode_base___ILoop___init();
-  /* ./syntax//icode_generation.nit:552 */
+  /* ./syntax//icode_generation.nit:580 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:553 */
+  /* ./syntax//icode_generation.nit:581 */
   fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 553);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 581);
   }
   CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:554 */
+  /* ./syntax//icode_generation.nit:582 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:557 */
+  /* ./syntax//icode_generation.nit:585 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AWhileExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   fra.me.REG[4] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:558 */
+  /* ./syntax//icode_generation.nit:586 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:561 */
+  /* ./syntax//icode_generation.nit:589 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3000,29 +3243,29 @@ val_t syntax___icode_generation___AWhileExpr___generate_icode(val_t p0, val_t p1
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:562 */
+    /* ./syntax//icode_generation.nit:590 */
     fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(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[5]);
-    /* ./syntax//icode_generation.nit:563 */
+    /* ./syntax//icode_generation.nit:591 */
     fra.me.REG[5] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[6] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 563);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 591);
     }
     CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:564 */
+    /* ./syntax//icode_generation.nit:592 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AWhileExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./syntax//icode_generation.nit:568 */
+  /* ./syntax//icode_generation.nit:596 */
   fra.me.REG[4] = CALL_icode___icode_base___IIf___else_seq(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:569 */
+  /* ./syntax//icode_generation.nit:597 */
   CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:571 */
+  /* ./syntax//icode_generation.nit:599 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:572 */
+  /* ./syntax//icode_generation.nit:600 */
   fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -3036,7 +3279,7 @@ val_t syntax___icode_generation___ALoopExpr___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 = 577;
+  fra.me.line = 605;
   fra.me.meth = LOCATE_syntax___icode_generation___ALoopExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -3047,22 +3290,22 @@ val_t syntax___icode_generation___ALoopExpr___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:579 */
+  /* ./syntax//icode_generation.nit:607 */
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:580 */
+  /* ./syntax//icode_generation.nit:608 */
   fra.me.REG[3] = NEW_ILoop_icode___icode_base___ILoop___init();
-  /* ./syntax//icode_generation.nit:581 */
+  /* ./syntax//icode_generation.nit:609 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:582 */
+  /* ./syntax//icode_generation.nit:610 */
   fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 582);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 610);
   }
   CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:583 */
+  /* ./syntax//icode_generation.nit:611 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:586 */
+  /* ./syntax//icode_generation.nit:614 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -3078,26 +3321,26 @@ val_t syntax___icode_generation___ALoopExpr___generate_icode(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:587 */
+    /* ./syntax//icode_generation.nit:615 */
     fra.me.REG[3] = NEW_ISeq_icode___icode_base___ISeq___init();
-    /* ./syntax//icode_generation.nit:588 */
+    /* ./syntax//icode_generation.nit:616 */
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./syntax//icode_generation.nit:589 */
+    /* ./syntax//icode_generation.nit:617 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./syntax//icode_generation.nit:590 */
+    /* ./syntax//icode_generation.nit:618 */
     fra.me.REG[4] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 590);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 618);
     }
     CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-    /* ./syntax//icode_generation.nit:591 */
+    /* ./syntax//icode_generation.nit:619 */
     fra.me.REG[0] = CALL_parser___parser_nodes___ALoopExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
-  /* ./syntax//icode_generation.nit:594 */
+  /* ./syntax//icode_generation.nit:622 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:595 */
+  /* ./syntax//icode_generation.nit:623 */
   fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -3121,7 +3364,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(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_syntax___icode_generation;
-  fra.me.line = 600;
+  fra.me.line = 628;
   fra.me.meth = LOCATE_syntax___icode_generation___AForExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -3136,14 +3379,14 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:602 */
+  /* ./syntax//icode_generation.nit:630 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:603 */
+  /* ./syntax//icode_generation.nit:631 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:604 */
+  /* ./syntax//icode_generation.nit:632 */
   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_int(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:608 */
+  /* ./syntax//icode_generation.nit:636 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ARangeExpr, ID_parser___parser_nodes___ARangeExpr)) /*cast ARangeExpr*/;
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
@@ -3159,7 +3402,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:613 */
+    /* ./syntax//icode_generation.nit:641 */
     REGB0 = TAG_Int(2);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     fra.me.REG[6] = CALL_parser___parser_nodes___ARangeExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
@@ -3168,10 +3411,10 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
     fra.me.REG[6] = CALL_parser___parser_nodes___ARangeExpr___n_expr2(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:614 */
+    /* ./syntax//icode_generation.nit:642 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___ACrangeExpr, ID_parser___parser_nodes___ACrangeExpr)) /*cast ACrangeExpr*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//icode_generation.nit:615 */
+      /* ./syntax//icode_generation.nit:643 */
       fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_1) {
         if (!once_value_2) {
@@ -3189,13 +3432,13 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
       fra.me.REG[7] = fra.me.REG[7];
       fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4], fra.me.REG[7]);
     } else {
-      /* ./syntax//icode_generation.nit:617 */
+      /* ./syntax//icode_generation.nit:645 */
       REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AOrangeExpr, ID_parser___parser_nodes___AOrangeExpr)) /*cast AOrangeExpr*/;
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 617);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 645);
       }
-      /* ./syntax//icode_generation.nit:618 */
+      /* ./syntax//icode_generation.nit:646 */
       fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
       if (!once_value_3) {
         if (!once_value_4) {
@@ -3215,7 +3458,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
       fra.me.REG[7] = fra.me.REG[6];
     }
   } else {
-    /* ./syntax//icode_generation.nit:624 */
+    /* ./syntax//icode_generation.nit:652 */
     fra.me.REG[6] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
     if (!once_value_5) {
       if (!once_value_6) {
@@ -3233,7 +3476,7 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
     fra.me.REG[4] = fra.me.REG[4];
     fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___get_method(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
     fra.me.REG[7] = fra.me.REG[4];
-    /* ./syntax//icode_generation.nit:625 */
+    /* ./syntax//icode_generation.nit:653 */
     REGB0 = TAG_Int(1);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     fra.me.REG[3] = CALL_parser___parser_nodes___AForExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
@@ -3241,151 +3484,166 @@ val_t syntax___icode_generation___AForExpr___generate_icode(val_t p0, val_t p1){
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
     fra.me.REG[5] = fra.me.REG[4];
   }
-  /* ./syntax//icode_generation.nit:629 */
+  /* ./syntax//icode_generation.nit:657 */
   REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 629);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 657);
   }
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 629);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 657);
   }
   fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 629);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 657);
   }
   fra.me.REG[4] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = CALL_icode___icode_builder___MMSignature___generate_empty_iclosuredef(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:630 */
+  /* ./syntax//icode_generation.nit:658 */
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:632 */
+  /* ./syntax//icode_generation.nit:660 */
   fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
-  /* ./syntax//icode_generation.nit:633 */
+  /* ./syntax//icode_generation.nit:661 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:634 */
+  /* ./syntax//icode_generation.nit:662 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:635 */
+  /* ./syntax//icode_generation.nit:663 */
   fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(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, 635);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 663);
   }
   CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:636 */
+  /* ./syntax//icode_generation.nit:664 */
   fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(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, 636);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 664);
   }
   CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
-  /* ./syntax//icode_generation.nit:638 */
+  /* ./syntax//icode_generation.nit:666 */
   fra.me.REG[2] = CALL_icode___icode_base___IRoutine___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[2]);
-  /* ./syntax//icode_generation.nit:639 */
+  /* ./syntax//icode_generation.nit:667 */
   fra.me.REG[2] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[8] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 639);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 667);
   }
   CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
-  /* ./syntax//icode_generation.nit:640 */
+  /* ./syntax//icode_generation.nit:668 */
   fra.me.REG[8] = CALL_syntax___typing___AAbsControl___escapable(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 640);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 668);
   }
   CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[8])(fra.me.REG[8], NIT_NULL);
-  /* ./syntax//icode_generation.nit:641 */
+  /* ./syntax//icode_generation.nit:669 */
   REGB0 = TAG_Int(0);
   fra.me.REG[8] = CALL_syntax___syntax_base___AForExpr___variables(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:641 */
+      /* ./syntax//icode_generation.nit:669 */
       REGB2 = REGB0;
-      /* ./syntax//icode_generation.nit:642 */
+      /* ./syntax//icode_generation.nit:670 */
       fra.me.REG[8] = CALL_syntax___syntax_base___AForExpr___variables(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label7;
       label7: while(0);
-      /* ./syntax//icode_generation.nit:642 */
+      /* ./syntax//icode_generation.nit:670 */
       fra.me.REG[8] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8]);
       fra.me.REG[2] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[2] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB2);
+      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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label8;
     }
   }
   label8: while(0);
-  /* ./syntax//icode_generation.nit:644 */
+  /* ./syntax//icode_generation.nit:672 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AForExpr___n_block(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:647 */
+  /* ./syntax//icode_generation.nit:675 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:648 */
+  /* ./syntax//icode_generation.nit:676 */
   REGB0 = TAG_Int(1);
   fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
   CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[5], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:650 */
+  /* ./syntax//icode_generation.nit:678 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:651 */
+  /* ./syntax//icode_generation.nit:679 */
   fra.me.REG[3] = NIT_NULL;
   goto label9;
   label9: while(0);
@@ -3401,7 +3659,7 @@ val_t syntax___icode_generation___AAssertExpr___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 = 656;
+  fra.me.line = 684;
   fra.me.meth = LOCATE_syntax___icode_generation___AAssertExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -3412,24 +3670,24 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:658 */
+  /* ./syntax//icode_generation.nit:686 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___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:659 */
+  /* ./syntax//icode_generation.nit:687 */
   fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:660 */
+  /* ./syntax//icode_generation.nit:688 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:661 */
+  /* ./syntax//icode_generation.nit:689 */
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:662 */
+  /* ./syntax//icode_generation.nit:690 */
   fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(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:663 */
+  /* ./syntax//icode_generation.nit:691 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAssertExpr___n_else(fra.me.REG[0])(fra.me.REG[0]);
   CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:664 */
+  /* ./syntax//icode_generation.nit:692 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAssertExpr___n_id(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:665 */
+  /* ./syntax//icode_generation.nit:693 */
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -3443,7 +3701,7 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:666 */
+    /* ./syntax//icode_generation.nit:694 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -3457,7 +3715,7 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   } else {
-    /* ./syntax//icode_generation.nit:668 */
+    /* ./syntax//icode_generation.nit:696 */
     REGB0 = TAG_Int(1);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -3471,15 +3729,15 @@ val_t syntax___icode_generation___AAssertExpr___generate_icode(val_t p0, val_t p
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 668);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 696);
     }
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
     CALL_icode___icode_builder___ICodeBuilder___add_abort(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./syntax//icode_generation.nit:670 */
+  /* ./syntax//icode_generation.nit:698 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:671 */
+  /* ./syntax//icode_generation.nit:699 */
   fra.me.REG[3] = NIT_NULL;
   goto label3;
   label3: while(0);
@@ -3491,7 +3749,7 @@ val_t syntax___icode_generation___AVarExpr___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 = 676;
+  fra.me.line = 704;
   fra.me.meth = LOCATE_syntax___icode_generation___AVarExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3499,7 +3757,7 @@ val_t syntax___icode_generation___AVarExpr___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:678 */
+  /* ./syntax//icode_generation.nit:706 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
@@ -3512,7 +3770,7 @@ val_t syntax___icode_generation___AVarAssignExpr___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 = 683;
+  fra.me.line = 711;
   fra.me.meth = LOCATE_syntax___icode_generation___AVarAssignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3521,14 +3779,14 @@ val_t syntax___icode_generation___AVarAssignExpr___generate_icode(val_t p0, val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:685 */
+  /* ./syntax//icode_generation.nit:713 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAssignFormExpr___n_value(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:686 */
+  /* ./syntax//icode_generation.nit:714 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:687 */
+  /* ./syntax//icode_generation.nit:715 */
   fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -3536,64 +3794,67 @@ val_t syntax___icode_generation___AVarAssignExpr___generate_icode(val_t p0, val_
   return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AVarReassignExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 692;
+  fra.me.line = 720;
   fra.me.meth = LOCATE_syntax___icode_generation___AVarReassignExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:694 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:695 */
-  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:696 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./syntax//icode_generation.nit:720 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:722 */
+  fra.me.REG[3] = CALL_syntax___syntax_base___AVarFormExpr___variable(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:723 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:724 */
+  fra.me.REG[5] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(2);
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  fra.me.REG[5] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[4], fra.me.REG[5]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  fra.me.REG[6] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[5], fra.me.REG[6]);
+  fra.me.REG[2] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
+  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, 696);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 724);
   }
-  fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+  fra.me.REG[2] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool((fra.me.REG[2]!=NIT_NULL) && VAL_ISA(fra.me.REG[2], 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, 696);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 724);
   }
-  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:697 */
-  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:698 */
-  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:725 */
+  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:726 */
+  fra.me.REG[2] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___ASelfExpr___generate_icode(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 703;
+  fra.me.line = 731;
   fra.me.meth = LOCATE_syntax___icode_generation___ASelfExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3601,7 +3862,7 @@ val_t syntax___icode_generation___ASelfExpr___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:705 */
+  /* ./syntax//icode_generation.nit:733 */
   fra.me.REG[0] = CALL_syntax___syntax_base___ASelfExpr___variable(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   goto label1;
@@ -3614,7 +3875,7 @@ val_t syntax___icode_generation___AIfexprExpr___generate_icode(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 710;
+  fra.me.line = 738;
   fra.me.meth = LOCATE_syntax___icode_generation___AIfexprExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3626,34 +3887,34 @@ val_t syntax___icode_generation___AIfexprExpr___generate_icode(val_t p0, val_t p
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:713 */
+  /* ./syntax//icode_generation.nit:741 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AIfexprExpr___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]);
   fra.me.REG[2] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:714 */
+  /* ./syntax//icode_generation.nit:742 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:715 */
+  /* ./syntax//icode_generation.nit:743 */
   fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:718 */
+  /* ./syntax//icode_generation.nit:746 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:721 */
+  /* ./syntax//icode_generation.nit:749 */
   fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(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[5]);
-  /* ./syntax//icode_generation.nit:722 */
+  /* ./syntax//icode_generation.nit:750 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AIfexprExpr___n_then(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___generate_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:725 */
+  /* ./syntax//icode_generation.nit:753 */
   fra.me.REG[2] = CALL_icode___icode_base___IIf___else_seq(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:726 */
+  /* ./syntax//icode_generation.nit:754 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AIfexprExpr___n_else(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]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:728 */
+  /* ./syntax//icode_generation.nit:756 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:729 */
+  /* ./syntax//icode_generation.nit:757 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3664,7 +3925,7 @@ val_t syntax___icode_generation___AEeExpr___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 = 734;
+  fra.me.line = 762;
   fra.me.meth = LOCATE_syntax___icode_generation___AEeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3674,13 +3935,13 @@ val_t syntax___icode_generation___AEeExpr___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:736 */
+  /* ./syntax//icode_generation.nit:764 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AEeExpr___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:737 */
+  /* ./syntax//icode_generation.nit:765 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AEeExpr___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:738 */
+  /* ./syntax//icode_generation.nit:766 */
   fra.me.REG[3] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[3]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(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[3], fra.me.REG[0]);
@@ -3694,7 +3955,7 @@ val_t syntax___icode_generation___AOrExpr___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 = 743;
+  fra.me.line = 771;
   fra.me.meth = LOCATE_syntax___icode_generation___AOrExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3706,33 +3967,33 @@ val_t syntax___icode_generation___AOrExpr___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:746 */
+  /* ./syntax//icode_generation.nit:774 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:749 */
+  /* ./syntax//icode_generation.nit:777 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AOrExpr___n_expr(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]);
   fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:750 */
+  /* ./syntax//icode_generation.nit:778 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:751 */
+  /* ./syntax//icode_generation.nit:779 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:752 */
+  /* ./syntax//icode_generation.nit:780 */
   fra.me.REG[5] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:753 */
+  /* ./syntax//icode_generation.nit:781 */
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:756 */
+  /* ./syntax//icode_generation.nit:784 */
   fra.me.REG[3] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:757 */
+  /* ./syntax//icode_generation.nit:785 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AOrExpr___n_expr2(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]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:759 */
+  /* ./syntax//icode_generation.nit:787 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:760 */
+  /* ./syntax//icode_generation.nit:788 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3743,7 +4004,7 @@ val_t syntax___icode_generation___AAndExpr___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 = 765;
+  fra.me.line = 793;
   fra.me.meth = LOCATE_syntax___icode_generation___AAndExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -3755,33 +4016,33 @@ val_t syntax___icode_generation___AAndExpr___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:768 */
+  /* ./syntax//icode_generation.nit:796 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:771 */
+  /* ./syntax//icode_generation.nit:799 */
   fra.me.REG[3] = CALL_parser___parser_nodes___AAndExpr___n_expr(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]);
   fra.me.REG[3] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:772 */
+  /* ./syntax//icode_generation.nit:800 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:773 */
+  /* ./syntax//icode_generation.nit:801 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:774 */
+  /* ./syntax//icode_generation.nit:802 */
   fra.me.REG[5] = CALL_icode___icode_base___IIf___else_seq(fra.me.REG[3])(fra.me.REG[3]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:775 */
+  /* ./syntax//icode_generation.nit:803 */
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:778 */
+  /* ./syntax//icode_generation.nit:806 */
   fra.me.REG[3] = CALL_icode___icode_base___IIf___then_seq(fra.me.REG[3])(fra.me.REG[3]);
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:779 */
+  /* ./syntax//icode_generation.nit:807 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAndExpr___n_expr2(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]);
   CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:781 */
+  /* ./syntax//icode_generation.nit:809 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:782 */
+  /* ./syntax//icode_generation.nit:810 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3792,7 +4053,7 @@ val_t syntax___icode_generation___ANotExpr___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 = 787;
+  fra.me.line = 815;
   fra.me.meth = LOCATE_syntax___icode_generation___ANotExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3801,10 +4062,10 @@ val_t syntax___icode_generation___ANotExpr___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:789 */
+  /* ./syntax//icode_generation.nit:817 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ANotExpr___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:790 */
+  /* ./syntax//icode_generation.nit:818 */
   fra.me.REG[2] = NEW_INot_icode___icode_base___INot___init(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(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[2], fra.me.REG[0]);
@@ -3818,7 +4079,7 @@ val_t syntax___icode_generation___AOrElseExpr___generate_icode(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 795;
+  fra.me.line = 823;
   fra.me.meth = LOCATE_syntax___icode_generation___AOrElseExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -3831,80 +4092,90 @@ val_t syntax___icode_generation___AOrElseExpr___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:798 */
+  /* ./syntax//icode_generation.nit:826 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AOrElseExpr___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:801 */
+  /* ./syntax//icode_generation.nit:829 */
   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___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:804 */
+  /* ./syntax//icode_generation.nit:832 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___lit_null_reg(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:805 */
+  /* ./syntax//icode_generation.nit:833 */
   fra.me.REG[4] = NEW_IIs_icode___icode_base___IIs___init(fra.me.REG[2], fra.me.REG[4]);
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_metamodel___static_type___MMModule___type_bool(fra.me.REG[5])(fra.me.REG[5]);
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:806 */
+  /* ./syntax//icode_generation.nit:834 */
   fra.me.REG[5] = NEW_IIf_icode___icode_base___IIf___init(fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:807 */
+  /* ./syntax//icode_generation.nit:835 */
   CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:808 */
+  /* ./syntax//icode_generation.nit:836 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:811 */
+  /* ./syntax//icode_generation.nit:839 */
   fra.me.REG[6] = CALL_icode___icode_base___IIf___then_seq(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[6]);
-  /* ./syntax//icode_generation.nit:812 */
+  /* ./syntax//icode_generation.nit:840 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AOrElseExpr___n_expr2(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]);
   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:815 */
+  /* ./syntax//icode_generation.nit:843 */
   fra.me.REG[5] = CALL_icode___icode_base___IIf___else_seq(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[5]);
-  /* ./syntax//icode_generation.nit:816 */
+  /* ./syntax//icode_generation.nit:844 */
   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:818 */
+  /* ./syntax//icode_generation.nit:846 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:820 */
+  /* ./syntax//icode_generation.nit:848 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
 val_t syntax___icode_generation___AIsaExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 825;
+  fra.me.line = 853;
   fra.me.meth = LOCATE_syntax___icode_generation___AIsaExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:827 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___AIsaExpr___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:828 */
-  fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[2], fra.me.REG[3]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(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[3], fra.me.REG[0]);
+  /* ./syntax//icode_generation.nit:853 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:855 */
+  fra.me.REG[3] = CALL_parser___parser_nodes___AIsaExpr___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:856 */
+  fra.me.REG[4] = CALL_syntax___icode_generation___A2IContext___selfreg(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 856);
+  }
+  fra.me.REG[0] = CALL_parser___parser_nodes___AIsaExpr___n_type(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_syntax___syntax_base___AType___stype(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_ITypeCheck_icode___icode_base___ITypeCheck___init(fra.me.REG[4], fra.me.REG[3], fra.me.REG[0]);
+  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[0], fra.me.REG[2]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AAsCastExpr___generate_icode(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_syntax___icode_generation;
-  fra.me.line = 833;
+  fra.me.line = 861;
   fra.me.meth = LOCATE_syntax___icode_generation___AAsCastExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3913,13 +4184,13 @@ val_t syntax___icode_generation___AAsCastExpr___generate_icode(val_t p0, val_t p
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:835 */
+  /* ./syntax//icode_generation.nit:863 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAsCastExpr___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:836 */
+  /* ./syntax//icode_generation.nit:864 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:837 */
+  /* ./syntax//icode_generation.nit:865 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3930,7 +4201,7 @@ val_t syntax___icode_generation___AAsNotnullExpr___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 = 842;
+  fra.me.line = 870;
   fra.me.meth = LOCATE_syntax___icode_generation___AAsNotnullExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -3939,13 +4210,13 @@ val_t syntax___icode_generation___AAsNotnullExpr___generate_icode(val_t p0, val_
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:844 */
+  /* ./syntax//icode_generation.nit:872 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AAsNotnullExpr___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:845 */
+  /* ./syntax//icode_generation.nit:873 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   CALL_icode___icode_builder___ICodeBuilder___add_type_cast(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:846 */
+  /* ./syntax//icode_generation.nit:874 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -3956,7 +4227,7 @@ val_t syntax___icode_generation___ATrueExpr___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 = 851;
+  fra.me.line = 879;
   fra.me.meth = LOCATE_syntax___icode_generation___ATrueExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3964,7 +4235,7 @@ val_t syntax___icode_generation___ATrueExpr___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:853 */
+  /* ./syntax//icode_generation.nit:881 */
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_true_reg(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -3976,7 +4247,7 @@ val_t syntax___icode_generation___AFalseExpr___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 = 858;
+  fra.me.line = 886;
   fra.me.meth = LOCATE_syntax___icode_generation___AFalseExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -3984,7 +4255,7 @@ val_t syntax___icode_generation___AFalseExpr___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:860 */
+  /* ./syntax//icode_generation.nit:888 */
   fra.me.REG[1] = CALL_icode___icode_builder___ICodeBuilder___lit_false_reg(fra.me.REG[1])(fra.me.REG[1]);
   goto label1;
   label1: while(0);
@@ -3996,7 +4267,7 @@ val_t syntax___icode_generation___AIntExpr___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 = 865;
+  fra.me.line = 893;
   fra.me.meth = LOCATE_syntax___icode_generation___AIntExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4005,7 +4276,7 @@ val_t syntax___icode_generation___AIntExpr___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:867 */
+  /* ./syntax//icode_generation.nit:895 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AIntExpr___n_number(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[2]);
@@ -4021,7 +4292,7 @@ val_t syntax___icode_generation___AFloatExpr___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 = 872;
+  fra.me.line = 900;
   fra.me.meth = LOCATE_syntax___icode_generation___AFloatExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4030,7 +4301,7 @@ val_t syntax___icode_generation___AFloatExpr___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:874 */
+  /* ./syntax//icode_generation.nit:902 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AFloatExpr___n_float(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_IFloatValue_icode___icode_base___IFloatValue___init(fra.me.REG[2]);
@@ -4046,7 +4317,7 @@ val_t syntax___icode_generation___ACharExpr___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 = 879;
+  fra.me.line = 907;
   fra.me.meth = LOCATE_syntax___icode_generation___ACharExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4055,7 +4326,7 @@ val_t syntax___icode_generation___ACharExpr___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:881 */
+  /* ./syntax//icode_generation.nit:909 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ACharExpr___n_char(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___lexer___Token___text(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = NEW_ICharValue_icode___icode_base___ICharValue___init(fra.me.REG[2]);
@@ -4074,7 +4345,7 @@ val_t syntax___icode_generation___AStringFormExpr___generate_icode(val_t p0, val
     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 = 886;
+  fra.me.line = 914;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -4089,43 +4360,45 @@ val_t syntax___icode_generation___AStringFormExpr___generate_icode(val_t p0, val
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:888 */
-  CALL_syntax___icode_generation___AStringFormExpr___compute_string_infos(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:889 */
-  fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:890 */
-  fra.me.REG[3] = NEW_IOnce_icode___icode_base___IOnce___init();
-  /* ./syntax//icode_generation.nit:891 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___AExpr___stype(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:892 */
-  fra.me.REG[3] = CALL_icode___icode_base___IOnce___body(fra.me.REG[3])(fra.me.REG[3]);
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:893 */
-  fra.me.REG[3] = ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+  /* ./syntax//icode_generation.nit:914 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:916 */
+  CALL_syntax___icode_generation___AStringFormExpr___compute_string_infos(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:917 */
+  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//icode_generation.nit:918 */
+  fra.me.REG[4] = NEW_IOnce_icode___icode_base___IOnce___init();
+  /* ./syntax//icode_generation.nit:919 */
+  fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:920 */
+  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:921 */
+  fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 893);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 921);
   }
-  fra.me.REG[3] = NEW_IStringValue_icode___icode_base___IStringValue___init(fra.me.REG[3]);
-  fra.me.REG[5] = CALL_syntax___icode_generation___A2IContext___visitor(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_nativestring(fra.me.REG[5])(fra.me.REG[5]);
-  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:894 */
-  fra.me.REG[3] = ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  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:922 */
+  fra.me.REG[4] = ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 894);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 922);
   }
-  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = NEW_IIntValue_icode___icode_base___IIntValue___init(fra.me.REG[3]);
+  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[3], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:895 */
-  fra.me.REG[3] = 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[0])(fra.me.REG[0]);
+  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:923 */
+  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]);
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[8] = BOX_NativeString("with_native");
@@ -4140,37 +4413,37 @@ 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[3])(fra.me.REG[3], fra.me.REG[7], fra.me.REG[8]);
-  /* ./syntax//icode_generation.nit:896 */
-  fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+  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:924 */
+  fra.me.REG[7] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Int(2);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  fra.me.REG[3] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[7], fra.me.REG[8], fra.me.REG[3]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(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[3], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:897 */
-  CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:898 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:899 */
+  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]);
+  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:925 */
+  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:926 */
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:927 */
   goto label3;
   label3: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+  return fra.me.REG[5];
 }
 val_t syntax___icode_generation___AStringFormExpr___string_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_syntax___icode_generation;
-  fra.me.line = 902;
+  fra.me.line = 930;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//icode_generation.nit:902 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 902);
+  /* ./syntax//icode_generation.nit:930 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___icode_generation, 930);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -4185,7 +4458,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 = 911;
+  fra.me.line = 939;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringFormExpr___compute_string_infos;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -4193,56 +4466,61 @@ 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:914 */
+  /* ./syntax//icode_generation.nit:942 */
   REGB0 = TAG_Int(0);
-  /* ./syntax//icode_generation.nit:915 */
+  /* ./syntax//icode_generation.nit:943 */
   fra.me.REG[1] = CALL_syntax___icode_generation___AStringFormExpr___string_text(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:916 */
+  /* ./syntax//icode_generation.nit:944 */
   fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./syntax//icode_generation.nit:917 */
+  /* ./syntax//icode_generation.nit:945 */
   REGB1 = TAG_Int(0);
-  /* ./syntax//icode_generation.nit:918 */
+  /* ./syntax//icode_generation.nit:946 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    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);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./syntax//icode_generation.nit:918 */
+    /* ./syntax//icode_generation.nit:946 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:919 */
-      REGB2 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-      /* ./syntax//icode_generation.nit:920 */
+      /* ./syntax//icode_generation.nit:947 */
+      REGB2 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+      /* ./syntax//icode_generation.nit:948 */
       REGB3 = TAG_Char('\\');
       REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB3));
       if (UNTAG_Bool(REGB4)) {
       } else {
-        /* ./../lib/standard//kernel.nit:350 */
+        /* ./../lib/standard//kernel.nit:378 */
         REGB3 = TAG_Bool((REGB2)==(REGB3));
-        /* ./syntax//icode_generation.nit:920 */
+        /* ./syntax//icode_generation.nit:948 */
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* ./syntax//icode_generation.nit:921 */
+        /* ./syntax//icode_generation.nit:949 */
         REGB4 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB4 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB4));
-        /* ./syntax//icode_generation.nit:921 */
+        /* ./syntax//icode_generation.nit:949 */
         REGB1 = REGB4;
-        /* ./syntax//icode_generation.nit:922 */
-        REGB4 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
-        /* ./syntax//icode_generation.nit:923 */
+        /* ./syntax//icode_generation.nit:950 */
+        REGB4 = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[1])(fra.me.REG[1], REGB1);
+        /* ./syntax//icode_generation.nit:951 */
         REGB3 = TAG_Char('{');
         REGB5 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB5)) {
         } else {
-          /* ./../lib/standard//kernel.nit:350 */
+          /* ./../lib/standard//kernel.nit:378 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
-          /* ./syntax//icode_generation.nit:923 */
+          /* ./syntax//icode_generation.nit:951 */
           REGB5 = REGB3;
         }
         REGB5 = TAG_Bool(!UNTAG_Bool(REGB5));
@@ -4251,9 +4529,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:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB5 = TAG_Bool((REGB4)==(REGB5));
-            /* ./syntax//icode_generation.nit:923 */
+            /* ./syntax//icode_generation.nit:951 */
             REGB3 = REGB5;
           }
           REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -4262,36 +4540,36 @@ void syntax___icode_generation___AStringFormExpr___compute_string_infos(val_t p0
           REGB3 = REGB5;
         }
         if (UNTAG_Bool(REGB3)) {
-          /* ./syntax//icode_generation.nit:924 */
+          /* ./syntax//icode_generation.nit:952 */
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
         }
-        /* ./syntax//icode_generation.nit:926 */
+        /* ./syntax//icode_generation.nit:954 */
         REGB2 = REGB4;
       }
-      /* ./syntax//icode_generation.nit:928 */
+      /* ./syntax//icode_generation.nit:956 */
       REGB4 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB4 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB4));
-      /* ./syntax//icode_generation.nit:928 */
+      /* ./syntax//icode_generation.nit:956 */
       REGB0 = REGB4;
-      /* ./syntax//icode_generation.nit:929 */
+      /* ./syntax//icode_generation.nit:957 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB2);
-      /* ./syntax//icode_generation.nit:930 */
+      /* ./syntax//icode_generation.nit:958 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./syntax//icode_generation.nit:930 */
+      /* ./syntax//icode_generation.nit:958 */
       REGB1 = REGB2;
     } else {
-      /* ./syntax//icode_generation.nit:918 */
+      /* ./syntax//icode_generation.nit:946 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//icode_generation.nit:932 */
+  /* ./syntax//icode_generation.nit:960 */
   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:933 */
+  /* ./syntax//icode_generation.nit:961 */
   ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -4304,31 +4582,31 @@ 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 = 938;
+  fra.me.line = 966;
   fra.me.meth = LOCATE_syntax___icode_generation___AStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:938 */
+  /* ./syntax//icode_generation.nit:966 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_parser___parser_nodes___AStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:938 */
+  /* ./syntax//icode_generation.nit:966 */
   REGB2 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:938 */
+  /* ./syntax//icode_generation.nit:966 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4343,31 +4621,31 @@ 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 = 941;
+  fra.me.line = 969;
   fra.me.meth = LOCATE_syntax___icode_generation___AStartStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:941 */
+  /* ./syntax//icode_generation.nit:969 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_parser___parser_nodes___AStartStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:941 */
+  /* ./syntax//icode_generation.nit:969 */
   REGB2 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:941 */
+  /* ./syntax//icode_generation.nit:969 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4382,31 +4660,31 @@ 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 = 944;
+  fra.me.line = 972;
   fra.me.meth = LOCATE_syntax___icode_generation___AMidStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:944 */
+  /* ./syntax//icode_generation.nit:972 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_parser___parser_nodes___AMidStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:944 */
+  /* ./syntax//icode_generation.nit:972 */
   REGB2 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:944 */
+  /* ./syntax//icode_generation.nit:972 */
   fra.me.REG[1] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
   goto label1;
   label1: while(0);
@@ -4421,31 +4699,31 @@ 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 = 947;
+  fra.me.line = 975;
   fra.me.meth = LOCATE_syntax___icode_generation___AEndStringExpr___string_text;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//icode_generation.nit:947 */
+  /* ./syntax//icode_generation.nit:975 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Int(1);
   fra.me.REG[0] = CALL_parser___parser_nodes___AEndStringExpr___n_string(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:947 */
+  /* ./syntax//icode_generation.nit:975 */
   REGB2 = TAG_Int(2);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-  /* ./syntax//icode_generation.nit:947 */
+  /* ./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);
@@ -4460,7 +4738,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 = 951;
+  fra.me.line = 979;
   fra.me.meth = LOCATE_syntax___icode_generation___ASuperstringExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -4472,12 +4750,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:953 */
+  /* ./syntax//icode_generation.nit:981 */
   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:954 */
+  /* ./syntax//icode_generation.nit:982 */
   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]);
@@ -4496,10 +4774,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:955 */
+  /* ./syntax//icode_generation.nit:983 */
   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:962 */
+  /* ./syntax//icode_generation.nit:990 */
   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]);
@@ -4530,9 +4808,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:956 */
+    /* ./syntax//icode_generation.nit:984 */
     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:957 */
+    /* ./syntax//icode_generation.nit:985 */
     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]));
@@ -4543,7 +4821,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:958 */
+      /* ./syntax//icode_generation.nit:986 */
       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]);
@@ -4552,7 +4830,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:960 */
+    /* ./syntax//icode_generation.nit:988 */
     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;
@@ -4562,7 +4840,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 = 967;
+  fra.me.line = 995;
   fra.me.meth = LOCATE_syntax___icode_generation___ANullExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -4570,7 +4848,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:969 */
+  /* ./syntax//icode_generation.nit:997 */
   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);
@@ -4583,7 +4861,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 = 974;
+  fra.me.line = 1002;
   fra.me.meth = LOCATE_syntax___icode_generation___AArrayExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -4593,15 +4871,15 @@ val_t syntax___icode_generation___AArrayExpr___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:976 */
+  /* ./syntax//icode_generation.nit:1004 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[3] = CALL_parser___parser_nodes___AArrayExpr___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:977 */
+  /* ./syntax//icode_generation.nit:1005 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AArrayExpr___n_exprs(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_syntax___icode_generation___AArrayExpr___generate_icode_1));
-  /* ./syntax//icode_generation.nit:981 */
+  /* ./syntax//icode_generation.nit:1009 */
   goto label2;
   label2: while(0);
   stack_frame_head = fra.me.prev;
@@ -4622,9 +4900,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:978 */
+    /* ./syntax//icode_generation.nit:1006 */
     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:979 */
+    /* ./syntax//icode_generation.nit:1007 */
     CALL_syntax___icode_generation___A2IContext___add_call_array_add(closctx->REG[1])(closctx->REG[1], closctx->REG[2], fra.me.REG[0]);
     stack_frame_head = fra.me.prev;
     return;
@@ -4637,7 +4915,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 = 986;
+  fra.me.line = 1014;
   fra.me.meth = LOCATE_syntax___icode_generation___ACrangeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -4650,13 +4928,13 @@ 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:988 */
+  /* ./syntax//icode_generation.nit:1016 */
   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:989 */
+  /* ./syntax//icode_generation.nit:1017 */
   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:990 */
+  /* ./syntax//icode_generation.nit:1018 */
   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) {
@@ -4674,7 +4952,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:991 */
+  /* ./syntax//icode_generation.nit:1019 */
   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);
@@ -4696,7 +4974,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 = 996;
+  fra.me.line = 1024;
   fra.me.meth = LOCATE_syntax___icode_generation___AOrangeExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -4709,13 +4987,13 @@ 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:998 */
+  /* ./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:999 */
+  /* ./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:1000 */
+  /* ./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) {
@@ -4733,7 +5011,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:1001 */
+  /* ./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);
@@ -4756,7 +5034,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 = 1006;
+  fra.me.line = 1034;
   fra.me.meth = LOCATE_syntax___icode_generation___ASuperExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -4768,14 +5046,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:1008 */
+  /* ./syntax//icode_generation.nit:1036 */
   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:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-  /* ./syntax//icode_generation.nit:1009 */
+  /* ./syntax//icode_generation.nit:1037 */
   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)) {
@@ -4791,84 +5069,89 @@ 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:1010 */
+    /* ./syntax//icode_generation.nit:1038 */
     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, 1010);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1038);
     }
     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, 1010);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1038);
     }
     REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
     REGB1 = REGB0;
   }
-  /* ./syntax//icode_generation.nit:1012 */
+  /* ./syntax//icode_generation.nit:1040 */
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-  /* ./syntax//icode_generation.nit:1012 */
+  /* ./syntax//icode_generation.nit:1040 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  /* ./syntax//icode_generation.nit:1013 */
+  /* ./syntax//icode_generation.nit:1041 */
   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___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB0);
+  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:1014 */
+  /* ./syntax//icode_generation.nit:1042 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
   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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB0 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//icode_generation.nit:1014 */
+    /* ./syntax//icode_generation.nit:1042 */
     REGB2 = REGB0;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//icode_generation.nit:1015 */
+    /* ./syntax//icode_generation.nit:1043 */
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//icode_generation.nit:1015 */
+        /* ./syntax//icode_generation.nit:1043 */
         REGB0 = REGB2;
-        /* ./syntax//icode_generation.nit:1016 */
+        /* ./syntax//icode_generation.nit:1044 */
         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]);
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ./syntax//icode_generation.nit:1016 */
-        fra.me.REG[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB3);
+        /* ./syntax//icode_generation.nit:1044 */
+        fra.me.REG[3] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[3])(fra.me.REG[3], REGB3);
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = REGB3;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label1;
       }
     }
     label1: while(0);
   } else {
-    /* ./syntax//icode_generation.nit:1019 */
+    /* ./syntax//icode_generation.nit:1047 */
     fra.me.REG[3] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
     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:1023 */
+  /* ./syntax//icode_generation.nit:1051 */
   fra.me.REG[3] = CALL_syntax___syntax_base___ASuperExpr___init_in_superclass(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:1024 */
+  /* ./syntax//icode_generation.nit:1052 */
   REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -4883,18 +5166,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:1025 */
+    /* ./syntax//icode_generation.nit:1053 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1025);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1053);
     }
     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, 1025);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1053);
     }
     fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-    /* ./syntax//icode_generation.nit:1026 */
+    /* ./syntax//icode_generation.nit:1054 */
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -4909,34 +5192,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:1027 */
+      /* ./syntax//icode_generation.nit:1055 */
       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:1029 */
+      /* ./syntax//icode_generation.nit:1057 */
       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:1030 */
+      /* ./syntax//icode_generation.nit:1058 */
       fra.me.REG[4] = NIT_NULL;
       goto label3;
     }
   } else {
-    /* ./syntax//icode_generation.nit:1033 */
+    /* ./syntax//icode_generation.nit:1061 */
     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:1034 */
+    /* ./syntax//icode_generation.nit:1062 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1034);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1062);
     }
     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, 1034);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1062);
     }
     fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./syntax//icode_generation.nit:1035 */
+    /* ./syntax//icode_generation.nit:1063 */
     REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -4950,14 +5233,14 @@ val_t syntax___icode_generation___ASuperExpr___generate_icode(val_t p0, val_t p1
       }
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:1036 */
+      /* ./syntax//icode_generation.nit:1064 */
       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:1037 */
+      /* ./syntax//icode_generation.nit:1065 */
       fra.me.REG[4] = NIT_NULL;
       goto label3;
     } else {
-      /* ./syntax//icode_generation.nit:1039 */
+      /* ./syntax//icode_generation.nit:1067 */
       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];
@@ -4983,7 +5266,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:1020 */
+      /* ./syntax//icode_generation.nit:1048 */
       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;
@@ -4995,7 +5278,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 = 1046;
+  fra.me.line = 1074;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5005,17 +5288,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:1048 */
+  /* ./syntax//icode_generation.nit:1076 */
   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:1049 */
+  /* ./syntax//icode_generation.nit:1077 */
   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:1050 */
+  /* ./syntax//icode_generation.nit:1078 */
   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;
@@ -5029,7 +5312,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 = 1055;
+  fra.me.line = 1083;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrAssignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5039,24 +5322,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:1057 */
+  /* ./syntax//icode_generation.nit:1085 */
   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:1058 */
+  /* ./syntax//icode_generation.nit:1086 */
   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:1059 */
+  /* ./syntax//icode_generation.nit:1087 */
   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:1060 */
+  /* ./syntax//icode_generation.nit:1088 */
   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:1061 */
+  /* ./syntax//icode_generation.nit:1089 */
   fra.me.REG[3] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -5069,7 +5352,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 = 1065;
+  fra.me.line = 1093;
   fra.me.meth = LOCATE_syntax___icode_generation___AAttrReassignExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5082,25 +5365,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:1067 */
+  /* ./syntax//icode_generation.nit:1095 */
   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:1068 */
+  /* ./syntax//icode_generation.nit:1096 */
   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:1069 */
+  /* ./syntax//icode_generation.nit:1097 */
   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:1070 */
+  /* ./syntax//icode_generation.nit:1098 */
   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:1071 */
+  /* ./syntax//icode_generation.nit:1099 */
   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);
@@ -5109,11 +5392,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:1072 */
+  /* ./syntax//icode_generation.nit:1100 */
   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:1073 */
+  /* ./syntax//icode_generation.nit:1101 */
   fra.me.REG[5] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -5126,7 +5409,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 = 1078;
+  fra.me.line = 1106;
   fra.me.meth = LOCATE_syntax___icode_generation___AIssetAttrExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5136,17 +5419,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:1080 */
+  /* ./syntax//icode_generation.nit:1108 */
   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:1081 */
+  /* ./syntax//icode_generation.nit:1109 */
   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:1082 */
+  /* ./syntax//icode_generation.nit:1110 */
   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]);
@@ -5172,7 +5455,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 = 1087;
+  fra.me.line = 1115;
   fra.me.meth = LOCATE_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5187,180 +5470,210 @@ 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:1090 */
+  /* ./syntax//icode_generation.nit:1118 */
   REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1091 */
+  /* ./syntax//icode_generation.nit:1119 */
   REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1092 */
+  /* ./syntax//icode_generation.nit:1120 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    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:1094 */
+  /* ./syntax//icode_generation.nit:1122 */
   REGB3 = TAG_Int(0);
-  /* ./syntax//icode_generation.nit:1095 */
+  /* ./syntax//icode_generation.nit:1123 */
   REGB4 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:330 */
+  /* ./../lib/standard//kernel.nit:347 */
   REGB5 = REGB0;
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB6 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB5));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB6)) {
-      /* ./syntax//icode_generation.nit:1095 */
+      /* ./syntax//icode_generation.nit:1123 */
       REGB6 = REGB4;
-      /* ./syntax//icode_generation.nit:1097 */
+      /* ./syntax//icode_generation.nit:1125 */
       fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB6);
-      /* ./syntax//icode_generation.nit:1098 */
+      /* ./syntax//icode_generation.nit:1126 */
       REGB7 = TAG_Bool(IS_EQUAL_OO(REGB6,REGB1));
       if (UNTAG_Bool(REGB7)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB6 = TAG_Bool((REGB6)==(REGB1));
-        /* ./syntax//icode_generation.nit:1098 */
+        /* ./syntax//icode_generation.nit:1126 */
         REGB7 = REGB6;
       }
       if (UNTAG_Bool(REGB7)) {
-        /* ./syntax//icode_generation.nit:1099 */
+        /* ./syntax//icode_generation.nit:1127 */
         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:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* ./syntax//icode_generation.nit:1099 */
+        /* ./syntax//icode_generation.nit:1127 */
         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:1100 */
+        /* ./syntax//icode_generation.nit:1128 */
         REGB7 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB6 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB0));
-        /* ./../lib/standard//kernel.nit:324 */
+        /* ./../lib/standard//kernel.nit:341 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:214 */
+          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:231 */
           REGB8 = TAG_Bool(UNTAG_Int(REGB7)<=UNTAG_Int(REGB6));
-          /* ./../lib/standard//kernel.nit:324 */
+          /* ./../lib/standard//kernel.nit:341 */
           if (UNTAG_Bool(REGB8)) {
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[5] = fra.me.REG[0];
             REGB8 = REGB3;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB9 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB9 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB9));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB9 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB9 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB9));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB10 = TAG_Bool(false);
               REGB9 = REGB10;
             }
             if (UNTAG_Bool(REGB9)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB8)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label1;
             label1: while(0);
-            /* ./syntax//icode_generation.nit:1102 */
+            /* ./syntax//icode_generation.nit:1130 */
             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:1103 */
+            /* ./syntax//icode_generation.nit:1131 */
             REGB8 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB8 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB8));
-            /* ./syntax//icode_generation.nit:1103 */
+            /* ./syntax//icode_generation.nit:1131 */
             REGB3 = REGB8;
-            /* ./../lib/standard//kernel.nit:326 */
+            /* ./../lib/standard//kernel.nit:343 */
             REGB8 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB8 = TAG_Int(UNTAG_Int(REGB7)+UNTAG_Int(REGB8));
-            /* ./../lib/standard//kernel.nit:326 */
+            /* ./../lib/standard//kernel.nit:343 */
             REGB7 = REGB8;
           } else {
-            /* ./../lib/standard//kernel.nit:324 */
+            /* ./../lib/standard//kernel.nit:341 */
             goto label2;
           }
         }
         label2: while(0);
-        /* ./syntax//icode_generation.nit:1105 */
+        /* ./syntax//icode_generation.nit:1133 */
         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:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[4] = fra.me.REG[0];
         REGB7 = REGB3;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB6 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB6 = TAG_Bool(UNTAG_Int(REGB7)>=UNTAG_Int(REGB6));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB6 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB6 = TAG_Bool(UNTAG_Int(REGB7)<UNTAG_Int(REGB6));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB8 = TAG_Bool(false);
           REGB6 = REGB8;
         }
         if (UNTAG_Bool(REGB6)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB7)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label3;
         label3: while(0);
-        /* ./syntax//icode_generation.nit:1107 */
+        /* ./syntax//icode_generation.nit:1135 */
         fra.me.REG[5] = fra.me.REG[4];
-        /* ./syntax//icode_generation.nit:1108 */
+        /* ./syntax//icode_generation.nit:1136 */
         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:1109 */
+        /* ./syntax//icode_generation.nit:1137 */
         REGB7 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB7 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB7));
-        /* ./syntax//icode_generation.nit:1109 */
+        /* ./syntax//icode_generation.nit:1137 */
         REGB3 = REGB7;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB7 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB7 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB7));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB4 = REGB7;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label4;
     }
   }
@@ -5378,7 +5691,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 = 1116;
+  fra.me.line = 1144;
   fra.me.meth = LOCATE_syntax___icode_generation___ASendExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 16;
@@ -5400,39 +5713,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:1118 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___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 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//icode_generation.nit:1120 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1121 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//icode_generation.nit:1122 */
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  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*/;
+  /* ./syntax//icode_generation.nit:1144 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:1146 */
+  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:1147 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* ./syntax//icode_generation.nit:1148 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:1149 */
+  fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:1150 */
+  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, 1122);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1150);
   }
-  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[3], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:1123 */
-  fra.me.REG[4] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1127 */
-  fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:1128 */
+  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:1151 */
+  fra.me.REG[5] = NIT_NULL;
+  /* ./syntax//icode_generation.nit:1155 */
+  fra.me.REG[0] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//icode_generation.nit:1156 */
   fra.me.REG[6] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1129 */
-  fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
+  /* ./syntax//icode_generation.nit:1157 */
+  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:1130 */
-    fra.me.REG[7] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./syntax//icode_generation.nit:1158 */
+    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:1131 */
+    /* ./syntax//icode_generation.nit:1159 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -5447,23 +5762,23 @@ 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:1132 */
+      /* ./syntax//icode_generation.nit:1160 */
       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[4] = fra.me.REG[7];
+      fra.me.REG[5] = fra.me.REG[7];
     }
-    /* ./syntax//icode_generation.nit:1134 */
+    /* ./syntax//icode_generation.nit:1162 */
     fra.me.REG[7] = NEW_ISeq_icode___icode_base___ISeq___init();
-    /* ./syntax//icode_generation.nit:1135 */
+    /* ./syntax//icode_generation.nit:1163 */
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-    /* ./syntax//icode_generation.nit:1136 */
+    /* ./syntax//icode_generation.nit:1164 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7]);
-    /* ./syntax//icode_generation.nit:1137 */
+    /* ./syntax//icode_generation.nit:1165 */
     fra.me.REG[8] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[6] = fra.me.REG[8];
-    /* ./syntax//icode_generation.nit:1138 */
+    /* ./syntax//icode_generation.nit:1166 */
     REGB0 = TAG_Int(0);
-    /* ./syntax//icode_generation.nit:1139 */
-    fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./syntax//icode_generation.nit:1167 */
+    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)) {
     } else {
@@ -5478,60 +5793,65 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
+      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, 1139);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1167);
       }
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
     }
-    /* ./syntax//icode_generation.nit:1140 */
-    fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./syntax//icode_generation.nit:1141 */
-    fra.me.REG[9] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
+    /* ./syntax//icode_generation.nit:1168 */
+    fra.me.REG[8] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
+    /* ./syntax//icode_generation.nit:1169 */
+    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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//icode_generation.nit:1142 */
+        /* ./syntax//icode_generation.nit:1170 */
         REGB1 = TAG_Bool(false);
-        /* ./syntax//icode_generation.nit:1143 */
+        /* ./syntax//icode_generation.nit:1171 */
         fra.me.REG[11] = CALL_metamodel___static_type___MMClosure___name(fra.me.REG[11])(fra.me.REG[11]);
-        /* ./syntax//icode_generation.nit:1144 */
+        /* ./syntax//icode_generation.nit:1172 */
         REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
@@ -5546,45 +5866,50 @@ 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:1145 */
+          /* ./syntax//icode_generation.nit:1173 */
           REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1145);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1173);
           }
-          /* ./../lib/standard//collection//array.nit:231 */
+          /* ./../lib/standard//collection//array.nit:266 */
           fra.me.REG[12] = fra.me.REG[8];
-          /* ./../lib/standard//collection//array.nit:234 */
+          /* ./../lib/standard//collection//array.nit:269 */
           REGB2 = TAG_Int(0);
-          /* ./../lib/standard//collection//array.nit:235 */
+          /* ./../lib/standard//collection//array.nit:270 */
           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, 235);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
-          /* ./../lib/standard//collection//array.nit:236 */
+          /* ./../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:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           while(1) {
-            /* ./../lib/standard//collection//array.nit:23 */
+            /* ./../lib/standard//collection//array.nit:24 */
             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, 23);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
             }
             REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[12]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             if (UNTAG_Bool(REGB3)) {
-              /* ./../lib/standard//collection//array.nit:238 */
+              /* ./../lib/standard//collection//array.nit:273 */
               REGB3 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
+              /* ./../lib/standard//collection//array.nit:718 */
               fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB2)];
-              /* ./syntax//icode_generation.nit:1146 */
+              /* ./syntax//icode_generation.nit:1174 */
               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]));
@@ -5597,100 +5922,100 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
               if (UNTAG_Bool(REGB3)) {
                goto label1;
               }
-              /* ./syntax//icode_generation.nit:1147 */
+              /* ./syntax//icode_generation.nit:1175 */
               REGB3 = TAG_Bool(false);
               REGB4 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB3));
               if (UNTAG_Bool(REGB4)) {
               } else {
-               /* ./../lib/standard//kernel.nit:178 */
+               /* ./../lib/standard//kernel.nit:195 */
                REGB3 = TAG_Bool((REGB1)==(REGB3));
-               /* ./syntax//icode_generation.nit:1147 */
+               /* ./syntax//icode_generation.nit:1175 */
                REGB4 = REGB3;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1147);
+               nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1175);
               }
-              /* ./syntax//icode_generation.nit:1148 */
+              /* ./syntax//icode_generation.nit:1176 */
               REGB4 = TAG_Bool(true);
               REGB1 = REGB4;
-              /* ./syntax//icode_generation.nit:1149 */
+              /* ./syntax//icode_generation.nit:1177 */
               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, 1149);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1177);
               }
               CALL_syntax___icode_generation___EscapableBlock___break_seq__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[7]);
-              /* ./syntax//icode_generation.nit:1150 */
+              /* ./syntax//icode_generation.nit:1178 */
               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, 1150);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1178);
               }
-              CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[4]);
-              /* ./syntax//icode_generation.nit:1151 */
+              CALL_syntax___icode_generation___EscapableBlock___break_value__eq(fra.me.REG[15])(fra.me.REG[15], fra.me.REG[5]);
+              /* ./syntax//icode_generation.nit:1179 */
               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:1152 */
+              /* ./syntax//icode_generation.nit:1180 */
               REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1152);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1180);
               }
               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:239 */
+              /* ./../lib/standard//collection//array.nit:274 */
               REGB4 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB4 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB4));
-              /* ./../lib/standard//collection//array.nit:239 */
+              /* ./../lib/standard//collection//array.nit:274 */
               REGB2 = REGB4;
             } else {
-              /* ./../lib/standard//collection//array.nit:237 */
+              /* ./../lib/standard//collection//array.nit:272 */
               goto label2;
             }
           }
           label2: while(0);
         }
-        /* ./syntax//icode_generation.nit:1155 */
+        /* ./syntax//icode_generation.nit:1183 */
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//icode_generation.nit:1156 */
+          /* ./syntax//icode_generation.nit:1184 */
           REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1156);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1184);
           }
           CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label3;
       }
     }
     label3: while(0);
   }
-  /* ./syntax//icode_generation.nit:1161 */
-  fra.me.REG[6] = CALL_icode___icode_builder___ICodeBuilder___add_call(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3], fra.me.REG[6]);
-  /* ./syntax//icode_generation.nit:1164 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AAbsAbsSendExpr___prop_signature(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_metamodel___static_type___MMSignature___closures(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]);
+  /* ./syntax//icode_generation.nit:1189 */
+  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:1192 */
+  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:1165 */
-    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:1193 */
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
         REGB0 = REGB1;
       }
     }
@@ -5714,37 +6039,37 @@ val_t syntax___icode_generation___ASendExpr___generate_icode(val_t p0, val_t p1)
       REGB0 = REGB1;
     }
     if (UNTAG_Bool(REGB0)) {
-      CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[6]);
+      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:1166 */
-    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    /* ./syntax//icode_generation.nit:1194 */
+    CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   } else {
-    /* ./syntax//icode_generation.nit:1168 */
-    fra.me.REG[4] = fra.me.REG[6];
+    /* ./syntax//icode_generation.nit:1196 */
+    fra.me.REG[5] = fra.me.REG[6];
   }
-  /* ./syntax//icode_generation.nit:1171 */
-  fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//icode_generation.nit:1199 */
+  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:1172 */
-    CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+    /* ./syntax//icode_generation.nit:1200 */
+    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:1174 */
+  /* ./syntax//icode_generation.nit:1202 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+  return fra.me.REG[5];
 }
 val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1179;
+  fra.me.line = 1207;
   fra.me.meth = LOCATE_syntax___icode_generation___ASendReassignExpr___generate_icode;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -5752,84 +6077,87 @@ val_t syntax___icode_generation___ASendReassignExpr___generate_icode(val_t p0, v
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:1181 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___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:1182 */
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___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]);
+  /* ./syntax//icode_generation.nit:1207 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:1209 */
+  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:1210 */
+  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[2]);
+    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:1183 */
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//icode_generation.nit:1184 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1185 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
-  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) && VAL_ISA(fra.me.REG[2], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
+  /* ./syntax//icode_generation.nit:1211 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* ./syntax//icode_generation.nit:1212 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:1213 */
+  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, 1185);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1213);
   }
-  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[3], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1187 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[2], fra.me.REG[3]);
-  fra.me.REG[4] = CALL_syntax___syntax_base___ASendReassignExpr___read_prop(fra.me.REG[0])(fra.me.REG[0]);
-  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);
+  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:1215 */
+  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, 1187);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1215);
   }
-  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(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___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+  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, 1187);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1215);
   }
-  fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:1188 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(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:1189 */
-  fra.me.REG[5] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(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[3], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:1216 */
+  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:1217 */
+  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[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
-  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___AReassignFormExpr___assign_method(fra.me.REG[0])(fra.me.REG[0]);
-  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);
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[3]);
+  fra.me.REG[7] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[6], fra.me.REG[7]);
+  fra.me.REG[6] = CALL_syntax___syntax_base___AReassignFormExpr___assign_method(fra.me.REG[2])(fra.me.REG[2]);
+  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, 1189);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1217);
   }
-  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*/;
+  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, 1189);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1217);
   }
-  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:1190 */
-  fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1191 */
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:1192 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = NEW_ICall_icode___icode_base___ICall___init(fra.me.REG[0], 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:1193 */
-  fra.me.REG[3] = NIT_NULL;
+  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:1218 */
+  fra.me.REG[4] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:1219 */
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* ./syntax//icode_generation.nit:1220 */
+  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:1221 */
+  fra.me.REG[4] = NIT_NULL;
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[3];
+  return fra.me.REG[4];
 }
 val_t syntax___icode_generation___ANewExpr___generate_icode(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -5837,7 +6165,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 = 1198;
+  fra.me.line = 1226;
   fra.me.meth = LOCATE_syntax___icode_generation___ANewExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -5848,34 +6176,36 @@ 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:1200 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//icode_generation.nit:1201 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
-  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*/;
+  /* ./syntax//icode_generation.nit:1226 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:1228 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* ./syntax//icode_generation.nit:1229 */
+  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, 1201);
-  }
-  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:1202 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_syntax___syntax_base___AAbsSendExpr___prop(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = NEW_INew_icode___icode_base___INew___init(fra.me.REG[3], fra.me.REG[4], fra.me.REG[2]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(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[2], fra.me.REG[0]);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1229);
+  }
+  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:1230 */
+  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]);
+  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[3], fra.me.REG[2]);
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[2];
 }
 val_t syntax___icode_generation___AProxyExpr___generate_icode(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___icode_generation;
-  fra.me.line = 1207;
+  fra.me.line = 1235;
   fra.me.meth = LOCATE_syntax___icode_generation___AProxyExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -5883,7 +6213,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:1209 */
+  /* ./syntax//icode_generation.nit:1237 */
   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;
@@ -5896,7 +6226,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 = 1214;
+  fra.me.line = 1242;
   fra.me.meth = LOCATE_syntax___icode_generation___AOnceExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -5907,31 +6237,31 @@ 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:1216 */
+  /* ./syntax//icode_generation.nit:1244 */
   fra.me.REG[2] = NEW_IOnce_icode___icode_base___IOnce___init();
-  /* ./syntax//icode_generation.nit:1217 */
+  /* ./syntax//icode_generation.nit:1245 */
   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:1218 */
+  /* ./syntax//icode_generation.nit:1246 */
   fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:1219 */
+  /* ./syntax//icode_generation.nit:1247 */
   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:1221 */
+  /* ./syntax//icode_generation.nit:1249 */
   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:1222 */
+  /* ./syntax//icode_generation.nit:1250 */
   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:1224 */
+  /* ./syntax//icode_generation.nit:1252 */
   CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:1225 */
+  /* ./syntax//icode_generation.nit:1253 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[3];
 }
 val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -5941,203 +6271,226 @@ 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 = 1233;
+  fra.me.line = 1261;
   fra.me.meth = LOCATE_syntax___icode_generation___AClosureDef___generate_iclosuredef;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//icode_generation.nit:1236 */
-  fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//icode_generation.nit:1237 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_metamodel___static_type___MMClosure___signature(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1238 */
+  /* ./syntax//icode_generation.nit:1261 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//icode_generation.nit:1264 */
+  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
+  /* ./syntax//icode_generation.nit:1265 */
+  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:1266 */
   REGB0 = TAG_Int(0);
-  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./../lib/standard//kernel.nit:335 */
+  REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:1238 */
+      /* ./syntax//icode_generation.nit:1266 */
       REGB2 = REGB0;
-      /* ./syntax//icode_generation.nit:1239 */
-      fra.me.REG[4] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[3])(fra.me.REG[3], REGB2);
-      fra.me.REG[4] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], 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//kernel.nit:337 */
+      /* ./syntax//icode_generation.nit:1267 */
+      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:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//icode_generation.nit:1241 */
-  fra.me.REG[4] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1242 */
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1243 */
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:1269 */
+  fra.me.REG[5] = NIT_NULL;
+  /* ./syntax//icode_generation.nit:1270 */
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:1271 */
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:1244 */
-    fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___new_register(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    fra.me.REG[4] = fra.me.REG[3];
+    /* ./syntax//icode_generation.nit:1272 */
+    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:1247 */
-  fra.me.REG[4] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[2], fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:1248 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_icode___icode_base___IRoutine___location__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1251 */
-  fra.me.REG[2] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:1252 */
-  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___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[3]);
-  /* ./syntax//icode_generation.nit:1253 */
-  fra.me.REG[3] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_icode___icode_base___IRoutine___body(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  /* ./syntax//icode_generation.nit:1275 */
+  fra.me.REG[5] = NEW_IClosureDef_icode___icode_base___IClosureDef___init(fra.me.REG[3], fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:1276 */
+  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:1279 */
+  fra.me.REG[3] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
+  /* ./syntax//icode_generation.nit:1280 */
+  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:1281 */
+  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, 1253);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1281);
   }
-  CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:1254 */
-  fra.me.REG[5] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[3] = CALL_icode___icode_base___IRoutine___result(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  CALL_syntax___icode_generation___EscapableBlock___continue_seq__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* ./syntax//icode_generation.nit:1282 */
+  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, 1254);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1282);
   }
-  CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-  /* ./syntax//icode_generation.nit:1257 */
+  CALL_syntax___icode_generation___EscapableBlock___continue_value__eq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+  /* ./syntax//icode_generation.nit:1285 */
   REGB0 = TAG_Int(0);
-  fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  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, 1257);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1285);
   }
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  /* ./../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, 23);
+    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:335 */
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//icode_generation.nit:1257 */
+      /* ./syntax//icode_generation.nit:1285 */
       REGB2 = REGB0;
-      /* ./syntax//icode_generation.nit:1258 */
-      fra.me.REG[3] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
-      REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      /* ./syntax//icode_generation.nit:1286 */
+      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, 1258);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1286);
       }
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB4)) {
-        REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
-        REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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*/;
+        if (UNTAG_Bool(REGB5)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
-      fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-      REGB4 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:281 */
+      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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label2;
       label2: while(0);
-      /* ./syntax//icode_generation.nit:1258 */
-      fra.me.REG[3] = CALL_syntax___icode_generation___A2IContext___variable(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-      /* ./syntax//icode_generation.nit:1259 */
-      fra.me.REG[5] = CALL_icode___icode_base___IRoutine___params(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], REGB2);
-      CALL_icode___icode_builder___ICodeBuilder___add_assignment(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./syntax//icode_generation.nit:1286 */
+      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:1287 */
+      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:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label3;
     }
   }
   label3: while(0);
-  /* ./syntax//icode_generation.nit:1262 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDef___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_syntax___icode_generation___A2IContext___generate_stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//icode_generation.nit:1265 */
-  fra.me.REG[5] = CALL_syntax___syntax_base___AClosureDef___closure(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_metamodel___static_type___MMClosure___is_break(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./syntax//icode_generation.nit:1290 */
+  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:1293 */
+  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[5] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    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, 1265);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1293);
     }
-    fra.me.REG[5] = CALL_syntax___icode_generation___EscapableBlock___break_value(fra.me.REG[5])(fra.me.REG[5]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    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);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB0 = REGB1;
       }
     }
@@ -6146,29 +6499,29 @@ val_t syntax___icode_generation___AClosureDef___generate_iclosuredef(val_t p0, v
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//icode_generation.nit:1266 */
-    fra.me.REG[5] = CALL_syntax___typing___AClosureDef___escapable(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    /* ./syntax//icode_generation.nit:1294 */
+    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, 1266);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1294);
     }
-    fra.me.REG[5] = CALL_syntax___icode_generation___EscapableBlock___break_seq(fra.me.REG[5])(fra.me.REG[5]);
-    REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+    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, 1266);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___icode_generation, 1294);
     }
-    CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+    CALL_icode___icode_builder___ICodeBuilder___add_escape(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   }
-  /* ./syntax//icode_generation.nit:1269 */
-  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1270 */
-  ATTR_syntax___icode_generation___AClosureDef____iclosure_def(fra.me.REG[0]) = fra.me.REG[4];
-  /* ./syntax//icode_generation.nit:1271 */
+  /* ./syntax//icode_generation.nit:1297 */
+  CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+  /* ./syntax//icode_generation.nit:1298 */
+  ATTR_syntax___icode_generation___AClosureDef____iclosure_def(fra.me.REG[2]) = fra.me.REG[5];
+  /* ./syntax//icode_generation.nit:1299 */
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[4];
+  return fra.me.REG[5];
 }
 val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
@@ -6178,7 +6531,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 = 1276;
+  fra.me.line = 1304;
   fra.me.meth = LOCATE_syntax___icode_generation___AClosureCallExpr___generate_icode;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -6193,57 +6546,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:1279 */
+  /* ./syntax//icode_generation.nit:1307 */
   fra.me.REG[2] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//icode_generation.nit:1280 */
+  /* ./syntax//icode_generation.nit:1308 */
   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:1283 */
+  /* ./syntax//icode_generation.nit:1311 */
   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:1284 */
+  /* ./syntax//icode_generation.nit:1312 */
   fra.me.REG[3] = NEW_IClosCall_icode___icode_base___IClosCall___init(fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//icode_generation.nit:1285 */
+  /* ./syntax//icode_generation.nit:1313 */
   fra.me.REG[5] = CALL_icode___icode_builder___ICodeBuilder___seq(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//icode_generation.nit:1288 */
+  /* ./syntax//icode_generation.nit:1316 */
   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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//icode_generation.nit:1288 */
+    /* ./syntax//icode_generation.nit:1316 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//icode_generation.nit:1289 */
+    /* ./syntax//icode_generation.nit:1317 */
     fra.me.REG[6] = NEW_ISeq_icode___icode_base___ISeq___init();
-    /* ./syntax//icode_generation.nit:1290 */
+    /* ./syntax//icode_generation.nit:1318 */
     CALL_icode___icode_base___IClosCall___break_seq__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:1291 */
+    /* ./syntax//icode_generation.nit:1319 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:1292 */
+    /* ./syntax//icode_generation.nit:1320 */
     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, 1292);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1320);
     }
     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:1293 */
+    /* ./syntax//icode_generation.nit:1321 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   }
-  /* ./syntax//icode_generation.nit:1297 */
+  /* ./syntax//icode_generation.nit:1325 */
   fra.me.REG[6] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1298 */
+  /* ./syntax//icode_generation.nit:1326 */
   fra.me.REG[7] = CALL_icode___icode_base___IClosureDecl___default(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//icode_generation.nit:1299 */
+  /* ./syntax//icode_generation.nit:1327 */
   REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6258,31 +6611,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:1300 */
+    /* ./syntax//icode_generation.nit:1328 */
     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:1301 */
+    /* ./syntax//icode_generation.nit:1329 */
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
-    /* ./syntax//icode_generation.nit:1302 */
+    /* ./syntax//icode_generation.nit:1330 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1302);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1330);
     }
     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:1306 */
+  /* ./syntax//icode_generation.nit:1334 */
   fra.me.REG[8] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1307 */
+  /* ./syntax//icode_generation.nit:1335 */
   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:1308 */
+  /* ./syntax//icode_generation.nit:1336 */
   REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6296,16 +6649,16 @@ val_t syntax___icode_generation___AClosureCallExpr___generate_icode(val_t p0, va
     }
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//icode_generation.nit:1309 */
+    /* ./syntax//icode_generation.nit:1337 */
     CALL_icode___icode_builder___ICodeBuilder___stmt(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   } else {
-    /* ./syntax//icode_generation.nit:1311 */
+    /* ./syntax//icode_generation.nit:1339 */
     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:1315 */
+  /* ./syntax//icode_generation.nit:1343 */
   fra.me.REG[3] = NIT_NULL;
-  /* ./syntax//icode_generation.nit:1316 */
+  /* ./syntax//icode_generation.nit:1344 */
   REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
   } else {
@@ -6320,7 +6673,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:1317 */
+    /* ./syntax//icode_generation.nit:1345 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -6336,9 +6689,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, 1317);
+      nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1345);
     }
-    /* ./syntax//icode_generation.nit:1318 */
+    /* ./syntax//icode_generation.nit:1346 */
     REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -6353,7 +6706,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:1319 */
+      /* ./syntax//icode_generation.nit:1347 */
       REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -6369,24 +6722,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, 1319);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1347);
       }
-      /* ./syntax//icode_generation.nit:1320 */
+      /* ./syntax//icode_generation.nit:1348 */
       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:1321 */
+      /* ./syntax//icode_generation.nit:1349 */
       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:1323 */
+    /* ./syntax//icode_generation.nit:1351 */
     REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1323);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___icode_generation, 1351);
     }
     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:1324 */
+    /* ./syntax//icode_generation.nit:1352 */
     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:1325 */
+    /* ./syntax//icode_generation.nit:1353 */
     REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
@@ -6401,7 +6754,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:1326 */
+      /* ./syntax//icode_generation.nit:1354 */
       REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
@@ -6417,18 +6770,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, 1326);
+        nit_abort("Assert failed", NULL, LOCATE_syntax___icode_generation, 1354);
       }
-      /* ./syntax//icode_generation.nit:1327 */
+      /* ./syntax//icode_generation.nit:1355 */
       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:1329 */
+    /* ./syntax//icode_generation.nit:1357 */
     CALL_icode___icode_builder___ICodeBuilder___seq__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
   } else {
-    /* ./syntax//icode_generation.nit:1331 */
+    /* ./syntax//icode_generation.nit:1359 */
     fra.me.REG[3] = fra.me.REG[8];
   }
-  /* ./syntax//icode_generation.nit:1333 */
+  /* ./syntax//icode_generation.nit:1361 */
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
index 37febc9..ad6dbc6 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/icode_generation. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/icode_generation. */
 #ifndef syntax___icode_generation_sep
 #define syntax___icode_generation_sep
 #include "icode._sep.h"
@@ -19,7 +19,8 @@ extern const int SFT_syntax___icode_generation[];
 #define ATTR_syntax___icode_generation___A2IContext____return_seq(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 3))
 #define ATTR_syntax___icode_generation___A2IContext____return_value(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 4))
 #define ATTR_syntax___icode_generation___A2IContext____method(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 5))
-#define ATTR_syntax___icode_generation___A2IContext____current_node(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 6))
+#define ATTR_syntax___icode_generation___A2IContext_____atselfreg(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 6))
+#define ATTR_syntax___icode_generation___A2IContext____current_node(recv) ATTR(recv, (SFT_syntax___icode_generation[2] + 7))
 #define INIT_TABLE_POS_syntax___icode_generation___A2IContext (SFT_syntax___icode_generation[3] + 0)
 #define CALL_SUPER_syntax___icode_generation___A2IContext___stmt(recv) ((syntax___icode_generation___A2IContext___stmt_t)CALL((recv), (SFT_syntax___icode_generation[3] + 1)))
 #define CALL_syntax___icode_generation___A2IContext___add_new_array(recv) ((syntax___icode_generation___A2IContext___add_new_array_t)CALL((recv), (SFT_syntax___icode_generation[3] + 2)))
@@ -32,10 +33,12 @@ extern const int SFT_syntax___icode_generation[];
 #define CALL_syntax___icode_generation___A2IContext___return_value(recv) ((syntax___icode_generation___A2IContext___return_value_t)CALL((recv), (SFT_syntax___icode_generation[3] + 9)))
 #define CALL_syntax___icode_generation___A2IContext___return_value__eq(recv) ((syntax___icode_generation___A2IContext___return_value__eq_t)CALL((recv), (SFT_syntax___icode_generation[3] + 10)))
 #define CALL_syntax___icode_generation___A2IContext___method(recv) ((syntax___icode_generation___A2IContext___method_t)CALL((recv), (SFT_syntax___icode_generation[3] + 11)))
-#define CALL_syntax___icode_generation___A2IContext___init(recv) ((syntax___icode_generation___A2IContext___init_t)CALL((recv), (SFT_syntax___icode_generation[3] + 12)))
-#define CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(recv) ((syntax___icode_generation___A2IContext___invoke_super_init_calls_after_t)CALL((recv), (SFT_syntax___icode_generation[3] + 13)))
-#define CALL_syntax___icode_generation___A2IContext___generate_stmt(recv) ((syntax___icode_generation___A2IContext___generate_stmt_t)CALL((recv), (SFT_syntax___icode_generation[3] + 14)))
-#define CALL_syntax___icode_generation___A2IContext___generate_expr(recv) ((syntax___icode_generation___A2IContext___generate_expr_t)CALL((recv), (SFT_syntax___icode_generation[3] + 15)))
+#define CALL_syntax___icode_generation___A2IContext___selfreg(recv) ((syntax___icode_generation___A2IContext___selfreg_t)CALL((recv), (SFT_syntax___icode_generation[3] + 12)))
+#define CALL_syntax___icode_generation___A2IContext___selfreg__eq(recv) ((syntax___icode_generation___A2IContext___selfreg__eq_t)CALL((recv), (SFT_syntax___icode_generation[3] + 13)))
+#define CALL_syntax___icode_generation___A2IContext___init(recv) ((syntax___icode_generation___A2IContext___init_t)CALL((recv), (SFT_syntax___icode_generation[3] + 14)))
+#define CALL_syntax___icode_generation___A2IContext___invoke_super_init_calls_after(recv) ((syntax___icode_generation___A2IContext___invoke_super_init_calls_after_t)CALL((recv), (SFT_syntax___icode_generation[3] + 15)))
+#define CALL_syntax___icode_generation___A2IContext___generate_stmt(recv) ((syntax___icode_generation___A2IContext___generate_stmt_t)CALL((recv), (SFT_syntax___icode_generation[3] + 16)))
+#define CALL_syntax___icode_generation___A2IContext___generate_expr(recv) ((syntax___icode_generation___A2IContext___generate_expr_t)CALL((recv), (SFT_syntax___icode_generation[3] + 17)))
 #define ATTR_syntax___icode_generation___EscapableBlock____break_seq(recv) ATTR(recv, (SFT_syntax___icode_generation[4] + 0))
 #define ATTR_syntax___icode_generation___EscapableBlock____continue_seq(recv) ATTR(recv, (SFT_syntax___icode_generation[4] + 1))
 #define ATTR_syntax___icode_generation___EscapableBlock____break_value(recv) ATTR(recv, (SFT_syntax___icode_generation[4] + 2))
@@ -68,14 +71,16 @@ extern const int SFT_syntax___icode_generation[];
 #define CALL_SUPER_syntax___icode_generation___AMethPropdef___accept_icode_generation(recv) ((syntax___icode_generation___AMethPropdef___accept_icode_generation_t)CALL((recv), (SFT_syntax___icode_generation[17] + 0)))
 #define CALL_syntax___icode_generation___AMethPropdef___fill_iroutine(recv) ((syntax___icode_generation___AMethPropdef___fill_iroutine_t)CALL((recv), (SFT_syntax___icode_generation[17] + 1)))
 #define CALL_syntax___icode_generation___ASignature___fill_iroutine_parameters(recv) ((syntax___icode_generation___ASignature___fill_iroutine_parameters_t)CALL((recv), (SFT_syntax___icode_generation[18] + 0)))
-#define CALL_syntax___icode_generation___AExpr___generate_icode(recv) ((syntax___icode_generation___AExpr___generate_icode_t)CALL((recv), (SFT_syntax___icode_generation[19] + 0)))
-#define ATTR_syntax___icode_generation___AStringFormExpr____cstring(recv) ATTR(recv, (SFT_syntax___icode_generation[20] + 0))
-#define ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(recv) ATTR(recv, (SFT_syntax___icode_generation[20] + 1))
-#define CALL_syntax___icode_generation___AStringFormExpr___string_text(recv) ((syntax___icode_generation___AStringFormExpr___string_text_t)CALL((recv), (SFT_syntax___icode_generation[21] + 0)))
-#define CALL_syntax___icode_generation___AStringFormExpr___compute_string_infos(recv) ((syntax___icode_generation___AStringFormExpr___compute_string_infos_t)CALL((recv), (SFT_syntax___icode_generation[21] + 1)))
-#define CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(recv) ((syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in_t)CALL((recv), (SFT_syntax___icode_generation[22] + 0)))
-#define ATTR_syntax___icode_generation___AClosureDef____iclosure_def(recv) ATTR(recv, (SFT_syntax___icode_generation[23] + 0))
-#define CALL_syntax___icode_generation___AClosureDef___generate_iclosuredef(recv) ((syntax___icode_generation___AClosureDef___generate_iclosuredef_t)CALL((recv), (SFT_syntax___icode_generation[24] + 0)))
+#define CALL_SUPER_syntax___icode_generation___AExternInitPropdef___fill_iroutine(recv) ((syntax___icode_generation___AExternInitPropdef___fill_iroutine_t)CALL((recv), (SFT_syntax___icode_generation[19] + 0)))
+#define CALL_SUPER_syntax___icode_generation___AExternMethPropdef___fill_iroutine(recv) ((syntax___icode_generation___AExternMethPropdef___fill_iroutine_t)CALL((recv), (SFT_syntax___icode_generation[20] + 0)))
+#define CALL_syntax___icode_generation___AExpr___generate_icode(recv) ((syntax___icode_generation___AExpr___generate_icode_t)CALL((recv), (SFT_syntax___icode_generation[21] + 0)))
+#define ATTR_syntax___icode_generation___AStringFormExpr____cstring(recv) ATTR(recv, (SFT_syntax___icode_generation[22] + 0))
+#define ATTR_syntax___icode_generation___AStringFormExpr____cstring_length(recv) ATTR(recv, (SFT_syntax___icode_generation[22] + 1))
+#define CALL_syntax___icode_generation___AStringFormExpr___string_text(recv) ((syntax___icode_generation___AStringFormExpr___string_text_t)CALL((recv), (SFT_syntax___icode_generation[23] + 0)))
+#define CALL_syntax___icode_generation___AStringFormExpr___compute_string_infos(recv) ((syntax___icode_generation___AStringFormExpr___compute_string_infos_t)CALL((recv), (SFT_syntax___icode_generation[23] + 1)))
+#define CALL_syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in(recv) ((syntax___icode_generation___AAbsAbsSendExpr___generate_icode_for_arguments_in_t)CALL((recv), (SFT_syntax___icode_generation[24] + 0)))
+#define ATTR_syntax___icode_generation___AClosureDef____iclosure_def(recv) ATTR(recv, (SFT_syntax___icode_generation[25] + 0))
+#define CALL_syntax___icode_generation___AClosureDef___generate_iclosuredef(recv) ((syntax___icode_generation___AClosureDef___generate_iclosuredef_t)CALL((recv), (SFT_syntax___icode_generation[26] + 0)))
 static const char * const LOCATE_syntax___icode_generation___A2IContext___stmt = "icode_generation::A2IContext::(icode_builder::ICodeBuilder::stmt)";
 void syntax___icode_generation___A2IContext___stmt(val_t p0, val_t p1);
 typedef void (*syntax___icode_generation___A2IContext___stmt_t)(val_t p0, val_t p1);
@@ -109,6 +114,12 @@ typedef void (*syntax___icode_generation___A2IContext___return_value__eq_t)(val_
 static const char * const LOCATE_syntax___icode_generation___A2IContext___method = "icode_generation::A2IContext::method";
 val_t syntax___icode_generation___A2IContext___method(val_t p0);
 typedef val_t (*syntax___icode_generation___A2IContext___method_t)(val_t p0);
+static const char * const LOCATE_syntax___icode_generation___A2IContext___selfreg = "icode_generation::A2IContext::selfreg";
+val_t syntax___icode_generation___A2IContext___selfreg(val_t p0);
+typedef val_t (*syntax___icode_generation___A2IContext___selfreg_t)(val_t p0);
+static const char * const LOCATE_syntax___icode_generation___A2IContext___selfreg__eq = "icode_generation::A2IContext::selfreg=";
+void syntax___icode_generation___A2IContext___selfreg__eq(val_t p0, val_t p1);
+typedef void (*syntax___icode_generation___A2IContext___selfreg__eq_t)(val_t p0, val_t p1);
 static const char * const LOCATE_syntax___icode_generation___A2IContext___init = "icode_generation::A2IContext::init";
 void syntax___icode_generation___A2IContext___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
 typedef void (*syntax___icode_generation___A2IContext___init_t)(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table);
@@ -254,6 +265,15 @@ val_t NEW_AConcreteMethPropdef_parser___parser_prod___AConcreteMethPropdef___emp
 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 NEW_AConcreteMethPropdef_parser___parser_nodes___ANode___init(val_t p0);
 val_t NEW_AConcreteMethPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
+static const char * const LOCATE_syntax___icode_generation___AExternPropdef___fill_iroutine = "icode_generation::AExternPropdef::(icode_generation::AMethPropdef::fill_iroutine)";
+void syntax___icode_generation___AExternPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2);
+typedef void (*syntax___icode_generation___AExternPropdef___fill_iroutine_t)(val_t p0, val_t p1, val_t p2);
+  typedef void (*CLOS_OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1_0)(struct stack_frame_t *);
+  void OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+  typedef void (*OC_syntax___icode_generation___AExternPropdef___fill_iroutine_1_t)(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0);
+val_t NEW_AExternPropdef_parser___parser_nodes___ANode___init(val_t p0);
+val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init();
+val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
 static const char * const LOCATE_syntax___icode_generation___AExternInitPropdef___fill_iroutine = "icode_generation::AExternInitPropdef::(icode_generation::AMethPropdef::fill_iroutine)";
 void syntax___icode_generation___AExternInitPropdef___fill_iroutine(val_t p0, val_t p1, val_t p2);
 typedef void (*syntax___icode_generation___AExternInitPropdef___fill_iroutine_t)(val_t p0, val_t p1, val_t p2);
index 0ce57aa..2fc931c 100644 (file)
@@ -1,5 +1,181 @@
 /* This C file is generated by NIT to compile module syntax___mmbuilder. */
 #include "syntax___mmbuilder._sep.h"
+void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t p1, val_t p2){
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  val_t REGB0;
+  val_t REGB1;
+  val_t REGB2;
+  val_t tmp;
+  static val_t once_value_2; /* Once value */
+  static val_t once_value_3; /* Once value */
+  static val_t once_value_4; /* Once value */
+  static val_t once_value_5; /* Once value */
+  static val_t once_value_6; /* Once value */
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 26;
+  fra.me.meth = LOCATE_syntax___mmbuilder___ToolContext___handle_property_conflict;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 8;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  /* ./syntax//mmbuilder.nit:28 */
+  fra.me.REG[3] = NIT_NULL;
+  /* ./syntax//mmbuilder.nit:29 */
+  REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
+  if (UNTAG_Bool(REGB0)) {
+    /* ./syntax//mmbuilder.nit:30 */
+    fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./syntax//mmbuilder.nit:31 */
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+    } else {
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(false);
+        REGB0 = REGB1;
+      } else {
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB0 = REGB1;
+      }
+    }
+    REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+    if (UNTAG_Bool(REGB0)) {
+      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      if (UNTAG_Bool(REGB0)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 31);
+      }
+      CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
+    }
+  }
+  /* ./syntax//mmbuilder.nit:34 */
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  /* ./../lib/standard//collection//array.nit:266 */
+  fra.me.REG[5] = fra.me.REG[2];
+  /* ./../lib/standard//collection//array.nit:269 */
+  REGB0 = TAG_Int(0);
+  /* ./../lib/standard//collection//array.nit:270 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+  if (UNTAG_Bool(REGB1)) {
+  } else {
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
+  }
+  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[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 */
+  while(1) {
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 24);
+    }
+    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*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:232 */
+    REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+    /* ./../lib/standard//collection//array.nit:272 */
+    if (UNTAG_Bool(REGB1)) {
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      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 */
+      REGB1 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      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 label1;
+    }
+  }
+  label1: while(0);
+  /* ./syntax//mmbuilder.nit:38 */
+  REGB0 = TAG_Int(7);
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+  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);
+    once_value_2 = fra.me.REG[5];
+    register_static_object(&once_value_2);
+  } else fra.me.REG[5] = once_value_2;
+  fra.me.REG[5] = fra.me.REG[5];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+  fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
+  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);
+    once_value_3 = fra.me.REG[1];
+    register_static_object(&once_value_3);
+  } else fra.me.REG[1] = once_value_3;
+  fra.me.REG[1] = fra.me.REG[1];
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
+  fra.me.REG[2] = CALL_standard___collection___abstract_collection___Collection___first(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___mmbuilder, 38);
+  }
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
+  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[6])(fra.me.REG[6], fra.me.REG[2]);
+  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);
+    once_value_4 = fra.me.REG[2];
+    register_static_object(&once_value_4);
+  } else fra.me.REG[2] = once_value_4;
+  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]);
+  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);
+    once_value_5 = fra.me.REG[2];
+    register_static_object(&once_value_5);
+  } else fra.me.REG[2] = once_value_5;
+  fra.me.REG[2] = fra.me.REG[2];
+  fra.me.REG[2] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
+  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);
+    once_value_6 = fra.me.REG[2];
+    register_static_object(&once_value_6);
+  } else fra.me.REG[2] = once_value_6;
+  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]);
+  fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+  CALL_mmloader___ToolContext___fatal_error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[6]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
 val_t syntax___mmbuilder___CSHSorter___compare(val_t p0, val_t p1, val_t p2){
   struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
   val_t REGB0;
@@ -7,7 +183,7 @@ val_t syntax___mmbuilder___CSHSorter___compare(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_syntax___mmbuilder;
-  fra.me.line = 27;
+  fra.me.line = 45;
   fra.me.meth = LOCATE_syntax___mmbuilder___CSHSorter___compare;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -17,7 +193,7 @@ val_t syntax___mmbuilder___CSHSorter___compare(val_t p0, val_t p1, val_t p2){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:29 */
+  /* ./syntax//mmbuilder.nit:47 */
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___partial_order___PartialOrderElement___rank(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[2])(fra.me.REG[2]);
@@ -35,13 +211,13 @@ void syntax___mmbuilder___CSHSorter___init(val_t p0, int* init_table){
   if (init_table[itpos0]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 32;
+  fra.me.line = 50;
   fra.me.meth = LOCATE_syntax___mmbuilder___CSHSorter___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:32 */
+  /* ./syntax//mmbuilder.nit:50 */
   CALL_standard___collection___sorter___AbstractSorter___init(fra.me.REG[0])(fra.me.REG[0], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos0] = 1;
@@ -56,7 +232,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 36;
+  fra.me.line = 54;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___do_mmbuilder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 8;
@@ -70,195 +246,210 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:41 */
+  /* ./syntax//mmbuilder.nit:59 */
   CALL_metamodel___inheritance___MMModule___import_global_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:44 */
+  /* ./syntax//mmbuilder.nit:62 */
   fra.me.REG[2] = NEW_ClassBuilderVisitor_syntax___mmbuilder___ClassBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:45 */
+  /* ./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]);
-  /* ./syntax//mmbuilder.nit:46 */
+  /* ./syntax//mmbuilder.nit:64 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:48 */
+  /* ./syntax//mmbuilder.nit:66 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule___mhe(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 48);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 66);
   }
   fra.me.REG[3] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:49 */
+    /* ./syntax//mmbuilder.nit:67 */
     CALL_syntax___mmbuilder___MMSrcModule___process_default_classes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   }
-  /* ./syntax//mmbuilder.nit:53 */
+  /* ./syntax//mmbuilder.nit:71 */
   CALL_metamodel___inheritance___MMModule___import_local_classes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:56 */
+  /* ./syntax//mmbuilder.nit:74 */
   fra.me.REG[3] = NEW_ClassSpecializationBuilderVisitor_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:57 */
+  /* ./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]);
-  /* ./syntax//mmbuilder.nit:58 */
+  /* ./syntax//mmbuilder.nit:76 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:61 */
+  /* ./syntax//mmbuilder.nit:79 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___local_classes(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcModule___do_mmbuilder_1));
-  /* ./syntax//mmbuilder.nit:67 */
+  /* ./syntax//mmbuilder.nit:85 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:72 */
+  /* ./syntax//mmbuilder.nit:90 */
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMModule___class_specialization_hierarchy(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:75 */
+  /* ./syntax//mmbuilder.nit:93 */
   if (!once_value_3) {
     fra.me.REG[3] = NEW_CSHSorter_syntax___mmbuilder___CSHSorter___init();
     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];
-  /* ./syntax//mmbuilder.nit:76 */
+  /* ./syntax//mmbuilder.nit:94 */
   CALL_standard___collection___sorter___AbstractSorter___sort(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:79 */
+  /* ./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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:81 */
+      /* ./syntax//mmbuilder.nit:99 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:82 */
+      /* ./syntax//mmbuilder.nit:100 */
       CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:83 */
+      /* ./syntax//mmbuilder.nit:101 */
       CALL_metamodel___inheritance___MMLocalClass___compute_ancestors(fra.me.REG[6])(fra.me.REG[6]);
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label4;
     }
   }
   label4: while(0);
-  /* ./syntax//mmbuilder.nit:87 */
+  /* ./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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[5] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:89 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label5;
     }
   }
   label5: while(0);
-  /* ./syntax//mmbuilder.nit:91 */
+  /* ./syntax//mmbuilder.nit:109 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:94 */
+  /* ./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:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[4] = fra.me.REG[2];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:97 */
+      /* ./syntax//mmbuilder.nit:115 */
       CALL_syntax___mmbuilder___MMLocalClass___accept_class_visitor(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:100 */
+      /* ./syntax//mmbuilder.nit:118 */
       REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_syntax___syntax_base___MMSrcLocalClass, ID_syntax___syntax_base___MMSrcLocalClass)) /*cast MMSrcLocalClass*/;
       if (UNTAG_Bool(REGB1)) {
         fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
@@ -298,71 +489,76 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:101 */
+        /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:106 */
+  /* ./syntax//mmbuilder.nit:124 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:109 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:111 */
+      /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label7;
     }
   }
   label7: while(0);
-  /* ./syntax//mmbuilder.nit:114 */
+  /* ./syntax//mmbuilder.nit:132 */
   CALL_mmloader___ToolContext___check_errors(fra.me.REG[1])(fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -371,6 +567,7 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(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;
     fun_t CREG[1];
     val_t tmp;
     fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -385,21 +582,26 @@ void syntax___mmbuilder___MMSrcModule___do_mmbuilder(val_t p0, val_t p1){
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:62 */
+    /* ./syntax//mmbuilder.nit:80 */
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(closctx->REG[0])(closctx->REG[0], fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:62 */
+    /* ./syntax//mmbuilder.nit:80 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:63 */
+      /* ./syntax//mmbuilder.nit:81 */
       goto label2;
     }
-    /* ./syntax//mmbuilder.nit:65 */
+    /* ./syntax//mmbuilder.nit:83 */
     CALL_metamodel___inheritance___MMLocalClass___compute_super_classes(fra.me.REG[0])(fra.me.REG[0]);
     label2: while(0);
     stack_frame_head = fra.me.prev;
@@ -415,7 +617,7 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 117;
+  fra.me.line = 135;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcModule___process_default_classes;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -425,7 +627,7 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:120 */
+  /* ./syntax//mmbuilder.nit:138 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[1] = BOX_NativeString("Object");
@@ -440,20 +642,20 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
     register_static_object(&once_value_1);
   } else fra.me.REG[1] = once_value_1;
   fra.me.REG[1] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:121 */
+  /* ./syntax//mmbuilder.nit:139 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:122 */
+    /* ./syntax//mmbuilder.nit:140 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:123 */
+    /* ./syntax//mmbuilder.nit:141 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:124 */
+    /* ./syntax//mmbuilder.nit:142 */
     fra.me.REG[3] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[2]);
   }
-  /* ./syntax//mmbuilder.nit:126 */
+  /* ./syntax//mmbuilder.nit:144 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[2] = BOX_NativeString("Bool");
@@ -469,16 +671,16 @@ void syntax___mmbuilder___MMSrcModule___process_default_classes(val_t p0, val_t
   } else fra.me.REG[2] = once_value_3;
   fra.me.REG[2] = fra.me.REG[2];
   fra.me.REG[1] = fra.me.REG[2];
-  /* ./syntax//mmbuilder.nit:127 */
+  /* ./syntax//mmbuilder.nit:145 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:128 */
+    /* ./syntax//mmbuilder.nit:146 */
     REGB0 = TAG_Int(0);
     fra.me.REG[2] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[0], fra.me.REG[1], NIT_NULL, REGB0);
-    /* ./syntax//mmbuilder.nit:129 */
+    /* ./syntax//mmbuilder.nit:147 */
     CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:130 */
+    /* ./syntax//mmbuilder.nit:148 */
     fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[0])(fra.me.REG[0]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   }
@@ -490,7 +692,7 @@ void syntax___mmbuilder___MMLocalClass___accept_class_visitor(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___mmbuilder;
-  fra.me.line = 136;
+  fra.me.line = 154;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_class_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -506,7 +708,7 @@ void syntax___mmbuilder___MMLocalClass___accept_properties_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 141;
+  fra.me.line = 159;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -524,7 +726,7 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 148;
+  fra.me.line = 166;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -533,9 +735,9 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_class_visitor(val_t p0, val_t
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:150 */
+  /* ./syntax//mmbuilder.nit:168 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:151 */
+  /* ./syntax//mmbuilder.nit:169 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -551,17 +753,17 @@ 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:152 */
+      /* ./syntax//mmbuilder.nit:170 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:153 */
+      /* ./syntax//mmbuilder.nit:171 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 153);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 171);
       }
       fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = fra.me.REG[2];
     } else {
-      /* ./syntax//mmbuilder.nit:151 */
+      /* ./syntax//mmbuilder.nit:169 */
       goto label1;
     }
   }
@@ -576,7 +778,7 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 157;
+  fra.me.line = 175;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -586,9 +788,9 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:160 */
+  /* ./syntax//mmbuilder.nit:178 */
   fra.me.REG[2] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:161 */
+  /* ./syntax//mmbuilder.nit:179 */
   while(1) {
     REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -604,23 +806,24 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:162 */
+      /* ./syntax//mmbuilder.nit:180 */
       CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:163 */
+      /* ./syntax//mmbuilder.nit:181 */
       REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 163);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 181);
       }
       fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[2] = fra.me.REG[3];
     } else {
-      /* ./syntax//mmbuilder.nit:161 */
+      /* ./syntax//mmbuilder.nit:179 */
       goto label1;
     }
   }
   label1: while(0);
-  /* ./syntax//mmbuilder.nit:166 */
+  /* ./syntax//mmbuilder.nit:184 */
   fra.me.REG[0] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead___values(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_syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor_2));
   stack_frame_head = fra.me.prev;
   return;
@@ -640,13 +843,13 @@ void syntax___mmbuilder___MMSrcLocalClass___accept_properties_visitor(val_t p0,
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:167 */
+    /* ./syntax//mmbuilder.nit:185 */
     CALL_syntax___mmbuilder___MMLocalProperty___accept_property_visitor(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1]);
     stack_frame_head = fra.me.prev;
     return;
   }
 void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -661,10 +864,10 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       static val_t once_value_18; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 171;
+  fra.me.line = 189;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 10;
+  fra.me.REG_size = 11;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -675,59 +878,67 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[9] = NIT_NULL;
+  fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:175 */
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[2])(fra.me.REG[2], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_1));
+  /* ./syntax//mmbuilder.nit:189 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//mmbuilder.nit:193 */
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label3;
   }
-  /* ./syntax//mmbuilder.nit:183 */
-  fra.me.REG[2] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:184 */
+  /* ./syntax//mmbuilder.nit:201 */
   fra.me.REG[3] = NEW_ArraySet_standard___collection___array___ArraySet___init();
-  /* ./syntax//mmbuilder.nit:185 */
-  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:234 */
+  /* ./syntax//mmbuilder.nit:202 */
+  fra.me.REG[4] = NEW_ArraySet_standard___collection___array___ArraySet___init();
+  /* ./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:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      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:215 */
+    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*/;
+    if (UNTAG_Bool(REGB2)) {
+    } else {
+      nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+    }
+    /* ./../lib/standard//kernel.nit:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:186 */
-      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[7])(fra.me.REG[7]);
+      /* ./../lib/standard//collection//array.nit:718 */
+      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]);
+      REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[8])(fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[7])(fra.me.REG[7]);
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+        REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[8])(fra.me.REG[8]);
         REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       } else {
         REGB2 = TAG_Bool(false);
@@ -736,195 +947,201 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(true);
       } else {
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
-        REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[7])(fra.me.REG[7]);
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
+        REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[8])(fra.me.REG[8]);
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
         goto label4;
       }
-      /* ./syntax//mmbuilder.nit:187 */
-      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_5));
-      /* ./syntax//mmbuilder.nit:191 */
+      /* ./syntax//mmbuilder.nit:205 */
+      fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[7])(fra.me.REG[7]);
+      CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[8])(fra.me.REG[8], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_5));
+      /* ./syntax//mmbuilder.nit:209 */
       if (!once_value_7) {
         if (!once_value_8) {
-          fra.me.REG[7] = BOX_NativeString("init");
+          fra.me.REG[8] = BOX_NativeString("init");
           REGB1 = TAG_Int(4);
-          fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB1);
-          once_value_8 = fra.me.REG[7];
+          fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
+          once_value_8 = fra.me.REG[8];
           register_static_object(&once_value_8);
-        } else fra.me.REG[7] = once_value_8;
-        fra.me.REG[7] = fra.me.REG[7];
-        fra.me.REG[7] = CALL_standard___symbol___String___to_symbol(fra.me.REG[7])(fra.me.REG[7]);
-        once_value_7 = fra.me.REG[7];
+        } else fra.me.REG[8] = once_value_8;
+        fra.me.REG[8] = fra.me.REG[8];
+        fra.me.REG[8] = CALL_standard___symbol___String___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
+        once_value_7 = fra.me.REG[8];
         register_static_object(&once_value_7);
-      } else fra.me.REG[7] = once_value_7;
-      fra.me.REG[7] = fra.me.REG[7];
-      /* ./syntax//mmbuilder.nit:192 */
-      REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+      } else fra.me.REG[8] = once_value_7;
+      fra.me.REG[8] = fra.me.REG[8];
+      /* ./syntax//mmbuilder.nit:210 */
+      REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:193 */
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-        /* ./syntax//mmbuilder.nit:194 */
-        fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[7]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[7]);
+        /* ./syntax//mmbuilder.nit:211 */
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+        /* ./syntax//mmbuilder.nit:212 */
+        fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[8]);
+        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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label9;
     }
   }
   label9: while(0);
-  /* ./syntax//mmbuilder.nit:199 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:200 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(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___mmbuilder___MMSrcLocalClass___process_default_constructors_10));
-  /* ./syntax//mmbuilder.nit:207 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
+  /* ./syntax//mmbuilder.nit:217 */
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
+  /* ./syntax//mmbuilder.nit:218 */
+  fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_standard___collection___abstract_collection___MapRead___values(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_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_10));
+  /* ./syntax//mmbuilder.nit:225 */
+  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)) {
-    /* ./syntax//mmbuilder.nit:210 */
-    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_11));
-    /* ./syntax//mmbuilder.nit:218 */
-    fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[7])(fra.me.REG[7]);
-    fra.me.REG[7] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[4]);
-    fra.me.REG[4] = fra.me.REG[7];
-    /* ./syntax//mmbuilder.nit:221 */
-    fra.me.REG[7] = NIT_NULL;
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./syntax//mmbuilder.nit:228 */
+    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_11));
+    /* ./syntax//mmbuilder.nit:236 */
+    fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___che(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrderElement___order(fra.me.REG[8])(fra.me.REG[8]);
+    fra.me.REG[8] = CALL_metamodel___partial_order___PartialOrder___select_smallests(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
+    fra.me.REG[5] = fra.me.REG[8];
+    /* ./syntax//mmbuilder.nit:239 */
+    fra.me.REG[8] = NIT_NULL;
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:223 */
+    REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+    /* ./syntax//mmbuilder.nit:241 */
     REGB1 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
-    /* ./syntax//mmbuilder.nit:223 */
+    /* ./syntax//mmbuilder.nit:241 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:224 */
-      fra.me.REG[6] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[0])(fra.me.REG[0]);
+      /* ./syntax//mmbuilder.nit:242 */
+      fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Int(7);
-      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_13) {
-        fra.me.REG[9] = BOX_NativeString("Error: Explicit constructor required in ");
+        fra.me.REG[10] = BOX_NativeString("Error: Explicit constructor required in ");
         REGB1 = TAG_Int(40);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_13 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_13 = fra.me.REG[10];
         register_static_object(&once_value_13);
-      } else fra.me.REG[9] = once_value_13;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_13;
+      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]);
+      fra.me.REG[10] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_14) {
-        fra.me.REG[9] = BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are ");
+        fra.me.REG[10] = BOX_NativeString(" since multiple inheritance of constructor is forbiden. Conflicting classes are ");
         REGB1 = TAG_Int(80);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_14 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_14 = fra.me.REG[10];
         register_static_object(&once_value_14);
-      } else fra.me.REG[9] = once_value_14;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_14;
+      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]);
       if (!once_value_15) {
-        fra.me.REG[9] = BOX_NativeString(", ");
+        fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_15 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_15 = fra.me.REG[10];
         register_static_object(&once_value_15);
-      } else fra.me.REG[9] = once_value_15;
-      fra.me.REG[9] = fra.me.REG[9];
-      fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[9]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_15;
+      fra.me.REG[10] = fra.me.REG[10];
+      fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[10]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_16) {
-        fra.me.REG[9] = BOX_NativeString(". Costructors are ");
+        fra.me.REG[10] = BOX_NativeString(". Costructors are ");
         REGB1 = TAG_Int(18);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_16 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_16 = fra.me.REG[10];
         register_static_object(&once_value_16);
-      } else fra.me.REG[9] = once_value_16;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_16;
+      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]);
       if (!once_value_17) {
-        fra.me.REG[9] = BOX_NativeString(", ");
+        fra.me.REG[10] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_17 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_17 = fra.me.REG[10];
         register_static_object(&once_value_17);
-      } else fra.me.REG[9] = once_value_17;
-      fra.me.REG[9] = fra.me.REG[9];
-      fra.me.REG[9] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+      } else fra.me.REG[10] = once_value_17;
+      fra.me.REG[10] = fra.me.REG[10];
+      fra.me.REG[10] = CALL_standard___string___Collection___join(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[10]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
       if (!once_value_18) {
-        fra.me.REG[9] = BOX_NativeString(".");
+        fra.me.REG[10] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
-        once_value_18 = fra.me.REG[9];
+        fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB1);
+        once_value_18 = fra.me.REG[10];
         register_static_object(&once_value_18);
-      } else fra.me.REG[9] = once_value_18;
-      fra.me.REG[9] = fra.me.REG[9];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6], fra.me.REG[8]);
-      /* ./syntax//mmbuilder.nit:225 */
+      } else fra.me.REG[10] = once_value_18;
+      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]);
+      fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[7], fra.me.REG[9]);
+      /* ./syntax//mmbuilder.nit:243 */
       goto label3;
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:24 */
+      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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:226 */
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+      /* ./syntax//mmbuilder.nit:244 */
       REGB0 = TAG_Int(1);
       REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
       if (UNTAG_Bool(REGB2)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB0 = TAG_Bool((REGB1)==(REGB0));
-        /* ./syntax//mmbuilder.nit:226 */
+        /* ./syntax//mmbuilder.nit:244 */
         REGB2 = REGB0;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:227 */
-        fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
-        fra.me.REG[7] = fra.me.REG[4];
+        /* ./syntax//mmbuilder.nit:245 */
+        fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[8] = fra.me.REG[5];
       }
     }
-    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_19));
-    /* ./syntax//mmbuilder.nit:236 */
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
-    REGB2 = TAG_Bool(fra.me.REG[7]!=NIT_NULL);
+    CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[4])(fra.me.REG[4], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___MMSrcLocalClass___process_default_constructors_19));
+    /* ./syntax//mmbuilder.nit:254 */
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[8]!=NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 236);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 254);
     }
-    REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 236);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 254);
     }
-    fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[7])(fra.me.REG[7]);
-    CALL_metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+    fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[8])(fra.me.REG[8]);
+    CALL_metamodel___abstractmetamodel___MMGlobalClass___mixin_of__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
   } else {
-    /* ./syntax//mmbuilder.nit:241 */
-    fra.me.REG[2] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[2] = NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(fra.me.REG[0], fra.me.REG[5], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:242 */
-    CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
+    /* ./syntax//mmbuilder.nit:259 */
+    fra.me.REG[3] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[3] = NEW_MMImplicitInit_syntax___syntax_base___MMImplicitInit___init(fra.me.REG[2], fra.me.REG[6], fra.me.REG[3]);
+    /* ./syntax//mmbuilder.nit:260 */
+    CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3]);
   }
   label3: while(0);
   stack_frame_head = fra.me.prev;
@@ -947,16 +1164,16 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:176 */
+    /* ./syntax//mmbuilder.nit:194 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:178 */
+      /* ./syntax//mmbuilder.nit:196 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],closctx->REG[0]));
+      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],closctx->REG[2]));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[0]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], closctx->REG[2]);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
@@ -980,14 +1197,14 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         fra.me.REG_size = 1;
         fra.me.REG[0] = NIT_NULL;
         fra.me.REG[0] = p0;
-        /* ./syntax//mmbuilder.nit:188 */
+        /* ./syntax//mmbuilder.nit:206 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
           goto label6;
         }
-        /* ./syntax//mmbuilder.nit:189 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[0]);
+        /* ./syntax//mmbuilder.nit:207 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
         label6: while(0);
         stack_frame_head = fra.me.prev;
         return;
@@ -1010,15 +1227,15 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:201 */
+    /* ./syntax//mmbuilder.nit:219 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_syntax___syntax_base___MMSrcAttribute, ID_syntax___syntax_base___MMSrcAttribute)) /*cast MMSrcAttribute*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:202 */
+      /* ./syntax//mmbuilder.nit:220 */
       fra.me.REG[1] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:203 */
+      /* ./syntax//mmbuilder.nit:221 */
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 203);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 221);
       }
       fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_expr(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -1034,7 +1251,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
       }
     }
     stack_frame_head = fra.me.prev;
@@ -1045,7 +1262,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB0;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:211 */
+      /* ./syntax//mmbuilder.nit:229 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
@@ -1058,20 +1275,20 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./syntax//mmbuilder.nit:212 */
+      /* ./syntax//mmbuilder.nit:230 */
       fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:213 */
-      REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
+      /* ./syntax//mmbuilder.nit:231 */
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___has(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       if (UNTAG_Bool(REGB0)) {
         goto label12;
       }
-      /* ./syntax//mmbuilder.nit:214 */
+      /* ./syntax//mmbuilder.nit:232 */
       fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:215 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
+        /* ./syntax//mmbuilder.nit:233 */
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
       }
       label12: while(0);
       stack_frame_head = fra.me.prev;
@@ -1084,7 +1301,7 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       val_t REGB2;
       fun_t CREG[1];
       val_t tmp;
-      /* ./syntax//mmbuilder.nit:230 */
+      /* ./syntax//mmbuilder.nit:248 */
       fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
       fra.me.file = LOCATE_syntax___mmbuilder;
       fra.me.line = 0;
@@ -1097,16 +1314,16 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
       fra.me.closure_funs = CREG;
       fra.me.REG[0] = p0;
       CREG[0] = clos_fun0;
-      /* ./syntax//mmbuilder.nit:232 */
-      REGB0 = TAG_Bool(closctx->REG[7]==NIT_NULL);
+      /* ./syntax//mmbuilder.nit:250 */
+      REGB0 = TAG_Bool(closctx->REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(closctx->REG[7]==NIT_NULL);
+        REGB1 = TAG_Bool(closctx->REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[7])(closctx->REG[7], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(closctx->REG[8])(closctx->REG[8], NIT_NULL);
           REGB0 = REGB1;
         }
       }
@@ -1114,17 +1331,17 @@ void syntax___mmbuilder___MMSrcLocalClass___process_default_constructors(val_t p
         REGB0 = TAG_Bool(true);
       } else {
         fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-        REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],closctx->REG[7]));
+        REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[1],closctx->REG[8]));
         if (UNTAG_Bool(REGB1)) {
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[7]);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], closctx->REG[8]);
           REGB1 = REGB2;
         }
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:233 */
-        CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
+        /* ./syntax//mmbuilder.nit:251 */
+        CALL_metamodel___inheritance___MMLocalClass___make_visible_an_inherited_global_property(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
       }
       stack_frame_head = fra.me.prev;
       return;
@@ -1138,7 +1355,7 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 247;
+  fra.me.line = 265;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -1152,13 +1369,13 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:251 */
+  /* ./syntax//mmbuilder.nit:269 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:253 */
+  /* ./syntax//mmbuilder.nit:271 */
   fra.me.REG[4] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:254 */
+    /* ./syntax//mmbuilder.nit:272 */
     fra.me.REG[4] = CALL_syntax___syntax_base___MMLocalProperty___node(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
@@ -1196,27 +1413,27 @@ void syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(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[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:255 */
+    /* ./syntax//mmbuilder.nit:273 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:257 */
+  /* ./syntax//mmbuilder.nit:275 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcLocalClass___src_local_properties(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:260 */
+  /* ./syntax//mmbuilder.nit:278 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:261 */
+    /* ./syntax//mmbuilder.nit:279 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:262 */
+    /* ./syntax//mmbuilder.nit:280 */
     CALL_metamodel___inheritance___MMLocalProperty___inherit_global(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   }
-  /* ./syntax//mmbuilder.nit:265 */
+  /* ./syntax//mmbuilder.nit:283 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalProperty___is_global_set(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:266 */
+    /* ./syntax//mmbuilder.nit:284 */
     CALL_metamodel___abstractmetamodel___MMLocalProperty___new_global(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:267 */
+    /* ./syntax//mmbuilder.nit:285 */
     fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
     CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
@@ -1230,7 +1447,7 @@ void syntax___mmbuilder___MMLocalProperty___accept_property_visitor(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 273;
+  fra.me.line = 291;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMLocalProperty___accept_property_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1246,19 +1463,19 @@ val_t syntax___mmbuilder___MMImplicitInit___super_init(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 279;
+  fra.me.line = 297;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___super_init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:279 */
+  /* ./syntax//mmbuilder.nit:297 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
 void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -1269,14 +1486,12 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
           static val_t once_value_2; /* Once value */
           static val_t once_value_3; /* Once value */
           static val_t once_value_4; /* Once value */
-      static val_t once_value_9; /* Once value */
-        static val_t once_value_10; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 280;
+  fra.me.line = 298;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMImplicitInit___accept_property_visitor;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 8;
+  fra.me.REG_size = 9;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1285,330 +1500,399 @@ void syntax___mmbuilder___MMImplicitInit___accept_property_visitor(val_t p0, val
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
+  fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:282 */
-  fra.me.REG[2] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:283 */
-  fra.me.REG[3] = CALL_syntax___syntax_base___MMImplicitInit___super_inits(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./syntax//mmbuilder.nit:298 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//mmbuilder.nit:300 */
+  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:235 */
-  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:284 */
-      fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
-      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:718 */
+      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]);
+      REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 284);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 302);
       }
-      REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
-      /* ./syntax//mmbuilder.nit:284 */
+      /* ./syntax//mmbuilder.nit:302 */
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:285 */
-        REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* ./syntax//mmbuilder.nit:303 */
+        REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB2 = 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[3])(fra.me.REG[3], NIT_NULL);
             REGB2 = REGB1;
           }
         }
         if (UNTAG_Bool(REGB2)) {
-          /* ./syntax//mmbuilder.nit:286 */
-          fra.me.REG[2] = fra.me.REG[5];
+          /* ./syntax//mmbuilder.nit:304 */
+          fra.me.REG[3] = fra.me.REG[6];
         } else {
-          /* ./syntax//mmbuilder.nit:288 */
+          /* ./syntax//mmbuilder.nit:306 */
           REGB2 = TAG_Int(7);
-          fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+          fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
           if (!once_value_1) {
-            fra.me.REG[7] = BOX_NativeString("Error: explicit constructor needed in ");
+            fra.me.REG[8] = BOX_NativeString("Error: explicit constructor needed in ");
             REGB2 = TAG_Int(38);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_1 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_1 = fra.me.REG[8];
             register_static_object(&once_value_1);
-          } else fra.me.REG[7] = once_value_1;
-          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]);
-          fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-          fra.me.REG[7] = CALL_standard___string___Object___to_s(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]);
+          } else fra.me.REG[8] = once_value_1;
+          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]);
+          fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+          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]);
           if (!once_value_2) {
-            fra.me.REG[7] = BOX_NativeString(" since both super-constructor ");
+            fra.me.REG[8] = BOX_NativeString(" since both super-constructor ");
             REGB2 = TAG_Int(30);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_2 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_2 = fra.me.REG[8];
             register_static_object(&once_value_2);
-          } else fra.me.REG[7] = once_value_2;
-          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]);
-          REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          } else fra.me.REG[8] = once_value_2;
+          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]);
+          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 288);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 306);
           }
-          fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(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[7]);
+          fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
           if (!once_value_3) {
-            fra.me.REG[7] = BOX_NativeString(" and ");
+            fra.me.REG[8] = BOX_NativeString(" and ");
             REGB2 = TAG_Int(5);
-            fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB2);
-            once_value_3 = fra.me.REG[7];
+            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
+            once_value_3 = fra.me.REG[8];
             register_static_object(&once_value_3);
-          } else fra.me.REG[7] = once_value_3;
-          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]);
-          fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[5])(fra.me.REG[5]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
+          } else fra.me.REG[8] = once_value_3;
+          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]);
+          fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[6])(fra.me.REG[6]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
           if (!once_value_4) {
-            fra.me.REG[5] = BOX_NativeString(" have paramters");
+            fra.me.REG[6] = BOX_NativeString(" have paramters");
             REGB2 = TAG_Int(15);
-            fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-            once_value_4 = fra.me.REG[5];
+            fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+            once_value_4 = fra.me.REG[6];
             register_static_object(&once_value_4);
-          } else fra.me.REG[5] = once_value_4;
-          fra.me.REG[5] = fra.me.REG[5];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-          fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], NIT_NULL, fra.me.REG[6]);
-          /* ./syntax//mmbuilder.nit:289 */
+          } else fra.me.REG[6] = once_value_4;
+          fra.me.REG[6] = fra.me.REG[6];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+          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], NIT_NULL, fra.me.REG[7]);
+          /* ./syntax//mmbuilder.nit:307 */
           goto label5;
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label6;
     }
   }
   label6: while(0);
-  /* ./syntax//mmbuilder.nit:293 */
-  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[0]) = fra.me.REG[2];
-  /* ./syntax//mmbuilder.nit:295 */
+  /* ./syntax//mmbuilder.nit:311 */
+  ATTR_syntax___mmbuilder___MMImplicitInit____super_init(fra.me.REG[2]) = fra.me.REG[3];
+  /* ./syntax//mmbuilder.nit:313 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:296 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  /* ./syntax//mmbuilder.nit:314 */
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB0 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB2;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:297 */
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    /* ./syntax//mmbuilder.nit:315 */
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 297);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 315);
     }
-    fra.me.REG[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:298 */
+    fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
+    /* ./syntax//mmbuilder.nit:316 */
     REGB0 = TAG_Int(0);
-    REGB2 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 298);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 316);
     }
-    REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:335 */
+    REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[3])(fra.me.REG[3]);
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:298 */
+        /* ./syntax//mmbuilder.nit:316 */
         REGB1 = REGB0;
-        /* ./syntax//mmbuilder.nit:299 */
-        REGB3 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        /* ./syntax//mmbuilder.nit:317 */
+        REGB3 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 299);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 317);
         }
-        fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[2])(fra.me.REG[2]);
-        /* ./../lib/standard//collection//array.nit:245 */
+        fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___params(fra.me.REG[3])(fra.me.REG[3]);
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         if (UNTAG_Bool(REGB3)) {
-          REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+          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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
-          REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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*/;
+          if (UNTAG_Bool(REGB4)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+          }
+          /* ./../lib/standard//kernel.nit:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB3));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB4 = TAG_Bool(false);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-        REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:281 */
+        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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB1)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB1)];
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label7;
         label7: while(0);
-        /* ./syntax//mmbuilder.nit:299 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./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:354 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label8;
       }
     }
     label8: while(0);
   }
-  /* ./syntax//mmbuilder.nit:302 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___MMImplicitInit___unassigned_attributes(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./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:235 */
-  REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:270 */
+  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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
-  REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:236 */
-  fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-  /* ./../lib/standard//collection//array.nit:237 */
+  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 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+    }
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+    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);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//kernel.nit:215 */
+    /* ./../lib/standard//kernel.nit:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:273 */
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
-      }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:303 */
-      fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:304 */
-      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
+      }
+      /* ./../lib/standard//collection//array.nit:718 */
+      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]);
+      /* ./syntax//mmbuilder.nit:322 */
+      REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB2 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
           REGB2 = REGB1;
         }
       }
       if (UNTAG_Bool(REGB2)) {
         goto label5;
       }
-      /* ./syntax//mmbuilder.nit:305 */
-      REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
-      if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 305);
+      /* ./syntax//mmbuilder.nit:323 */
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
+      /* ./syntax//mmbuilder.nit:324 */
+      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
+      REGB2 = TAG_Char('_');
+      REGB1 = TAG_Bool(IS_EQUAL_ON(REGB2,fra.me.REG[8]));
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        REGB3 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+        if (UNTAG_Bool(REGB3)) {
+          REGB3 = TAG_Bool(false);
+          REGB1 = REGB3;
+        } else {
+          /* ./../lib/standard//kernel.nit:378 */
+          REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
+          /* ./syntax//mmbuilder.nit:324 */
+          REGB1 = REGB2;
+        }
       }
-      fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-      REGB2 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
-      if (UNTAG_Bool(REGB2)) {
+      if (UNTAG_Bool(REGB1)) {
+        REGB1 = TAG_Bool(true);
       } else {
-        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 305);
+        fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+        fra.me.REG[8] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[8])(fra.me.REG[8]);
+        REGB2 = TAG_Char('@');
+        REGB3 = TAG_Bool(IS_EQUAL_ON(REGB2,fra.me.REG[8]));
+        if (UNTAG_Bool(REGB3)) {
+        } else {
+          REGB4 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
+          if (UNTAG_Bool(REGB4)) {
+            REGB4 = TAG_Bool(false);
+            REGB3 = REGB4;
+          } else {
+            /* ./../lib/standard//kernel.nit:378 */
+            REGB2 = TAG_Bool((fra.me.REG[8])==(REGB2));
+            /* ./syntax//mmbuilder.nit:324 */
+            REGB3 = REGB2;
+          }
+        }
+        REGB1 = REGB3;
       }
-      if (!once_value_9) {
-        if (!once_value_10) {
-          fra.me.REG[6] = BOX_NativeString("recv");
-          REGB2 = TAG_Int(4);
-          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
-          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];
-        fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
-        once_value_9 = fra.me.REG[6];
-        register_static_object(&once_value_9);
-      } else fra.me.REG[6] = once_value_9;
-      fra.me.REG[6] = fra.me.REG[6];
-      fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[3], fra.me.REG[6]);
+      if (UNTAG_Bool(REGB1)) {
+        /* ./syntax//mmbuilder.nit:325 */
+        fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+        REGB1 = TAG_Int(1);
+        fra.me.REG[4] = CALL_standard___string___AbstractString___substring_from(fra.me.REG[4])(fra.me.REG[4], REGB1);
+        fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[6] = fra.me.REG[4];
+      }
+      /* ./syntax//mmbuilder.nit:327 */
+      REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+      if (UNTAG_Bool(REGB1)) {
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 327);
+      }
+      fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
+      REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 327);
+      }
+      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:239 */
-      REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
-      REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
-      REGB0 = REGB2;
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB1 = TAG_Int(1);
+      /* ./../lib/standard//kernel.nit:235 */
+      REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
+      /* ./../lib/standard//collection//array.nit:274 */
+      REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
-      goto label11;
+      /* ./../lib/standard//collection//array.nit:272 */
+      goto label9;
     }
   }
-  label11: while(0);
-  /* ./syntax//mmbuilder.nit:307 */
-  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], NIT_NULL, fra.me.REG[4]);
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+  label9: while(0);
+  /* ./syntax//mmbuilder.nit:329 */
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], NIT_NULL, fra.me.REG[0]);
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
   label5: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -1619,17 +1903,17 @@ val_t syntax___mmbuilder___MMSrcAncestor___local_class(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 315;
+  fra.me.line = 337;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcAncestor___local_class;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:315 */
+  /* ./syntax//mmbuilder.nit:337 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 315);
+    nit_abort("Uninitialized attribute %s", "_local_class", LOCATE_syntax___mmbuilder, 337);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1642,7 +1926,7 @@ void syntax___mmbuilder___MMSrcAncestor___init(val_t p0, val_t p1, int* init_tab
   if (init_table[itpos1]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 317;
+  fra.me.line = 339;
   fra.me.meth = LOCATE_syntax___mmbuilder___MMSrcAncestor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1651,10 +1935,10 @@ void syntax___mmbuilder___MMSrcAncestor___init(val_t p0, val_t p1, int* init_tab
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:317 */
+  /* ./syntax//mmbuilder.nit:339 */
   fra.me.REG[2] = fra.me.REG[0];
   CALL_metamodel___static_type___MMAncestor___init(fra.me.REG[0])(fra.me.REG[0], init_table);
-  /* ./syntax//mmbuilder.nit:319 */
+  /* ./syntax//mmbuilder.nit:341 */
   ATTR_syntax___mmbuilder___MMSrcAncestor____local_class(fra.me.REG[2]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   init_table[itpos1] = 1;
@@ -1666,17 +1950,17 @@ val_t syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 330;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:330 */
+  /* ./syntax//mmbuilder.nit:352 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 330);
+    nit_abort("Uninitialized attribute %s", "_local_class_arity", LOCATE_syntax___mmbuilder, 352);
   }
   REGB0 = ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1688,14 +1972,14 @@ void syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 330;
+  fra.me.line = 352;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:330 */
+  /* ./syntax//mmbuilder.nit:352 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____local_class_arity(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -1705,13 +1989,13 @@ val_t syntax___mmbuilder___ClassBuilderVisitor___formals(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 333;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___formals;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:333 */
+  /* ./syntax//mmbuilder.nit:355 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -1721,7 +2005,7 @@ void syntax___mmbuilder___ClassBuilderVisitor___formals__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_syntax___mmbuilder;
-  fra.me.line = 333;
+  fra.me.line = 355;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___formals__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1729,7 +2013,7 @@ void syntax___mmbuilder___ClassBuilderVisitor___formals__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:333 */
+  /* ./syntax//mmbuilder.nit:355 */
   ATTR_syntax___mmbuilder___ClassBuilderVisitor____formals(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -1740,7 +2024,7 @@ void syntax___mmbuilder___ClassBuilderVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 336;
+  fra.me.line = 358;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1748,10 +2032,10 @@ void syntax___mmbuilder___ClassBuilderVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:336 */
+  /* ./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, 336);
+    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;
@@ -1764,7 +2048,7 @@ void syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1, val_t p
   if (init_table[itpos2]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 337;
+  fra.me.line = 359;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1774,7 +2058,7 @@ void syntax___mmbuilder___ClassBuilderVisitor___init(val_t p0, val_t p1, val_t p
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:337 */
+  /* ./syntax//mmbuilder.nit:359 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos2] = 1;
@@ -1786,7 +2070,7 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t p0, va
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 344;
+  fra.me.line = 366;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1794,10 +2078,10 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___visit(val_t p0, va
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:344 */
+  /* ./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, 344);
+    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;
@@ -1810,7 +2094,7 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val
   if (init_table[itpos3]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 345;
+  fra.me.line = 367;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassSpecializationBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1820,7 +2104,7 @@ void syntax___mmbuilder___ClassSpecializationBuilderVisitor___init(val_t p0, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:345 */
+  /* ./syntax//mmbuilder.nit:367 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos3] = 1;
@@ -1832,7 +2116,7 @@ void syntax___mmbuilder___ClassAncestorBuilder___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 352;
+  fra.me.line = 374;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassAncestorBuilder___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1840,10 +2124,10 @@ void syntax___mmbuilder___ClassAncestorBuilder___visit(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:352 */
+  /* ./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, 352);
+    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;
@@ -1856,7 +2140,7 @@ void syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1, val_t
   if (init_table[itpos4]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 353;
+  fra.me.line = 375;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassAncestorBuilder___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1866,7 +2150,7 @@ void syntax___mmbuilder___ClassAncestorBuilder___init(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:353 */
+  /* ./syntax//mmbuilder.nit:375 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos4] = 1;
@@ -1878,7 +2162,7 @@ void syntax___mmbuilder___ClassVerifierVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 360;
+  fra.me.line = 382;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassVerifierVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1886,10 +2170,10 @@ void syntax___mmbuilder___ClassVerifierVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:360 */
+  /* ./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, 360);
+    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;
@@ -1902,7 +2186,7 @@ void syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1, val_t
   if (init_table[itpos5]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 361;
+  fra.me.line = 383;
   fra.me.meth = LOCATE_syntax___mmbuilder___ClassVerifierVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1912,7 +2196,7 @@ void syntax___mmbuilder___ClassVerifierVisitor___init(val_t p0, val_t p1, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:361 */
+  /* ./syntax//mmbuilder.nit:383 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos5] = 1;
@@ -1924,7 +2208,7 @@ void syntax___mmbuilder___PropertyBuilderVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 371;
+  fra.me.line = 393;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1932,10 +2216,10 @@ void syntax___mmbuilder___PropertyBuilderVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:371 */
+  /* ./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, 371);
+    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;
@@ -1948,7 +2232,7 @@ void syntax___mmbuilder___PropertyBuilderVisitor___init(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_syntax___mmbuilder;
-  fra.me.line = 372;
+  fra.me.line = 394;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyBuilderVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 3;
@@ -1958,7 +2242,7 @@ void syntax___mmbuilder___PropertyBuilderVisitor___init(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:372 */
+  /* ./syntax//mmbuilder.nit:394 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
   stack_frame_head = fra.me.prev;
   init_table[itpos6] = 1;
@@ -1970,17 +2254,17 @@ val_t syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(val_t p0)
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 380;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:380 */
+  /* ./syntax//mmbuilder.nit:402 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 380);
+    nit_abort("Uninitialized attribute %s", "_signature_builder", LOCATE_syntax___mmbuilder, 402);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -1991,7 +2275,7 @@ void syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 380;
+  fra.me.line = 402;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -1999,7 +2283,7 @@ void syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:380 */
+  /* ./syntax//mmbuilder.nit:402 */
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2010,7 +2294,7 @@ void syntax___mmbuilder___PropertyVerifierVisitor___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 383;
+  fra.me.line = 405;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2018,10 +2302,10 @@ void syntax___mmbuilder___PropertyVerifierVisitor___visit(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:383 */
+  /* ./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, 383);
+    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;
@@ -2034,7 +2318,7 @@ void syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1, val
   if (init_table[itpos7]) return;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 385;
+  fra.me.line = 407;
   fra.me.meth = LOCATE_syntax___mmbuilder___PropertyVerifierVisitor___init;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -2045,11 +2329,11 @@ void syntax___mmbuilder___PropertyVerifierVisitor___init(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:385 */
+  /* ./syntax//mmbuilder.nit:407 */
   fra.me.REG[3] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:387 */
+  /* ./syntax//mmbuilder.nit:409 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___init(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], init_table);
-  /* ./syntax//mmbuilder.nit:388 */
+  /* ./syntax//mmbuilder.nit:410 */
   fra.me.REG[2] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   ATTR_syntax___mmbuilder___PropertyVerifierVisitor____signature_builder(fra.me.REG[3]) = fra.me.REG[2];
   stack_frame_head = fra.me.prev;
@@ -2062,17 +2346,17 @@ val_t syntax___mmbuilder___SignatureBuilder___params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 394;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:394 */
+  /* ./syntax//mmbuilder.nit:416 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 394);
+    nit_abort("Uninitialized attribute %s", "_params", LOCATE_syntax___mmbuilder, 416);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2083,7 +2367,7 @@ void syntax___mmbuilder___SignatureBuilder___params__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_syntax___mmbuilder;
-  fra.me.line = 394;
+  fra.me.line = 416;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___params__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2091,7 +2375,7 @@ void syntax___mmbuilder___SignatureBuilder___params__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:394 */
+  /* ./syntax//mmbuilder.nit:416 */
   ATTR_syntax___mmbuilder___SignatureBuilder____params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2102,17 +2386,17 @@ val_t syntax___mmbuilder___SignatureBuilder___untyped_params(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 397;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:397 */
+  /* ./syntax//mmbuilder.nit:419 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 397);
+    nit_abort("Uninitialized attribute %s", "_untyped_params", LOCATE_syntax___mmbuilder, 419);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2123,7 +2407,7 @@ void syntax___mmbuilder___SignatureBuilder___untyped_params__eq(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 397;
+  fra.me.line = 419;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___untyped_params__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2131,7 +2415,7 @@ void syntax___mmbuilder___SignatureBuilder___untyped_params__eq(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:397 */
+  /* ./syntax//mmbuilder.nit:419 */
   ATTR_syntax___mmbuilder___SignatureBuilder____untyped_params(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2142,17 +2426,17 @@ val_t syntax___mmbuilder___SignatureBuilder___vararg_rank(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 400;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:400 */
+  /* ./syntax//mmbuilder.nit:422 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 400);
+    nit_abort("Uninitialized attribute %s", "_vararg_rank", LOCATE_syntax___mmbuilder, 422);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2164,14 +2448,14 @@ void syntax___mmbuilder___SignatureBuilder___vararg_rank__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_syntax___mmbuilder;
-  fra.me.line = 400;
+  fra.me.line = 422;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___vararg_rank__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:400 */
+  /* ./syntax//mmbuilder.nit:422 */
   ATTR_syntax___mmbuilder___SignatureBuilder____vararg_rank(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2182,17 +2466,17 @@ val_t syntax___mmbuilder___SignatureBuilder___closure_decls(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 403;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___closure_decls;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:403 */
+  /* ./syntax//mmbuilder.nit:425 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 403);
+    nit_abort("Uninitialized attribute %s", "_closure_decls", LOCATE_syntax___mmbuilder, 425);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2203,7 +2487,7 @@ void syntax___mmbuilder___SignatureBuilder___closure_decls__eq(val_t p0, val_t p
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 403;
+  fra.me.line = 425;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___closure_decls__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2211,7 +2495,7 @@ void syntax___mmbuilder___SignatureBuilder___closure_decls__eq(val_t p0, val_t p
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:403 */
+  /* ./syntax//mmbuilder.nit:425 */
   ATTR_syntax___mmbuilder___SignatureBuilder____closure_decls(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2222,17 +2506,17 @@ val_t syntax___mmbuilder___SignatureBuilder___has_error_occured(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 406;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:406 */
+  /* ./syntax//mmbuilder.nit:428 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 406);
+    nit_abort("Uninitialized attribute %s", "_has_error_occured", LOCATE_syntax___mmbuilder, 428);
   }
   REGB0 = ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -2244,14 +2528,14 @@ void syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 406;
+  fra.me.line = 428;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
   REGB0 = p1;
-  /* ./syntax//mmbuilder.nit:406 */
+  /* ./syntax//mmbuilder.nit:428 */
   ATTR_syntax___mmbuilder___SignatureBuilder____has_error_occured(fra.me.REG[0]) = REGB0;
   stack_frame_head = fra.me.prev;
   return;
@@ -2261,13 +2545,13 @@ val_t syntax___mmbuilder___SignatureBuilder___signature(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 409;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:409 */
+  /* ./syntax//mmbuilder.nit:431 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -2277,7 +2561,7 @@ void syntax___mmbuilder___SignatureBuilder___signature__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_syntax___mmbuilder;
-  fra.me.line = 409;
+  fra.me.line = 431;
   fra.me.meth = LOCATE_syntax___mmbuilder___SignatureBuilder___signature__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2285,7 +2569,7 @@ void syntax___mmbuilder___SignatureBuilder___signature__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:409 */
+  /* ./syntax//mmbuilder.nit:431 */
   ATTR_syntax___mmbuilder___SignatureBuilder____signature(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -2310,7 +2594,7 @@ void syntax___mmbuilder___ANode___accept_class_builder(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___mmbuilder;
-  fra.me.line = 416;
+  fra.me.line = 438;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2318,7 +2602,7 @@ void syntax___mmbuilder___ANode___accept_class_builder(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:416 */
+  /* ./syntax//mmbuilder.nit:438 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2328,7 +2612,7 @@ void syntax___mmbuilder___ANode___accept_class_specialization_builder(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 417;
+  fra.me.line = 439;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2336,7 +2620,7 @@ void syntax___mmbuilder___ANode___accept_class_specialization_builder(val_t p0,
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:417 */
+  /* ./syntax//mmbuilder.nit:439 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2346,7 +2630,7 @@ void syntax___mmbuilder___ANode___accept_class_ancestor_builder(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 418;
+  fra.me.line = 440;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2354,7 +2638,7 @@ void syntax___mmbuilder___ANode___accept_class_ancestor_builder(val_t p0, val_t
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:418 */
+  /* ./syntax//mmbuilder.nit:440 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2364,7 +2648,7 @@ void syntax___mmbuilder___ANode___accept_class_verifier(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___mmbuilder;
-  fra.me.line = 419;
+  fra.me.line = 441;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2372,7 +2656,7 @@ void syntax___mmbuilder___ANode___accept_class_verifier(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:419 */
+  /* ./syntax//mmbuilder.nit:441 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2382,7 +2666,7 @@ void syntax___mmbuilder___ANode___accept_property_builder(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___mmbuilder;
-  fra.me.line = 420;
+  fra.me.line = 442;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2390,7 +2674,7 @@ void syntax___mmbuilder___ANode___accept_property_builder(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:420 */
+  /* ./syntax//mmbuilder.nit:442 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2400,7 +2684,7 @@ void syntax___mmbuilder___ANode___accept_property_verifier(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___mmbuilder;
-  fra.me.line = 421;
+  fra.me.line = 443;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANode___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -2408,7 +2692,7 @@ void syntax___mmbuilder___ANode___accept_property_verifier(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:421 */
+  /* ./syntax//mmbuilder.nit:443 */
   CALL_syntax___syntax_base___ANode___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2423,7 +2707,7 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 425;
+  fra.me.line = 447;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModule___import_super_modules;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2435,14 +2719,14 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:429 */
+  /* ./syntax//mmbuilder.nit:451 */
   fra.me.REG[3] = NEW_Array_standard___collection___array___Array___init();
-  /* ./syntax//mmbuilder.nit:430 */
+  /* ./syntax//mmbuilder.nit:452 */
   fra.me.REG[4] = NIT_NULL;
-  /* ./syntax//mmbuilder.nit:431 */
+  /* ./syntax//mmbuilder.nit:453 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AModule___n_imports(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_syntax___mmbuilder___AModule___import_super_modules_1));
-  /* ./syntax//mmbuilder.nit:441 */
+  /* ./syntax//mmbuilder.nit:463 */
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -2457,14 +2741,14 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:442 */
+    /* ./syntax//mmbuilder.nit:464 */
     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)) {
-      /* ./syntax//mmbuilder.nit:443 */
+      /* ./syntax//mmbuilder.nit:465 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 443);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 465);
       }
       fra.me.REG[4] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[4])(fra.me.REG[4]);
       if (!once_value_2) {
@@ -2478,10 +2762,10 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
       CALL_mmloader___ToolContext___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
     }
   } else {
-    /* ./syntax//mmbuilder.nit:445 */
+    /* ./syntax//mmbuilder.nit:467 */
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:446 */
+      /* ./syntax//mmbuilder.nit:468 */
       if (!once_value_3) {
         if (!once_value_4) {
           fra.me.REG[0] = BOX_NativeString("standard");
@@ -2496,16 +2780,16 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
         register_static_object(&once_value_3);
       } else fra.me.REG[0] = once_value_3;
       fra.me.REG[0] = fra.me.REG[0];
-      /* ./syntax//mmbuilder.nit:447 */
+      /* ./syntax//mmbuilder.nit:469 */
       fra.me.REG[0] = CALL_mmloader___ToolContext___get_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:448 */
+      /* ./syntax//mmbuilder.nit:470 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:449 */
+      /* ./syntax//mmbuilder.nit:471 */
       REGB0 = TAG_Int(1);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0], REGB0);
     }
   }
-  /* ./syntax//mmbuilder.nit:452 */
+  /* ./syntax//mmbuilder.nit:474 */
   CALL_metamodel___abstractmetamodel___MMContext___add_module(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
   return;
@@ -2528,9 +2812,9 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:432 */
+    /* ./syntax//mmbuilder.nit:454 */
     fra.me.REG[1] = CALL_syntax___mmbuilder___AImport___module_name(fra.me.REG[0])(fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:433 */
+    /* ./syntax//mmbuilder.nit:455 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -2545,15 +2829,15 @@ void syntax___mmbuilder___AModule___import_super_modules(val_t p0, val_t p1, val
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:434 */
+      /* ./syntax//mmbuilder.nit:456 */
       fra.me.REG[1] = CALL_mmloader___ToolContext___get_module(closctx->REG[1])(closctx->REG[1], fra.me.REG[1], closctx->REG[2]);
-      /* ./syntax//mmbuilder.nit:435 */
+      /* ./syntax//mmbuilder.nit:457 */
       CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[3])(closctx->REG[3], fra.me.REG[1]);
-      /* ./syntax//mmbuilder.nit:436 */
+      /* ./syntax//mmbuilder.nit:458 */
       REGB0 = CALL_syntax___mmbuilder___AImport___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       CALL_metamodel___abstractmetamodel___MMModule___add_super_module(closctx->REG[2])(closctx->REG[2], fra.me.REG[1], REGB0);
     } else {
-      /* ./syntax//mmbuilder.nit:438 */
+      /* ./syntax//mmbuilder.nit:460 */
       closctx->REG[4] = fra.me.REG[0];
     }
     stack_frame_head = fra.me.prev;
@@ -2569,7 +2853,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
     static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 457;
+  fra.me.line = 479;
   fra.me.meth = LOCATE_syntax___mmbuilder___AModuledecl___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -2580,7 +2864,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:459 */
+  /* ./syntax//mmbuilder.nit:481 */
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[2] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[2])(fra.me.REG[2]);
@@ -2594,7 +2878,7 @@ void syntax___mmbuilder___AModuledecl___accept_class_builder(val_t p0, val_t p1)
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:460 */
+    /* ./syntax//mmbuilder.nit:482 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuledecl___n_name(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[3] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Int(5);
@@ -2646,12 +2930,12 @@ val_t syntax___mmbuilder___AImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 466;
+  fra.me.line = 488;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:466 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 466);
+  /* ./syntax//mmbuilder.nit:488 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 488);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2660,12 +2944,12 @@ val_t syntax___mmbuilder___AImport___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 469;
+  fra.me.line = 491;
   fra.me.meth = LOCATE_syntax___mmbuilder___AImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:469 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 469);
+  /* ./syntax//mmbuilder.nit:491 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 491);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2674,13 +2958,13 @@ val_t syntax___mmbuilder___AStdImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 473;
+  fra.me.line = 495;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:475 */
+  /* ./syntax//mmbuilder.nit:497 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_name(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_parser___parser_nodes___AModuleName___n_id(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
@@ -2695,13 +2979,13 @@ val_t syntax___mmbuilder___AStdImport___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 477;
+  fra.me.line = 499;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdImport___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:479 */
+  /* ./syntax//mmbuilder.nit:501 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdImport___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -2714,13 +2998,13 @@ val_t syntax___mmbuilder___ANoImport___module_name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 483;
+  fra.me.line = 505;
   fra.me.meth = LOCATE_syntax___mmbuilder___ANoImport___module_name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:485 */
+  /* ./syntax//mmbuilder.nit:507 */
   fra.me.REG[0] = NIT_NULL;
   goto label1;
   label1: while(0);
@@ -2732,12 +3016,12 @@ val_t syntax___mmbuilder___AVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 490;
+  fra.me.line = 512;
   fra.me.meth = LOCATE_syntax___mmbuilder___AVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:490 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 490);
+  /* ./syntax//mmbuilder.nit:512 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 512);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2747,13 +3031,13 @@ val_t syntax___mmbuilder___APublicVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 494;
+  fra.me.line = 516;
   fra.me.meth = LOCATE_syntax___mmbuilder___APublicVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:494 */
+  /* ./syntax//mmbuilder.nit:516 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -2766,13 +3050,13 @@ val_t syntax___mmbuilder___AProtectedVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 497;
+  fra.me.line = 519;
   fra.me.meth = LOCATE_syntax___mmbuilder___AProtectedVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:497 */
+  /* ./syntax//mmbuilder.nit:519 */
   REGB0 = TAG_Int(2);
   goto label1;
   label1: while(0);
@@ -2785,13 +3069,13 @@ val_t syntax___mmbuilder___APrivateVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 500;
+  fra.me.line = 522;
   fra.me.meth = LOCATE_syntax___mmbuilder___APrivateVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:500 */
+  /* ./syntax//mmbuilder.nit:522 */
   REGB0 = TAG_Int(3);
   goto label1;
   label1: while(0);
@@ -2804,13 +3088,13 @@ val_t syntax___mmbuilder___AIntrudeVisibility___level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 503;
+  fra.me.line = 525;
   fra.me.meth = LOCATE_syntax___mmbuilder___AIntrudeVisibility___level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:503 */
+  /* ./syntax//mmbuilder.nit:525 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -2818,40 +3102,42 @@ val_t syntax___mmbuilder___AIntrudeVisibility___level(val_t p0){
   return REGB0;
 }
 val_t syntax___mmbuilder___AClassdef___local_class(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 508;
+  fra.me.line = 530;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___local_class;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:508 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:530 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 508);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 530);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___mmbuilder___AClassdef___name(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_syntax___mmbuilder;
-  fra.me.line = 511;
+  fra.me.line = 533;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 0;
-  /* ./syntax//mmbuilder.nit:511 */
-  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 511);
+  /* ./syntax//mmbuilder.nit:533 */
+  nit_abort("Deferred method called", NULL, LOCATE_syntax___mmbuilder, 533);
   stack_frame_head = fra.me.prev;
   return NIT_NULL;
 }
@@ -2861,13 +3147,13 @@ val_t syntax___mmbuilder___AClassdef___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 514;
+  fra.me.line = 536;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:515 */
+  /* ./syntax//mmbuilder.nit:537 */
   REGB0 = TAG_Int(0);
   goto label1;
   label1: while(0);
@@ -2880,13 +3166,13 @@ val_t syntax___mmbuilder___AClassdef___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 517;
+  fra.me.line = 539;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:518 */
+  /* ./syntax//mmbuilder.nit:540 */
   REGB0 = TAG_Int(1);
   goto label1;
   label1: while(0);
@@ -2903,7 +3189,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 520;
+  fra.me.line = 542;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -2918,26 +3204,26 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:520 */
+  /* ./syntax//mmbuilder.nit:542 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:523 */
+  /* ./syntax//mmbuilder.nit:545 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:524 */
+  /* ./syntax//mmbuilder.nit:546 */
   fra.me.REG[5] = CALL_syntax___syntax_base___MMSrcModule___src_local_classes(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:525 */
+  /* ./syntax//mmbuilder.nit:547 */
   fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_standard___collection___abstract_collection___MapRead___has_key(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:526 */
+    /* ./syntax//mmbuilder.nit:548 */
     fra.me.REG[6] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[6] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:527 */
+    /* ./syntax//mmbuilder.nit:549 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:528 */
+    /* ./syntax//mmbuilder.nit:550 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:530 */
+      /* ./syntax//mmbuilder.nit:552 */
       REGB0 = TAG_Int(5);
       fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -2964,7 +3250,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       fra.me.REG[8] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[6])(fra.me.REG[6]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 530);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 552);
       }
       fra.me.REG[8] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = CALL_location___Location___line_start(fra.me.REG[8])(fra.me.REG[8]);
@@ -2981,16 +3267,16 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:531 */
+      /* ./syntax//mmbuilder.nit:553 */
       goto label4;
     }
-    /* ./syntax//mmbuilder.nit:534 */
+    /* ./syntax//mmbuilder.nit:556 */
     fra.me.REG[7] = CALL_syntax___syntax_base___MMSrcLocalClass___node(fra.me.REG[6])(fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:535 */
+    /* ./syntax//mmbuilder.nit:557 */
     while(1) {
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 535);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
       }
       fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
       REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
@@ -3009,7 +3295,7 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 535);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 557);
         }
         fra.me.REG[8] = CALL_syntax___syntax_base___AClassdef___next_node(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[7] = fra.me.REG[8];
@@ -3018,47 +3304,47 @@ void syntax___mmbuilder___AClassdef___accept_class_builder(val_t p0, val_t p1){
       }
     }
     label5: while(0);
-    /* ./syntax//mmbuilder.nit:536 */
+    /* ./syntax//mmbuilder.nit:558 */
     REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 536);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 558);
     }
     CALL_syntax___syntax_base___AClassdef___next_node__eq(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[2]);
   } else {
-    /* ./syntax//mmbuilder.nit:538 */
+    /* ./syntax//mmbuilder.nit:560 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClassdef___arity(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[7] = NEW_MMSrcLocalClass_syntax___syntax_base___MMSrcLocalClass___init(fra.me.REG[4], fra.me.REG[7], fra.me.REG[2], REGB0);
     fra.me.REG[6] = fra.me.REG[7];
-    /* ./syntax//mmbuilder.nit:539 */
+    /* ./syntax//mmbuilder.nit:561 */
     ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]) = fra.me.REG[6];
-    /* ./syntax//mmbuilder.nit:540 */
+    /* ./syntax//mmbuilder.nit:562 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7], fra.me.REG[6]);
-    /* ./syntax//mmbuilder.nit:541 */
+    /* ./syntax//mmbuilder.nit:563 */
     fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:542 */
+      /* ./syntax//mmbuilder.nit:564 */
       CALL_syntax___mmbuilder___AClassdef___build_class_introduction(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:544 */
+      /* ./syntax//mmbuilder.nit:566 */
       fra.me.REG[7] = CALL_syntax___mmbuilder___AClassdef___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:545 */
+      /* ./syntax//mmbuilder.nit:567 */
       CALL_syntax___mmbuilder___AClassdef___build_class_refinement(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[7]);
     }
   }
-  /* ./syntax//mmbuilder.nit:549 */
+  /* ./syntax//mmbuilder.nit:571 */
   REGB0 = TAG_Int(0);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
-  /* ./syntax//mmbuilder.nit:550 */
+  /* ./syntax//mmbuilder.nit:572 */
   fra.me.REG[6] = CALL_syntax___syntax_base___MMSrcLocalClass___formal_dict(fra.me.REG[6])(fra.me.REG[6]);
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  /* ./syntax//mmbuilder.nit:553 */
+  /* ./syntax//mmbuilder.nit:575 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:556 */
+  /* ./syntax//mmbuilder.nit:578 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___formals__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   label4: while(0);
   stack_frame_head = fra.me.prev;
@@ -3073,7 +3359,7 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(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___mmbuilder;
-  fra.me.line = 559;
+  fra.me.line = 581;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_introduction;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -3084,19 +3370,19 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:561 */
+  /* ./syntax//mmbuilder.nit:583 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___new_global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:562 */
+  /* ./syntax//mmbuilder.nit:584 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:564 */
+  /* ./syntax//mmbuilder.nit:586 */
   REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-  /* ./syntax//mmbuilder.nit:565 */
+  /* ./syntax//mmbuilder.nit:587 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:566 */
+    /* ./syntax//mmbuilder.nit:588 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -3112,7 +3398,7 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:567 */
+      /* ./syntax//mmbuilder.nit:589 */
       REGB0 = TAG_Int(3);
       fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -3138,18 +3424,18 @@ void syntax___mmbuilder___AClassdef___build_class_introduction(val_t p0, val_t p
       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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:568 */
+      /* ./syntax//mmbuilder.nit:590 */
       goto label3;
     }
-    /* ./syntax//mmbuilder.nit:570 */
+    /* ./syntax//mmbuilder.nit:592 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:571 */
+    /* ./syntax//mmbuilder.nit:593 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-    /* ./syntax//mmbuilder.nit:572 */
+    /* ./syntax//mmbuilder.nit:594 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
@@ -3173,7 +3459,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 576;
+  fra.me.line = 598;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___build_class_refinement;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -3185,13 +3471,13 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:578 */
+  /* ./syntax//mmbuilder.nit:600 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[0])(fra.me.REG[0]);
   CALL_metamodel___abstractmetamodel___MMLocalClass___set_global(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:580 */
+  /* ./syntax//mmbuilder.nit:602 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:581 */
+  /* ./syntax//mmbuilder.nit:603 */
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB0)) {
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[0])(fra.me.REG[0]);
@@ -3212,7 +3498,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:582 */
+    /* ./syntax//mmbuilder.nit:604 */
     REGB0 = TAG_Int(3);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -3238,29 +3524,29 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:583 */
+    /* ./syntax//mmbuilder.nit:605 */
     goto label3;
   }
-  /* ./syntax//mmbuilder.nit:586 */
+  /* ./syntax//mmbuilder.nit:608 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 586);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 608);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:586 */
+    /* ./syntax//mmbuilder.nit:608 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:587 */
+    /* ./syntax//mmbuilder.nit:609 */
     REGB2 = TAG_Int(5);
     fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_4) {
@@ -3275,7 +3561,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[0]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 587);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 609);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
@@ -3305,7 +3591,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
   }
-  /* ./syntax//mmbuilder.nit:590 */
+  /* ./syntax//mmbuilder.nit:612 */
   REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AStdClassdef, ID_parser___parser_nodes___AStdClassdef)) /*cast AStdClassdef*/;
   if (UNTAG_Bool(REGB2)) {
     REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[2])(fra.me.REG[2]);
@@ -3320,36 +3606,36 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//mmbuilder.nit:591 */
+      /* ./syntax//mmbuilder.nit:613 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:590 */
+      /* ./syntax//mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:591 */
+      /* ./syntax//mmbuilder.nit:613 */
       fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     } else {
-      /* ./syntax//mmbuilder.nit:590 */
+      /* ./syntax//mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(true);
     } else {
-      /* ./syntax//mmbuilder.nit:592 */
+      /* ./syntax//mmbuilder.nit:614 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[2])(fra.me.REG[2]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-      /* ./syntax//mmbuilder.nit:590 */
+      /* ./syntax//mmbuilder.nit:612 */
       REGB2 = REGB1;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:592 */
+      /* ./syntax//mmbuilder.nit:614 */
       fra.me.REG[2] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[2])(fra.me.REG[2]);
     } else {
-      /* ./syntax//mmbuilder.nit:590 */
+      /* ./syntax//mmbuilder.nit:612 */
       REGB1 = TAG_Bool(false);
       REGB2 = REGB1;
     }
@@ -3358,7 +3644,7 @@ void syntax___mmbuilder___AClassdef___build_class_refinement(val_t p0, val_t p1,
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:594 */
+    /* ./syntax//mmbuilder.nit:616 */
     REGB2 = TAG_Int(3);
     fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_7) {
@@ -3409,7 +3695,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             static val_t once_value_12; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 598;
+  fra.me.line = 620;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -3424,66 +3710,71 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:598 */
+  /* ./syntax//mmbuilder.nit:620 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:600 */
+  /* ./syntax//mmbuilder.nit:622 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:601 */
+  /* ./syntax//mmbuilder.nit:623 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 601);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 623);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:602 */
+  /* ./syntax//mmbuilder.nit:624 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(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___mmbuilder, 602);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 624);
   }
   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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:603 */
+      /* ./syntax//mmbuilder.nit:625 */
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-      /* ./syntax//mmbuilder.nit:604 */
+      /* ./syntax//mmbuilder.nit:626 */
       REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:605 */
+        /* ./syntax//mmbuilder.nit:627 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:606 */
+          /* ./syntax//mmbuilder.nit:628 */
           REGB1 = TAG_Int(5);
           fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_1) {
@@ -3522,11 +3813,11 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           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[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
         } else {
-          /* ./syntax//mmbuilder.nit:607 */
+          /* ./syntax//mmbuilder.nit:629 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:608 */
+            /* ./syntax//mmbuilder.nit:630 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_4) {
@@ -3567,10 +3858,10 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       } else {
-        /* ./syntax//mmbuilder.nit:610 */
+        /* ./syntax//mmbuilder.nit:632 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:611 */
+          /* ./syntax//mmbuilder.nit:633 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
@@ -3581,7 +3872,7 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             REGB1 = REGB2;
           }
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:612 */
+            /* ./syntax//mmbuilder.nit:634 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_7) {
@@ -3621,10 +3912,10 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
           }
         } else {
-          /* ./syntax//mmbuilder.nit:615 */
+          /* ./syntax//mmbuilder.nit:637 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:616 */
+            /* ./syntax//mmbuilder.nit:638 */
             REGB1 = TAG_Int(5);
             fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_10) {
@@ -3665,14 +3956,14 @@ void syntax___mmbuilder___AClassdef___accept_class_verifier(val_t p0, val_t p1){
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label13;
     }
   }
@@ -3685,7 +3976,7 @@ void syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(val_t p0, val_t
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 623;
+  fra.me.line = 645;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3695,15 +3986,15 @@ void syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:623 */
+  /* ./syntax//mmbuilder.nit:645 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:625 */
+  /* ./syntax//mmbuilder.nit:647 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:626 */
+  /* ./syntax//mmbuilder.nit:648 */
   CALL_SUPER_syntax___mmbuilder___AClassdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:627 */
+  /* ./syntax//mmbuilder.nit:649 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -3714,13 +4005,13 @@ val_t syntax___mmbuilder___AClasskind___is_interface(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 632;
+  fra.me.line = 654;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:632 */
+  /* ./syntax//mmbuilder.nit:654 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3733,13 +4024,13 @@ val_t syntax___mmbuilder___AClasskind___is_enum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 633;
+  fra.me.line = 655;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:633 */
+  /* ./syntax//mmbuilder.nit:655 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3752,13 +4043,13 @@ val_t syntax___mmbuilder___AClasskind___is_abstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 634;
+  fra.me.line = 656;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:634 */
+  /* ./syntax//mmbuilder.nit:656 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3771,13 +4062,13 @@ val_t syntax___mmbuilder___AClasskind___is_extern(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 635;
+  fra.me.line = 657;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClasskind___is_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:635 */
+  /* ./syntax//mmbuilder.nit:657 */
   REGB0 = TAG_Bool(false);
   goto label1;
   label1: while(0);
@@ -3790,13 +4081,13 @@ val_t syntax___mmbuilder___AInterfaceClasskind___is_interface(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 639;
+  fra.me.line = 661;
   fra.me.meth = LOCATE_syntax___mmbuilder___AInterfaceClasskind___is_interface;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:639 */
+  /* ./syntax//mmbuilder.nit:661 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3809,13 +4100,13 @@ val_t syntax___mmbuilder___AEnumClasskind___is_enum(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 642;
+  fra.me.line = 664;
   fra.me.meth = LOCATE_syntax___mmbuilder___AEnumClasskind___is_enum;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:642 */
+  /* ./syntax//mmbuilder.nit:664 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3828,13 +4119,13 @@ val_t syntax___mmbuilder___AExternClasskind___is_extern(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 645;
+  fra.me.line = 667;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExternClasskind___is_extern;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:645 */
+  /* ./syntax//mmbuilder.nit:667 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3847,13 +4138,13 @@ val_t syntax___mmbuilder___AAbstractClasskind___is_abstract(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 648;
+  fra.me.line = 670;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAbstractClasskind___is_abstract;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:648 */
+  /* ./syntax//mmbuilder.nit:670 */
   REGB0 = TAG_Bool(true);
   goto label1;
   label1: while(0);
@@ -3866,17 +4157,17 @@ val_t syntax___mmbuilder___AStdClassdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 652;
+  fra.me.line = 674;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:654 */
+  /* ./syntax//mmbuilder.nit:676 */
   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_syntax___mmbuilder, 654);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 676);
   }
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3890,13 +4181,13 @@ val_t syntax___mmbuilder___AStdClassdef___arity(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 656;
+  fra.me.line = 678;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___arity;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:658 */
+  /* ./syntax//mmbuilder.nit:680 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_formaldefs(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -3911,7 +4202,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 660;
+  fra.me.line = 682;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -3921,14 +4212,14 @@ void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:660 */
+  /* ./syntax//mmbuilder.nit:682 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:662 */
+  /* ./syntax//mmbuilder.nit:684 */
   CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:664 */
+  /* ./syntax//mmbuilder.nit:686 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:665 */
+  /* ./syntax//mmbuilder.nit:687 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AClassdef___local_class(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[3]));
@@ -3938,23 +4229,23 @@ void syntax___mmbuilder___AStdClassdef___accept_class_specialization_builder(val
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:666 */
+    /* ./syntax//mmbuilder.nit:688 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_interface(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:667 */
+    /* ./syntax//mmbuilder.nit:689 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:668 */
+    /* ./syntax//mmbuilder.nit:690 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:669 */
+    /* ./syntax//mmbuilder.nit:691 */
     fra.me.REG[3] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[3])(fra.me.REG[3]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-    /* ./syntax//mmbuilder.nit:670 */
+    /* ./syntax//mmbuilder.nit:692 */
     REGB0 = CALL_syntax___mmbuilder___AClassdef___visibility_level(fra.me.REG[2])(fra.me.REG[2]);
     CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
   }
@@ -3996,7 +4287,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     static val_t once_value_29; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 673;
+  fra.me.line = 695;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 9;
@@ -4011,19 +4302,19 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:673 */
+  /* ./syntax//mmbuilder.nit:695 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:675 */
+  /* ./syntax//mmbuilder.nit:697 */
   CALL_SUPER_syntax___mmbuilder___AStdClassdef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:676 */
+  /* ./syntax//mmbuilder.nit:698 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 676);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 698);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:677 */
+  /* ./syntax//mmbuilder.nit:699 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
@@ -4033,7 +4324,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:679 */
+    /* ./syntax//mmbuilder.nit:701 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4049,7 +4340,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:680 */
+      /* ./syntax//mmbuilder.nit:702 */
       REGB0 = TAG_Int(3);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
@@ -4076,62 +4367,67 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
       fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:682 */
+    /* ./syntax//mmbuilder.nit:704 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:683 */
+      /* ./syntax//mmbuilder.nit:705 */
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = TAG_Bool(true);
       CALL_metamodel___abstractmetamodel___MMModule___is_extern_hybrid__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
     }
-    /* ./syntax//mmbuilder.nit:686 */
+    /* ./syntax//mmbuilder.nit:708 */
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 686);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 708);
     }
     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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:687 */
+        /* ./syntax//mmbuilder.nit:709 */
         fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:688 */
+        /* ./syntax//mmbuilder.nit:710 */
         REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:689 */
+          /* ./syntax//mmbuilder.nit:711 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:690 */
+            /* ./syntax//mmbuilder.nit:712 */
             REGB1 = TAG_Int(5);
             fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_3) {
@@ -4170,11 +4466,11 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             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[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
           } else {
-            /* ./syntax//mmbuilder.nit:691 */
+            /* ./syntax//mmbuilder.nit:713 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:692 */
+              /* ./syntax//mmbuilder.nit:714 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_6) {
@@ -4215,10 +4511,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         } else {
-          /* ./syntax//mmbuilder.nit:694 */
+          /* ./syntax//mmbuilder.nit:716 */
           REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
           if (UNTAG_Bool(REGB1)) {
-            /* ./syntax//mmbuilder.nit:695 */
+            /* ./syntax//mmbuilder.nit:717 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
             REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
             if (UNTAG_Bool(REGB1)) {
@@ -4229,7 +4525,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:696 */
+              /* ./syntax//mmbuilder.nit:718 */
               REGB1 = TAG_Int(5);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
               if (!once_value_9) {
@@ -4269,10 +4565,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
             }
           } else {
-            /* ./syntax//mmbuilder.nit:698 */
+            /* ./syntax//mmbuilder.nit:720 */
             REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
             if (UNTAG_Bool(REGB1)) {
-              /* ./syntax//mmbuilder.nit:699 */
+              /* ./syntax//mmbuilder.nit:721 */
               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[6])(fra.me.REG[6]);
               REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
               if (UNTAG_Bool(REGB1)) {
@@ -4283,7 +4579,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:700 */
+               /* ./syntax//mmbuilder.nit:722 */
                REGB1 = TAG_Int(5);
                fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_12) {
@@ -4323,10 +4619,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
               }
             } else {
-              /* ./syntax//mmbuilder.nit:703 */
+              /* ./syntax//mmbuilder.nit:725 */
               REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[6])(fra.me.REG[6]);
               if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:704 */
+               /* ./syntax//mmbuilder.nit:726 */
                REGB1 = TAG_Int(5);
                fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_15) {
@@ -4365,10 +4661,10 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
                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[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[7]);
               } else {
-               /* ./syntax//mmbuilder.nit:705 */
+               /* ./syntax//mmbuilder.nit:727 */
                REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[6])(fra.me.REG[6]);
                if (UNTAG_Bool(REGB1)) {
-               /* ./syntax//mmbuilder.nit:706 */
+               /* ./syntax//mmbuilder.nit:728 */
                REGB1 = TAG_Int(5);
                fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
                if (!once_value_18) {
@@ -4411,25 +4707,25 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
             }
           }
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label21;
       }
     }
     label21: while(0);
-    /* ./syntax//mmbuilder.nit:711 */
+    /* ./syntax//mmbuilder.nit:733 */
     goto label22;
   }
-  /* ./syntax//mmbuilder.nit:716 */
+  /* ./syntax//mmbuilder.nit:738 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___syntax_base___MMGlobalClass___check_visibility(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:717 */
+  /* ./syntax//mmbuilder.nit:739 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -4444,7 +4740,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:718 */
+    /* ./syntax//mmbuilder.nit:740 */
     REGB0 = TAG_Int(3);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_23) {
@@ -4470,29 +4766,29 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:719 */
+    /* ./syntax//mmbuilder.nit:741 */
     goto label22;
   }
-  /* ./syntax//mmbuilder.nit:722 */
+  /* ./syntax//mmbuilder.nit:744 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 722);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 744);
   }
   REGB1 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[0])(fra.me.REG[0]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
-    /* ./syntax//mmbuilder.nit:722 */
+    /* ./syntax//mmbuilder.nit:744 */
     REGB2 = REGB1;
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:723 */
+    /* ./syntax//mmbuilder.nit:745 */
     REGB2 = TAG_Int(5);
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_25) {
@@ -4507,7 +4803,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     fra.me.REG[4] = ATTR_syntax___mmbuilder___AClassdef____local_class(fra.me.REG[2]);
     REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 723);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 745);
     }
     REGB2 = CALL_metamodel___abstractmetamodel___MMLocalClass___arity(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(REGB2)(REGB2);
@@ -4537,7 +4833,7 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
     fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:727 */
+  /* ./syntax//mmbuilder.nit:749 */
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
   if (UNTAG_Bool(REGB2)) {
@@ -4550,60 +4846,60 @@ void syntax___mmbuilder___AStdClassdef___accept_class_verifier(val_t p0, val_t p
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* ./syntax//mmbuilder.nit:750 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_abstract(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:728 */
+    /* ./syntax//mmbuilder.nit:750 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_abstract(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:729 */
+    /* ./syntax//mmbuilder.nit:751 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:729 */
+    /* ./syntax//mmbuilder.nit:751 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_enum(fra.me.REG[0])(fra.me.REG[0]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     REGB2 = TAG_Bool(true);
   } else {
-    /* ./syntax//mmbuilder.nit:730 */
+    /* ./syntax//mmbuilder.nit:752 */
     REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[1])(fra.me.REG[1]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:730 */
+    /* ./syntax//mmbuilder.nit:752 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AStdClassdef___n_classkind(fra.me.REG[2])(fra.me.REG[2]);
     REGB2 = CALL_syntax___mmbuilder___AClasskind___is_extern(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./syntax//mmbuilder.nit:727 */
+    /* ./syntax//mmbuilder.nit:749 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
-  /* ./syntax//mmbuilder.nit:726 */
+  /* ./syntax//mmbuilder.nit:748 */
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:732 */
+    /* ./syntax//mmbuilder.nit:754 */
     REGB2 = TAG_Int(3);
     fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_28) {
@@ -4640,13 +4936,13 @@ val_t syntax___mmbuilder___AStdClassdef___visibility_level(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 736;
+  fra.me.line = 758;
   fra.me.meth = LOCATE_syntax___mmbuilder___AStdClassdef___visibility_level;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:738 */
+  /* ./syntax//mmbuilder.nit:760 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AStdClassdef___n_visibility(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
   goto label1;
@@ -4662,13 +4958,13 @@ val_t syntax___mmbuilder___AMainClassdef___name(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_syntax___mmbuilder;
-  fra.me.line = 743;
+  fra.me.line = 765;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMainClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:745 */
+  /* ./syntax//mmbuilder.nit:767 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Sys");
@@ -4696,13 +4992,13 @@ val_t syntax___mmbuilder___ATopClassdef___name(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_syntax___mmbuilder;
-  fra.me.line = 750;
+  fra.me.line = 772;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATopClassdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:752 */
+  /* ./syntax//mmbuilder.nit:774 */
   if (!once_value_1) {
     if (!once_value_2) {
       fra.me.REG[0] = BOX_NativeString("Object");
@@ -4729,7 +5025,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_builder(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___mmbuilder;
-  fra.me.line = 760;
+  fra.me.line = 782;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -4741,36 +5037,36 @@ void syntax___mmbuilder___AFormaldef___accept_class_builder(val_t p0, val_t p1){
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:760 */
+  /* ./syntax//mmbuilder.nit:782 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:762 */
+  /* ./syntax//mmbuilder.nit:784 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:763 */
+  /* ./syntax//mmbuilder.nit:785 */
   REGB0 = CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[5] = NEW_MMTypeFormalParameter_metamodel___genericity___MMTypeFormalParameter___init(fra.me.REG[4], REGB0, fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:764 */
+  /* ./syntax//mmbuilder.nit:786 */
   ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]) = fra.me.REG[5];
-  /* ./syntax//mmbuilder.nit:765 */
+  /* ./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:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:765 */
+  /* ./syntax//mmbuilder.nit:787 */
   CALL_syntax___mmbuilder___ClassBuilderVisitor___local_class_arity__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:766 */
+  /* ./syntax//mmbuilder.nit:788 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___genericity___MMLocalClass___register_formal(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:767 */
+  /* ./syntax//mmbuilder.nit:789 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___ClassBuilderVisitor___formals(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 767);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 789);
   }
   CALL_standard___collection___abstract_collection___Map_____braeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:768 */
+  /* ./syntax//mmbuilder.nit:790 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
@@ -4786,7 +5082,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         static val_t once_value_5; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 771;
+  fra.me.line = 793;
   fra.me.meth = LOCATE_syntax___mmbuilder___AFormaldef___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -4798,17 +5094,17 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:771 */
+  /* ./syntax//mmbuilder.nit:793 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:773 */
+  /* ./syntax//mmbuilder.nit:795 */
   CALL_SUPER_syntax___mmbuilder___AFormaldef___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:774 */
+  /* ./syntax//mmbuilder.nit:796 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:775 */
+  /* ./syntax//mmbuilder.nit:797 */
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalClass___intro(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:776 */
+  /* ./syntax//mmbuilder.nit:798 */
   REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -4816,7 +5112,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:777 */
+    /* ./syntax//mmbuilder.nit:799 */
     fra.me.REG[4] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4831,25 +5127,25 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:778 */
+      /* ./syntax//mmbuilder.nit:800 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
       fra.me.REG[5] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[5] = CALL_metamodel___static_type___MMType___as_nullable(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___mmbuilder, 778);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 800);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:780 */
+      /* ./syntax//mmbuilder.nit:802 */
       fra.me.REG[5] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 780);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 802);
       }
       fra.me.REG[5] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:781 */
+      /* ./syntax//mmbuilder.nit:803 */
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4865,27 +5161,27 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:782 */
+      /* ./syntax//mmbuilder.nit:804 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 782);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 804);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     }
   } else {
-    /* ./syntax//mmbuilder.nit:785 */
+    /* ./syntax//mmbuilder.nit:807 */
     fra.me.REG[5] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 785);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 807);
     }
     REGB0 = CALL_metamodel___genericity___MMTypeFormalParameter___position(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[0] = CALL_metamodel___genericity___MMLocalClass___get_formal(fra.me.REG[0])(fra.me.REG[0], REGB0);
     fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:786 */
+    /* ./syntax//mmbuilder.nit:808 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -4900,22 +5196,22 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:787 */
+      /* ./syntax//mmbuilder.nit:809 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(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___mmbuilder, 787);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 809);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:789 */
+      /* ./syntax//mmbuilder.nit:811 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AFormaldef___n_type(fra.me.REG[2])(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___mmbuilder, 789);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 811);
       }
       fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-      /* ./syntax//mmbuilder.nit:790 */
+      /* ./syntax//mmbuilder.nit:812 */
       REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -4931,18 +5227,18 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       if (UNTAG_Bool(REGB0)) {
         goto label1;
       }
-      /* ./syntax//mmbuilder.nit:791 */
+      /* ./syntax//mmbuilder.nit:813 */
       fra.me.REG[4] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 791);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 813);
       }
       CALL_metamodel___genericity___MMTypeFormalParameter___bound__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      /* ./syntax//mmbuilder.nit:792 */
+      /* ./syntax//mmbuilder.nit:814 */
       fra.me.REG[0] = ATTR_syntax___mmbuilder___AFormaldef____formal(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___mmbuilder, 792);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 814);
       }
       fra.me.REG[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[0],fra.me.REG[5]));
@@ -4953,7 +5249,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:793 */
+        /* ./syntax//mmbuilder.nit:815 */
         REGB0 = TAG_Int(7);
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_2) {
@@ -4979,7 +5275,7 @@ void syntax___mmbuilder___AFormaldef___accept_class_verifier(val_t p0, val_t p1)
         fra.me.REG[1] = ATTR_syntax___mmbuilder___AFormaldef____formal(fra.me.REG[2]);
         REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 793);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 815);
         }
         fra.me.REG[1] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
@@ -5018,13 +5314,13 @@ val_t syntax___mmbuilder___ASuperclass___ancestor(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 801;
+  fra.me.line = 823;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___ancestor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:801 */
+  /* ./syntax//mmbuilder.nit:823 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -5036,7 +5332,7 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 803;
+  fra.me.line = 825;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5046,15 +5342,15 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:803 */
+  /* ./syntax//mmbuilder.nit:825 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:805 */
+  /* ./syntax//mmbuilder.nit:827 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:806 */
+  /* ./syntax//mmbuilder.nit:828 */
   fra.me.REG[1] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_local_class(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:807 */
+  /* ./syntax//mmbuilder.nit:829 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -5070,11 +5366,11 @@ void syntax___mmbuilder___ASuperclass___accept_class_specialization_builder(val_
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:808 */
+  /* ./syntax//mmbuilder.nit:830 */
   fra.me.REG[1] = NEW_MMSrcAncestor_syntax___mmbuilder___MMSrcAncestor___init(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:809 */
+  /* ./syntax//mmbuilder.nit:831 */
   ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:810 */
+  /* ./syntax//mmbuilder.nit:832 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_metamodel___inheritance___MMLocalClass___add_direct_parent(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1]);
   label1: while(0);
@@ -5087,7 +5383,7 @@ void syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(val_t p0,
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 813;
+  fra.me.line = 835;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5097,27 +5393,27 @@ void syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(val_t p0,
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:813 */
+  /* ./syntax//mmbuilder.nit:835 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:815 */
+  /* ./syntax//mmbuilder.nit:837 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_ancestor_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:816 */
+  /* ./syntax//mmbuilder.nit:838 */
   fra.me.REG[1] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_unchecked_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 816);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 838);
   }
   CALL_metamodel___static_type___MMAncestor___stype__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:817 */
+  /* ./syntax//mmbuilder.nit:839 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___ASuperclass____ancestor(fra.me.REG[2]);
   fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[3] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 817);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 839);
   }
   CALL_metamodel___static_type___MMAncestor___inheriter__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5128,7 +5424,7 @@ void syntax___mmbuilder___ASuperclass___accept_class_verifier(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___mmbuilder;
-  fra.me.line = 820;
+  fra.me.line = 842;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASuperclass___accept_class_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5138,12 +5434,12 @@ void syntax___mmbuilder___ASuperclass___accept_class_verifier(val_t p0, val_t p1
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:820 */
+  /* ./syntax//mmbuilder.nit:842 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:822 */
+  /* ./syntax//mmbuilder.nit:844 */
   CALL_SUPER_syntax___mmbuilder___ASuperclass___accept_class_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:823 */
+  /* ./syntax//mmbuilder.nit:845 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ASuperclass___n_type(fra.me.REG[2])(fra.me.REG[2]);
   CALL_syntax___syntax_base___AType___check_conform(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   stack_frame_head = fra.me.prev;
@@ -5158,7 +5454,7 @@ void syntax___mmbuilder___APropdef___process_and_check(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_syntax___mmbuilder;
-  fra.me.line = 828;
+  fra.me.line = 850;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___process_and_check;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -5171,7 +5467,7 @@ void syntax___mmbuilder___APropdef___process_and_check(val_t p0, val_t p1, val_t
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:836 */
+  /* ./syntax//mmbuilder.nit:858 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
   REGB2 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[2]));
@@ -5181,10 +5477,10 @@ void syntax___mmbuilder___APropdef___process_and_check(val_t p0, val_t p1, val_t
     REGB2 = REGB3;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:837 */
+    /* ./syntax//mmbuilder.nit:859 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_intro(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   } else {
-    /* ./syntax//mmbuilder.nit:839 */
+    /* ./syntax//mmbuilder.nit:861 */
     CALL_syntax___mmbuilder___APropdef___do_and_check_redef(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1);
   }
   stack_frame_head = fra.me.prev;
@@ -5196,6 +5492,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   val_t REGB1;
   val_t REGB2;
   val_t REGB3;
+  val_t REGB4;
   val_t tmp;
     static val_t once_value_1; /* Once value */
     static val_t once_value_2; /* Once value */
@@ -5218,7 +5515,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         static val_t once_value_19; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 843;
+  fra.me.line = 865;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_intro;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -5234,29 +5531,34 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:846 */
+  /* ./syntax//mmbuilder.nit:868 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:847 */
+  /* ./syntax//mmbuilder.nit:869 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:848 */
+  /* ./syntax//mmbuilder.nit:870 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
   REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[5])(fra.me.REG[5]);
   REGB3 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-  /* ./syntax//mmbuilder.nit:848 */
+  /* ./syntax//mmbuilder.nit:870 */
   if (UNTAG_Bool(REGB3)) {
-    /* ./syntax//mmbuilder.nit:850 */
+    /* ./syntax//mmbuilder.nit:872 */
     REGB3 = TAG_Int(3);
     REGB1 = REGB3;
   }
-  /* ./syntax//mmbuilder.nit:852 */
+  /* ./syntax//mmbuilder.nit:874 */
   CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
-  /* ./syntax//mmbuilder.nit:853 */
+  /* ./syntax//mmbuilder.nit:875 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:854 */
+    /* ./syntax//mmbuilder.nit:876 */
     REGB0 = TAG_Int(5);
     fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -5294,13 +5596,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
   }
-  /* ./syntax//mmbuilder.nit:856 */
+  /* ./syntax//mmbuilder.nit:878 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_attribute(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:857 */
+    /* ./syntax//mmbuilder.nit:879 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:858 */
+      /* ./syntax//mmbuilder.nit:880 */
       REGB0 = TAG_Int(5);
       fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_4) {
@@ -5338,10 +5640,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
     } else {
-      /* ./syntax//mmbuilder.nit:859 */
+      /* ./syntax//mmbuilder.nit:881 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:860 */
+        /* ./syntax//mmbuilder.nit:882 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_7) {
@@ -5379,10 +5681,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
-        /* ./syntax//mmbuilder.nit:861 */
+        /* ./syntax//mmbuilder.nit:883 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:862 */
+          /* ./syntax//mmbuilder.nit:884 */
           REGB0 = TAG_Int(5);
           fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_10) {
@@ -5423,13 +5725,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       }
     }
   } else {
-    /* ./syntax//mmbuilder.nit:864 */
+    /* ./syntax//mmbuilder.nit:886 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:865 */
+      /* ./syntax//mmbuilder.nit:887 */
       REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:866 */
+        /* ./syntax//mmbuilder.nit:888 */
         REGB0 = TAG_Int(5);
         fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_13) {
@@ -5467,10 +5769,10 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
       } else {
-        /* ./syntax//mmbuilder.nit:867 */
+        /* ./syntax//mmbuilder.nit:889 */
         REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:868 */
+          /* ./syntax//mmbuilder.nit:890 */
           REGB0 = TAG_Int(5);
           fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_16) {
@@ -5511,7 +5813,7 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:873 */
+  /* ./syntax//mmbuilder.nit:895 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -5526,17 +5828,17 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:874 */
+    /* ./syntax//mmbuilder.nit:896 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:875 */
+      /* ./syntax//mmbuilder.nit:897 */
       fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:876 */
+      /* ./syntax//mmbuilder.nit:898 */
       CALL_syntax___mmbuilder___APropdef___inherit_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     }
-    /* ./syntax//mmbuilder.nit:878 */
+    /* ./syntax//mmbuilder.nit:900 */
     fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -5560,13 +5862,13 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
     }
     if (UNTAG_Bool(REGB0)) {
     } else {
-      /* ./syntax//mmbuilder.nit:880 */
+      /* ./syntax//mmbuilder.nit:902 */
       fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
       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)) {
-        /* ./syntax//mmbuilder.nit:881 */
+        /* ./syntax//mmbuilder.nit:903 */
         fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
@@ -5580,64 +5882,69 @@ void syntax___mmbuilder___APropdef___do_and_check_intro(val_t p0, val_t p1, val_
         fra.me.REG[0] = fra.me.REG[0];
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
       } else {
-        /* ./syntax//mmbuilder.nit:883 */
+        /* ./syntax//mmbuilder.nit:905 */
         fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
         fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
         fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
         fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[4]);
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        /* ./syntax//mmbuilder.nit:884 */
+        /* ./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:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            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:215 */
+          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:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../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, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:885 */
+            /* ./syntax//mmbuilder.nit:907 */
             fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
             REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 885);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 907);
             }
             fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
             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:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label20;
           }
         }
@@ -5658,7 +5965,7 @@ void syntax___mmbuilder___APropdef___inherit_signature(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_syntax___mmbuilder;
-  fra.me.line = 891;
+  fra.me.line = 913;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___inherit_signature;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -5677,49 +5984,54 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
-  /* ./syntax//mmbuilder.nit:893 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:895 */
+      /* ./syntax//mmbuilder.nit:917 */
       fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[6] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
       REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 895);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 917);
       }
       fra.me.REG[6] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
-      /* ./syntax//mmbuilder.nit:897 */
+      /* ./syntax//mmbuilder.nit:919 */
       REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
@@ -5733,114 +6045,119 @@ void syntax___mmbuilder___APropdef___inherit_signature(val_t p0, val_t p1, val_t
         }
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:898 */
+        /* ./syntax//mmbuilder.nit:920 */
         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:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./syntax//mmbuilder.nit:898 */
+        /* ./syntax//mmbuilder.nit:920 */
         REGB2 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
         REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
         if (UNTAG_Bool(REGB3)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB2 = TAG_Bool((REGB1)==(REGB2));
-          /* ./syntax//mmbuilder.nit:898 */
+          /* ./syntax//mmbuilder.nit:920 */
           REGB3 = REGB2;
         }
         REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
         if (UNTAG_Bool(REGB3)) {
-          /* ./syntax//mmbuilder.nit:899 */
+          /* ./syntax//mmbuilder.nit:921 */
           goto label1;
         }
-        /* ./syntax//mmbuilder.nit:901 */
+        /* ./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:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB3 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../lib/standard//collection//array.nit:270 */
         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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../lib/standard//collection//array.nit:24 */
           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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB1 = TAG_Bool(VAL_ISA(REGB2, 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:232 */
           REGB2 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB2)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB2 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB2)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB3)];
-            /* ./syntax//mmbuilder.nit:902 */
+            /* ./syntax//mmbuilder.nit:924 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             fra.me.REG[9] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[6])(fra.me.REG[6], REGB2);
-            /* ./syntax//mmbuilder.nit:903 */
+            /* ./syntax//mmbuilder.nit:925 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-            /* ./syntax//mmbuilder.nit:904 */
+            /* ./syntax//mmbuilder.nit:926 */
             REGB2 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[8])(fra.me.REG[8]);
             REGB1 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[6])(fra.me.REG[6]);
             REGB4 = TAG_Bool(IS_EQUAL_OO(REGB2,REGB1));
             if (UNTAG_Bool(REGB4)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ./../lib/standard//kernel.nit:227 */
               REGB1 = TAG_Bool((REGB2)==(REGB1));
-              /* ./syntax//mmbuilder.nit:904 */
+              /* ./syntax//mmbuilder.nit:926 */
               REGB4 = REGB1;
             }
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:905 */
+              /* ./syntax//mmbuilder.nit:927 */
               fra.me.REG[10] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[9]);
               fra.me.REG[9] = fra.me.REG[10];
             }
-            /* ./syntax//mmbuilder.nit:907 */
+            /* ./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:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB4 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB4 = TAG_Int(UNTAG_Int(REGB3)+UNTAG_Int(REGB4));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB3 = REGB4;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label2;
           }
         }
         label2: while(0);
-        /* ./syntax//mmbuilder.nit:910 */
+        /* ./syntax//mmbuilder.nit:932 */
         fra.me.REG[0] = fra.me.REG[6];
-        /* ./syntax//mmbuilder.nit:911 */
+        /* ./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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
@@ -5923,7 +6240,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     static val_t once_value_66; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 916;
+  fra.me.line = 938;
   fra.me.meth = LOCATE_syntax___mmbuilder___APropdef___do_and_check_redef;
   fra.me.has_broke = 0;
   fra.me.REG_size = 14;
@@ -5946,14 +6263,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
   fra.me.REG[2] = p2;
   REGB0 = p3;
   REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:919 */
+  /* ./syntax//mmbuilder.nit:941 */
   REGB2 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AInitPropdef, ID_parser___parser_nodes___AInitPropdef)) /*cast AInitPropdef*/;
-  /* ./syntax//mmbuilder.nit:920 */
+  /* ./syntax//mmbuilder.nit:942 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:922 */
+  /* ./syntax//mmbuilder.nit:944 */
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:923 */
+    /* ./syntax//mmbuilder.nit:945 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
@@ -5990,10 +6307,10 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:924 */
+    /* ./syntax//mmbuilder.nit:946 */
     goto label4;
   }
-  /* ./syntax//mmbuilder.nit:926 */
+  /* ./syntax//mmbuilder.nit:948 */
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -6002,7 +6319,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB0 = REGB3;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:927 */
+    /* ./syntax//mmbuilder.nit:949 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_5) {
@@ -6040,7 +6357,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   } else {
-    /* ./syntax//mmbuilder.nit:928 */
+    /* ./syntax//mmbuilder.nit:950 */
     REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
@@ -6049,7 +6366,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       REGB2 = REGB0;
     }
     if (UNTAG_Bool(REGB2)) {
-      /* ./syntax//mmbuilder.nit:929 */
+      /* ./syntax//mmbuilder.nit:951 */
       REGB2 = TAG_Int(5);
       fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
       if (!once_value_8) {
@@ -6088,49 +6405,54 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
     }
   }
-  /* ./syntax//mmbuilder.nit:932 */
+  /* ./syntax//mmbuilder.nit:954 */
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:934 */
+  /* ./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:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB2 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB0)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
-      /* ./syntax//mmbuilder.nit:935 */
+      /* ./syntax//mmbuilder.nit:957 */
       fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
       fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
-      /* ./syntax//mmbuilder.nit:936 */
+      /* ./syntax//mmbuilder.nit:958 */
       fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:937 */
+      /* ./syntax//mmbuilder.nit:959 */
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6146,16 +6468,16 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
       if (UNTAG_Bool(REGB0)) {
         goto label11;
       }
-      /* ./syntax//mmbuilder.nit:938 */
+      /* ./syntax//mmbuilder.nit:960 */
       fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[8] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[8])(fra.me.REG[8]);
       REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 938);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 960);
       }
       fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___adaptation_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       fra.me.REG[7] = fra.me.REG[8];
-      /* ./syntax//mmbuilder.nit:940 */
+      /* ./syntax//mmbuilder.nit:962 */
       REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
@@ -6169,33 +6491,33 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         }
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:942 */
+        /* ./syntax//mmbuilder.nit:964 */
         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:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:942 */
+        /* ./syntax//mmbuilder.nit:964 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 942);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 964);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
         REGB4 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB3));
         if (UNTAG_Bool(REGB4)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB3 = TAG_Bool((REGB0)==(REGB3));
-          /* ./syntax//mmbuilder.nit:942 */
+          /* ./syntax//mmbuilder.nit:964 */
           REGB4 = REGB3;
         }
         REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:943 */
+          /* ./syntax//mmbuilder.nit:965 */
           REGB4 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
           if (!once_value_12) {
@@ -6255,7 +6577,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(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[10]);
           REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 943);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 965);
           }
           REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB4)(REGB4);
@@ -6271,44 +6593,44 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(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[10]);
           fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
-          /* ./syntax//mmbuilder.nit:944 */
+          /* ./syntax//mmbuilder.nit:966 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:946 */
+        /* ./syntax//mmbuilder.nit:968 */
         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___closure_decls(fra.me.REG[8])(fra.me.REG[8]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:946 */
+        /* ./syntax//mmbuilder.nit:968 */
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 946);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 968);
         }
         fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[7])(fra.me.REG[7]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-        /* ./syntax//mmbuilder.nit:946 */
+        /* ./syntax//mmbuilder.nit:968 */
         REGB0 = TAG_Bool(IS_EQUAL_OO(REGB4,REGB3));
         if (UNTAG_Bool(REGB0)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB3 = TAG_Bool((REGB4)==(REGB3));
-          /* ./syntax//mmbuilder.nit:946 */
+          /* ./syntax//mmbuilder.nit:968 */
           REGB0 = REGB3;
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:947 */
+          /* ./syntax//mmbuilder.nit:969 */
           REGB0 = TAG_Int(11);
           fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_18) {
@@ -6368,7 +6690,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(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[10]);
           REGB0 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 947);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 969);
           }
           REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
           fra.me.REG[10] = CALL_standard___string___Object___to_s(REGB0)(REGB0);
@@ -6384,117 +6706,122 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(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[10]);
           fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
-          /* ./syntax//mmbuilder.nit:948 */
+          /* ./syntax//mmbuilder.nit:970 */
           goto label4;
         }
-        /* ./syntax//mmbuilder.nit:950 */
+        /* ./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:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
+        /* ./../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, 235);
+          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:236 */
+        /* ./../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:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
+          /* ./../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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
           REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[8]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB3));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB3)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[11] = ((Nit_NativeArray)fra.me.REG[10])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:951 */
+            /* ./syntax//mmbuilder.nit:973 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 951);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 973);
             }
             fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB3);
-            /* ./syntax//mmbuilder.nit:952 */
+            /* ./syntax//mmbuilder.nit:974 */
             CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
-            /* ./syntax//mmbuilder.nit:953 */
+            /* ./syntax//mmbuilder.nit:975 */
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[11])(fra.me.REG[11]);
             REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 953);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 975);
             }
             REGB4 = CALL_metamodel___vararg___MMSignature___vararg_rank(fra.me.REG[7])(fra.me.REG[7]);
             REGB5 = TAG_Bool(IS_EQUAL_OO(REGB3,REGB4));
             if (UNTAG_Bool(REGB5)) {
             } else {
-              /* ./../lib/standard//kernel.nit:210 */
+              /* ./../lib/standard//kernel.nit:227 */
               REGB4 = TAG_Bool((REGB3)==(REGB4));
-              /* ./syntax//mmbuilder.nit:953 */
+              /* ./syntax//mmbuilder.nit:975 */
               REGB5 = REGB4;
             }
             if (UNTAG_Bool(REGB5)) {
-              /* ./syntax//mmbuilder.nit:954 */
+              /* ./syntax//mmbuilder.nit:976 */
               fra.me.REG[13] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12]);
               fra.me.REG[12] = fra.me.REG[13];
             }
-            /* ./syntax//mmbuilder.nit:956 */
+            /* ./syntax//mmbuilder.nit:978 */
             fra.me.REG[11] = CALL_syntax___syntax_base___AParam___variable(fra.me.REG[11])(fra.me.REG[11]);
             CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[11])(fra.me.REG[11], fra.me.REG[12]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB5));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB0 = REGB5;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label24;
           }
         }
         label24: while(0);
-        /* ./syntax//mmbuilder.nit:958 */
+        /* ./syntax//mmbuilder.nit:980 */
         fra.me.REG[4] = fra.me.REG[7];
-        /* ./syntax//mmbuilder.nit:959 */
+        /* ./syntax//mmbuilder.nit:981 */
         CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
       }
-      /* ./syntax//mmbuilder.nit:963 */
+      /* ./syntax//mmbuilder.nit:985 */
       fra.me.REG[10] = CALL_syntax___syntax_base___AbsSyntaxVisitor___tc(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = CALL_mmloader___ToolContext___error_count(fra.me.REG[10])(fra.me.REG[10]);
-      /* ./syntax//mmbuilder.nit:971 */
+      /* ./syntax//mmbuilder.nit:993 */
       REGB5 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB5)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 971);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 993);
       }
       REGB5 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
       REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 971);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 993);
       }
       REGB4 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
       REGB3 = TAG_Bool(IS_EQUAL_OO(REGB5,REGB4));
       if (UNTAG_Bool(REGB3)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB4 = TAG_Bool((REGB5)==(REGB4));
-        /* ./syntax//mmbuilder.nit:971 */
+        /* ./syntax//mmbuilder.nit:993 */
         REGB3 = REGB4;
       }
       REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
       if (UNTAG_Bool(REGB3)) {
-        /* ./syntax//mmbuilder.nit:972 */
+        /* ./syntax//mmbuilder.nit:994 */
         REGB3 = TAG_Int(11);
         fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
         if (!once_value_25) {
@@ -6554,7 +6881,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
         REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 972);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 994);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[7])(fra.me.REG[7]);
         fra.me.REG[8] = CALL_standard___string___Object___to_s(REGB3)(REGB3);
@@ -6571,44 +6898,54 @@ 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[0], fra.me.REG[10]);
       } else {
-        /* ./syntax//mmbuilder.nit:973 */
+        /* ./syntax//mmbuilder.nit:995 */
         REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 973);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 995);
         }
         REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
         REGB4 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>UNTAG_Int(REGB4));
-        /* ./syntax//mmbuilder.nit:973 */
+        /* ./syntax//mmbuilder.nit:995 */
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:974 */
+          /* ./syntax//mmbuilder.nit:996 */
           REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast AMethPropdef*/;
           if (UNTAG_Bool(REGB4)) {
-            /* ./syntax//mmbuilder.nit:976 */
+            /* ./syntax//mmbuilder.nit:998 */
             REGB4 = TAG_Int(0);
             REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 976);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 998);
             }
             REGB3 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[4])(fra.me.REG[4]);
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             while(1) {
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB5 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB3));
-              /* ./../lib/standard//kernel.nit:335 */
+              /* ./../lib/standard//kernel.nit:352 */
               if (UNTAG_Bool(REGB5)) {
-               /* ./syntax//mmbuilder.nit:976 */
+               /* ./syntax//mmbuilder.nit:998 */
                REGB5 = REGB4;
-               /* ./syntax//mmbuilder.nit:977 */
+               /* ./syntax//mmbuilder.nit:999 */
                REGB6 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 977);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 999);
                }
                fra.me.REG[10] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB5);
                REGB6 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 977);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 999);
                }
                fra.me.REG[8] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB5);
                REGB6 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[10],fra.me.REG[8]));
@@ -6619,14 +6956,14 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                }
                REGB6 = TAG_Bool(!UNTAG_Bool(REGB6));
                if (UNTAG_Bool(REGB6)) {
-               /* ./syntax//mmbuilder.nit:978 */
+               /* ./syntax//mmbuilder.nit:1000 */
                fra.me.REG[8] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
                REGB6 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 978);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1000);
                }
                fra.me.REG[8] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[8])(fra.me.REG[8]);
-               fra.me.REG[8] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB5);
+               fra.me.REG[8] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[8])(fra.me.REG[8], REGB5);
                REGB6 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB6);
                if (!once_value_31) {
@@ -6640,7 +6977,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[12]);
                REGB6 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB6)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 978);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1000);
                }
                fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB5);
                fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
@@ -6680,33 +7017,33 @@ 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:337 */
+               /* ./../lib/standard//kernel.nit:354 */
                REGB5 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB5 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB5));
-               /* ./../lib/standard//kernel.nit:337 */
+               /* ./../lib/standard//kernel.nit:354 */
                REGB4 = REGB5;
               } else {
-               /* ./../lib/standard//kernel.nit:335 */
+               /* ./../lib/standard//kernel.nit:352 */
                goto label35;
               }
             }
             label35: while(0);
           } else {
-            /* ./syntax//mmbuilder.nit:981 */
+            /* ./syntax//mmbuilder.nit:1003 */
             REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast AAttrPropdef*/;
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:983 */
+              /* ./syntax//mmbuilder.nit:1005 */
               REGB4 = TAG_Int(0);
               REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 983);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1005);
               }
               fra.me.REG[10] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[4])(fra.me.REG[4], REGB4);
               REGB4 = TAG_Int(0);
               REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 983);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1005);
               }
               fra.me.REG[8] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB4);
               REGB4 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[10],fra.me.REG[8]));
@@ -6717,7 +7054,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               }
               REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
               if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:984 */
+               /* ./syntax//mmbuilder.nit:1006 */
                fra.me.REG[8] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
                REGB4 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
@@ -6733,7 +7070,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                REGB4 = TAG_Int(0);
                REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
                if (UNTAG_Bool(REGB3)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 984);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1006);
                }
                fra.me.REG[12] = CALL_metamodel___static_type___MMSignature_____bra(fra.me.REG[7])(fra.me.REG[7], REGB4);
                fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
@@ -6774,25 +7111,25 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[8], fra.me.REG[10]);
               }
             } else {
-              /* ./syntax//mmbuilder.nit:988 */
-              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 988);
+              /* ./syntax//mmbuilder.nit:1010 */
+              nit_abort("Aborted", NULL, LOCATE_syntax___mmbuilder, 1010);
             }
           }
         }
       }
-      /* ./syntax//mmbuilder.nit:992 */
+      /* ./syntax//mmbuilder.nit:1014 */
       REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 992);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1014);
       }
       fra.me.REG[10] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-      /* ./syntax//mmbuilder.nit:993 */
+      /* ./syntax//mmbuilder.nit:1015 */
       REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 993);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1015);
       }
       fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
-      /* ./syntax//mmbuilder.nit:994 */
+      /* ./syntax//mmbuilder.nit:1016 */
       REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
       if (UNTAG_Bool(REGB4)) {
       } else {
@@ -6824,7 +7161,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         REGB4 = REGB3;
       }
       if (UNTAG_Bool(REGB4)) {
-        /* ./syntax//mmbuilder.nit:995 */
+        /* ./syntax//mmbuilder.nit:1017 */
         REGB4 = TAG_Int(9);
         fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
         if (!once_value_40) {
@@ -6885,7 +7222,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
         fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[12]);
       } else {
-        /* ./syntax//mmbuilder.nit:996 */
+        /* ./syntax//mmbuilder.nit:1018 */
         REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
         if (UNTAG_Bool(REGB4)) {
         } else {
@@ -6917,7 +7254,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           REGB4 = REGB3;
         }
         if (UNTAG_Bool(REGB4)) {
-          /* ./syntax//mmbuilder.nit:997 */
+          /* ./syntax//mmbuilder.nit:1019 */
           REGB4 = TAG_Int(9);
           fra.me.REG[12] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
           if (!once_value_45) {
@@ -6978,7 +7315,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           fra.me.REG[12] = CALL_standard___string___Object___to_s(fra.me.REG[12])(fra.me.REG[12]);
           CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[12]);
         } else {
-          /* ./syntax//mmbuilder.nit:998 */
+          /* ./syntax//mmbuilder.nit:1020 */
           REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
           if (UNTAG_Bool(REGB4)) {
           } else {
@@ -7013,7 +7350,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           if (UNTAG_Bool(REGB4)) {
             REGB4 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 998);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1020);
             }
             REGB4 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[8]);
             REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
@@ -7022,37 +7359,37 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             REGB4 = REGB3;
           }
           if (UNTAG_Bool(REGB4)) {
-            /* ./syntax//mmbuilder.nit:999 */
+            /* ./syntax//mmbuilder.nit:1021 */
             fra.me.REG[12] = NIT_NULL;
-            /* ./syntax//mmbuilder.nit:1000 */
+            /* ./syntax//mmbuilder.nit:1022 */
             REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast AMethPropdef*/;
             if (UNTAG_Bool(REGB4)) {
-              /* ./syntax//mmbuilder.nit:1001 */
+              /* ./syntax//mmbuilder.nit:1023 */
               fra.me.REG[11] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[0])(fra.me.REG[0]);
               REGB4 = TAG_Bool(fra.me.REG[11]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1001);
+               nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1023);
               }
               fra.me.REG[11] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[11])(fra.me.REG[11]);
               fra.me.REG[12] = fra.me.REG[11];
             } else {
-              /* ./syntax//mmbuilder.nit:1002 */
+              /* ./syntax//mmbuilder.nit:1024 */
               REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast AAttrPropdef*/;
               if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:1003 */
+               /* ./syntax//mmbuilder.nit:1025 */
                fra.me.REG[11] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
                fra.me.REG[12] = fra.me.REG[11];
               } else {
-               /* ./syntax//mmbuilder.nit:1004 */
+               /* ./syntax//mmbuilder.nit:1026 */
                REGB4 = TAG_Bool(VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___ATypePropdef, ID_parser___parser_nodes___ATypePropdef)) /*cast ATypePropdef*/;
                if (UNTAG_Bool(REGB4)) {
-               /* ./syntax//mmbuilder.nit:1005 */
+               /* ./syntax//mmbuilder.nit:1027 */
                fra.me.REG[11] = CALL_parser___parser_nodes___ATypePropdef___n_type(fra.me.REG[0])(fra.me.REG[0]);
                fra.me.REG[12] = fra.me.REG[11];
                }
               }
             }
-            /* ./syntax//mmbuilder.nit:1007 */
+            /* ./syntax//mmbuilder.nit:1029 */
             REGB4 = TAG_Int(7);
             fra.me.REG[11] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
             if (!once_value_50) {
@@ -7101,10 +7438,10 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
             fra.me.REG[11] = CALL_standard___string___Object___to_s(fra.me.REG[11])(fra.me.REG[11]);
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[12], fra.me.REG[11]);
           } else {
-            /* ./syntax//mmbuilder.nit:1008 */
+            /* ./syntax//mmbuilder.nit:1030 */
             REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB4)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1008);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1030);
             }
             REGB4 = CALL_metamodel___static_type___MMSignature_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
             REGB4 = TAG_Bool(!UNTAG_Bool(REGB4));
@@ -7114,9 +7451,9 @@ 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:210 */
+               /* ./../lib/standard//kernel.nit:227 */
                REGB4 = TAG_Bool((REGB0)==(REGB4));
-               /* ./syntax//mmbuilder.nit:1008 */
+               /* ./syntax//mmbuilder.nit:1030 */
                REGB3 = REGB4;
               }
             } else {
@@ -7124,7 +7461,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               REGB3 = REGB4;
             }
             if (UNTAG_Bool(REGB3)) {
-              /* ./syntax//mmbuilder.nit:1010 */
+              /* ./syntax//mmbuilder.nit:1032 */
               REGB3 = TAG_Int(9);
               fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
               if (!once_value_54) {
@@ -7185,7 +7522,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
               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[0], fra.me.REG[7]);
             } else {
-              /* ./syntax//mmbuilder.nit:1011 */
+              /* ./syntax//mmbuilder.nit:1033 */
               REGB3 = TAG_Bool(fra.me.REG[10]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
               } else {
@@ -7242,7 +7579,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
                REGB3 = REGB4;
               }
               if (UNTAG_Bool(REGB3)) {
-               /* ./syntax//mmbuilder.nit:1013 */
+               /* ./syntax//mmbuilder.nit:1035 */
                REGB3 = TAG_Int(7);
                fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
                if (!once_value_59) {
@@ -7295,27 +7632,27 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
           }
         }
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB3 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = REGB3;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label63;
     }
   }
   label63: while(0);
   label11: while(0);
-  /* ./syntax//mmbuilder.nit:1017 */
+  /* ./syntax//mmbuilder.nit:1039 */
   REGB2 = TAG_Int(1);
   REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
   if (UNTAG_Bool(REGB3)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
-    /* ./syntax//mmbuilder.nit:1017 */
+    /* ./syntax//mmbuilder.nit:1039 */
     REGB3 = REGB2;
   }
   REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
@@ -7324,9 +7661,9 @@ 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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB3)==(REGB1));
-      /* ./syntax//mmbuilder.nit:1017 */
+      /* ./syntax//mmbuilder.nit:1039 */
       REGB2 = REGB1;
     }
     REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
@@ -7335,7 +7672,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:1018 */
+    /* ./syntax//mmbuilder.nit:1040 */
     REGB2 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
     if (!once_value_64) {
@@ -7373,7 +7710,7 @@ void syntax___mmbuilder___APropdef___do_and_check_redef(val_t p0, val_t p1, val_
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1020 */
+  /* ./syntax//mmbuilder.nit:1042 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
   REGB2 = TAG_Bool(true);
   CALL_syntax___syntax_base___MMGlobalProperty___check_visibility(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[0], fra.me.REG[4], REGB2);
@@ -7386,13 +7723,13 @@ val_t syntax___mmbuilder___AAttrPropdef___readmethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1025;
+  fra.me.line = 1047;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___readmethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1025 */
+  /* ./syntax//mmbuilder.nit:1047 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -7402,40 +7739,42 @@ val_t syntax___mmbuilder___AAttrPropdef___writemethod(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1026;
+  fra.me.line = 1048;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___writemethod;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1026 */
+  /* ./syntax//mmbuilder.nit:1048 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
 val_t syntax___mmbuilder___AAttrPropdef___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 1028;
+  fra.me.line = 1050;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1028 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1050 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1028);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1050);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
@@ -7448,7 +7787,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       static val_t once_value_3; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1030;
+  fra.me.line = 1052;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -7460,12 +7799,12 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1030 */
+  /* ./syntax//mmbuilder.nit:1052 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1032 */
+  /* ./syntax//mmbuilder.nit:1054 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1034 */
+  /* ./syntax//mmbuilder.nit:1056 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7481,15 +7820,15 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1035 */
+    /* ./syntax//mmbuilder.nit:1057 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1035);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1057);
     }
     fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
   } else {
-    /* ./syntax//mmbuilder.nit:1037 */
+    /* ./syntax//mmbuilder.nit:1059 */
     if (!once_value_1) {
       fra.me.REG[0] = BOX_NativeString("@");
       REGB0 = TAG_Int(1);
@@ -7501,23 +7840,23 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1037);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1059);
     }
     fra.me.REG[4] = CALL_parser___lexer___Token___text(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___string___String_____plus(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
     fra.me.REG[1] = fra.me.REG[4];
   }
-  /* ./syntax//mmbuilder.nit:1039 */
+  /* ./syntax//mmbuilder.nit:1061 */
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1040 */
+  /* ./syntax//mmbuilder.nit:1062 */
   fra.me.REG[0] = NEW_MMSrcAttribute_syntax___syntax_base___MMSrcAttribute___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1041 */
+  /* ./syntax//mmbuilder.nit:1063 */
   ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1042 */
+  /* ./syntax//mmbuilder.nit:1064 */
   fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1044 */
+  /* ./syntax//mmbuilder.nit:1066 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7551,7 +7890,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1045 */
+    /* ./syntax//mmbuilder.nit:1067 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -7567,11 +7906,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1046 */
+      /* ./syntax//mmbuilder.nit:1068 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(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___mmbuilder, 1046);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1068);
       }
       fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Int(1);
@@ -7579,24 +7918,24 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     } else {
-      /* ./syntax//mmbuilder.nit:1048 */
+      /* ./syntax//mmbuilder.nit:1070 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(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___mmbuilder, 1048);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1070);
       }
       fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     }
-    /* ./syntax//mmbuilder.nit:1050 */
+    /* ./syntax//mmbuilder.nit:1072 */
     fra.me.REG[0] = NEW_MMReadImplementationMethod_syntax___syntax_base___MMReadImplementationMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1051 */
+    /* ./syntax//mmbuilder.nit:1073 */
     ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]) = fra.me.REG[0];
-    /* ./syntax//mmbuilder.nit:1052 */
+    /* ./syntax//mmbuilder.nit:1074 */
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
   }
-  /* ./syntax//mmbuilder.nit:1054 */
+  /* ./syntax//mmbuilder.nit:1076 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7630,7 +7969,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1055 */
+    /* ./syntax//mmbuilder.nit:1077 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -7646,11 +7985,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1056 */
+      /* ./syntax//mmbuilder.nit:1078 */
       fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(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___mmbuilder, 1056);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1078);
       }
       fra.me.REG[0] = CALL_parser___lexer___Token___text(fra.me.REG[0])(fra.me.REG[0]);
       REGB0 = TAG_Int(1);
@@ -7667,11 +8006,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[5] = CALL_standard___symbol___String___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
       fra.me.REG[1] = fra.me.REG[5];
     } else {
-      /* ./syntax//mmbuilder.nit:1058 */
+      /* ./syntax//mmbuilder.nit:1080 */
       fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id2(fra.me.REG[2])(fra.me.REG[2]);
       REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1058);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1080);
       }
       fra.me.REG[5] = CALL_parser___lexer___Token___text(fra.me.REG[5])(fra.me.REG[5]);
       if (!once_value_3) {
@@ -7686,11 +8025,11 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
       fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
       fra.me.REG[1] = fra.me.REG[0];
     }
-    /* ./syntax//mmbuilder.nit:1060 */
+    /* ./syntax//mmbuilder.nit:1082 */
     fra.me.REG[4] = NEW_MMWriteImplementationMethod_syntax___syntax_base___MMWriteImplementationMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1061 */
+    /* ./syntax//mmbuilder.nit:1083 */
     ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]) = fra.me.REG[4];
-    /* ./syntax//mmbuilder.nit:1062 */
+    /* ./syntax//mmbuilder.nit:1084 */
     fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   }
@@ -7698,7 +8037,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_builder(val_t p0, val_t
   return;
 }
 void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -7711,24 +8050,25 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       static val_t once_value_6; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1066;
+  fra.me.line = 1088;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_property_verifier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1066 */
+  /* ./syntax//mmbuilder.nit:1088 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1068 */
+  /* ./syntax//mmbuilder.nit:1090 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1070 */
+  /* ./syntax//mmbuilder.nit:1092 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -7744,14 +8084,14 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1071 */
+    /* ./syntax//mmbuilder.nit:1093 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1071);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1093);
     }
     fra.me.REG[1] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:1072 */
+    /* ./syntax//mmbuilder.nit:1094 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -7770,86 +8110,86 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       goto label1;
     }
   } else {
-    /* ./syntax//mmbuilder.nit:1074 */
+    /* ./syntax//mmbuilder.nit:1096 */
     REGB0 = TAG_Int(5);
-    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
-      fra.me.REG[4] = BOX_NativeString("Not yet implemented: Attribute definition ");
+      fra.me.REG[5] = BOX_NativeString("Not yet implemented: Attribute definition ");
       REGB0 = TAG_Int(42);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_2 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_2 = fra.me.REG[5];
       register_static_object(&once_value_2);
-    } else fra.me.REG[4] = once_value_2;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
-    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[0])(fra.me.REG[0], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_2;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_3) {
-      fra.me.REG[4] = BOX_NativeString("::");
+      fra.me.REG[5] = BOX_NativeString("::");
       REGB0 = TAG_Int(2);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-      once_value_3 = fra.me.REG[4];
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+      once_value_3 = fra.me.REG[5];
       register_static_object(&once_value_3);
-    } else fra.me.REG[4] = once_value_3;
-    fra.me.REG[4] = fra.me.REG[4];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-    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[0])(fra.me.REG[0], fra.me.REG[4]);
+    } else fra.me.REG[5] = once_value_3;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[5] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
     if (!once_value_4) {
-      fra.me.REG[4] = BOX_NativeString(" requires an explicit type.");
+      fra.me.REG[5] = BOX_NativeString(" requires an explicit type.");
       REGB0 = TAG_Int(27);
-      fra.me.REG[4] = NEW_String_standard___string___String___with_native(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[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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[0]);
-    /* ./syntax//mmbuilder.nit:1075 */
+      fra.me.REG[5] = NEW_String_standard___string___String___with_native(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;
+    fra.me.REG[5] = fra.me.REG[5];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[4]);
+    /* ./syntax//mmbuilder.nit:1097 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1078 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1079 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
-  fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
-  fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[4], fra.me.REG[1], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1080 */
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1081 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1082 */
-  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1100 */
+  fra.me.REG[4] = CALL_syntax___syntax_base___AAttrPropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//mmbuilder.nit:1101 */
+  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  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___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
+  fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], fra.me.REG[1], fra.me.REG[6]);
+  /* ./syntax//mmbuilder.nit:1102 */
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+  /* ./syntax//mmbuilder.nit:1103 */
+  fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[5])(fra.me.REG[5]);
+  /* ./syntax//mmbuilder.nit:1104 */
+  fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB1 = REGB2;
     }
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
         REGB1 = REGB2;
       }
     }
@@ -7858,18 +8198,18 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     REGB2 = TAG_Bool(false);
     REGB1 = REGB2;
   }
-  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1083 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
+  /* ./syntax//mmbuilder.nit:1105 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -7877,62 +8217,62 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       } else {
-        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB2 = REGB3;
       }
     }
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1084 */
-    fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1106 */
+    fra.me.REG[4] = ATTR_syntax___mmbuilder___AAttrPropdef____readmethod(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1084);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1106);
     }
-    /* ./syntax//mmbuilder.nit:1085 */
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
-    /* ./syntax//mmbuilder.nit:1086 */
-    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1107 */
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    /* ./syntax//mmbuilder.nit:1108 */
+    fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_readable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1086);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1108);
       }
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[5])(fra.me.REG[5]);
-      REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -7944,30 +8284,30 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(true);
     } else {
-      fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-      REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
       } else {
-        REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(false);
           REGB2 = REGB3;
         } else {
-          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+          REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB2 = REGB3;
         }
       }
       if (UNTAG_Bool(REGB2)) {
-        fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
-        REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
         } else {
-          REGB3 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+          REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB3)) {
             REGB3 = TAG_Bool(false);
             REGB2 = REGB3;
           } else {
-            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+            REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
             REGB2 = REGB3;
           }
         }
@@ -7978,26 +8318,26 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       }
       REGB1 = REGB2;
     }
-    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1087 */
-    fra.me.REG[5] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
+    /* ./syntax//mmbuilder.nit:1109 */
+    fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1087);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1109);
     }
-    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3], fra.me.REG[0]);
+    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1089 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1111 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
@@ -8005,79 +8345,79 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
   if (UNTAG_Bool(REGB1)) {
     REGB1 = TAG_Bool(true);
   } else {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
     } else {
-      REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB3)) {
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       } else {
-        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+        REGB3 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB2 = REGB3;
       }
     }
     REGB1 = REGB2;
   }
   if (UNTAG_Bool(REGB1)) {
-    /* ./syntax//mmbuilder.nit:1090 */
-    fra.me.REG[0] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1112 */
+    fra.me.REG[4] = ATTR_syntax___mmbuilder___AAttrPropdef____writemethod(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1090);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1112);
     }
-    /* ./syntax//mmbuilder.nit:1091 */
+    /* ./syntax//mmbuilder.nit:1113 */
     REGB1 = TAG_Int(0);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
     if (!once_value_5) {
       if (!once_value_6) {
-        fra.me.REG[4] = BOX_NativeString("value");
+        fra.me.REG[6] = BOX_NativeString("value");
         REGB1 = TAG_Int(5);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_6 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_6 = fra.me.REG[6];
         register_static_object(&once_value_6);
-      } else fra.me.REG[4] = once_value_6;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_5 = fra.me.REG[4];
+      } else fra.me.REG[6] = once_value_6;
+      fra.me.REG[6] = fra.me.REG[6];
+      fra.me.REG[6] = CALL_standard___symbol___String___to_symbol(fra.me.REG[6])(fra.me.REG[6]);
+      once_value_5 = fra.me.REG[6];
       register_static_object(&once_value_5);
-    } else fra.me.REG[4] = once_value_5;
-    fra.me.REG[4] = fra.me.REG[4];
-    fra.me.REG[4] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[1], fra.me.REG[4]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
-    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[5]);
-    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], NIT_NULL, fra.me.REG[4]);
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-    /* ./syntax//mmbuilder.nit:1093 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    } else fra.me.REG[6] = once_value_5;
+    fra.me.REG[6] = fra.me.REG[6];
+    fra.me.REG[6] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[1], fra.me.REG[6]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+    fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_items(fra.me.REG[0]);
+    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___static_type___MMLocalClass___get_type(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[6] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[6]);
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+    /* ./syntax//mmbuilder.nit:1115 */
+    fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:1094 */
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./syntax//mmbuilder.nit:1116 */
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -8085,51 +8425,51 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
         REGB1 = TAG_Int(3);
         REGB0 = REGB1;
       } else {
-        fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1094);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1116);
         }
-        fra.me.REG[4] = CALL_parser___parser_nodes___AAble___n_visibility(fra.me.REG[4])(fra.me.REG[4]);
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_visibility(fra.me.REG[6])(fra.me.REG[6]);
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1094);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1116);
         }
-        REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
+        REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[6])(fra.me.REG[6]);
         REGB0 = REGB1;
       }
     }
-    /* ./syntax//mmbuilder.nit:1096 */
-    fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1118 */
+    fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(false);
         REGB1 = REGB2;
       } else {
-        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+        REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
         REGB1 = REGB2;
       }
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAttrPropdef___n_writable(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1096);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1118);
       }
-      fra.me.REG[4] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[4])(fra.me.REG[4]);
-      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      fra.me.REG[6] = CALL_parser___parser_nodes___AAble___n_kwredef(fra.me.REG[6])(fra.me.REG[6]);
+      REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Bool(false);
           REGB1 = REGB2;
         } else {
-          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
           REGB1 = REGB2;
         }
       }
@@ -8138,14 +8478,14 @@ void syntax___mmbuilder___AAttrPropdef___accept_property_verifier(val_t p0, val_
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     }
-    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB1, REGB0);
-    /* ./syntax//mmbuilder.nit:1097 */
+    CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB1, REGB0);
+    /* ./syntax//mmbuilder.nit:1119 */
     fra.me.REG[2] = CALL_parser___parser_nodes___AAttrPropdef___n_type(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___mmbuilder, 1097);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1119);
     }
-    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
+    CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
   }
   label1: while(0);
   stack_frame_head = fra.me.prev;
@@ -8156,7 +8496,7 @@ void syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1101;
+  fra.me.line = 1123;
   fra.me.meth = LOCATE_syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -8166,15 +8506,15 @@ void syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1101 */
+  /* ./syntax//mmbuilder.nit:1123 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1103 */
+  /* ./syntax//mmbuilder.nit:1125 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___AAttrPropdef____prop(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1104 */
+  /* ./syntax//mmbuilder.nit:1126 */
   CALL_SUPER_syntax___mmbuilder___AAttrPropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1105 */
+  /* ./syntax//mmbuilder.nit:1127 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -8184,40 +8524,42 @@ val_t syntax___mmbuilder___AMethPropdef___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1110;
+  fra.me.line = 1132;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1110 */
+  /* ./syntax//mmbuilder.nit:1132 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethPropdef____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
 }
 val_t syntax___mmbuilder___AMethPropdef___method(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 1114;
+  fra.me.line = 1136;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___method;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1114 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1136 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1114);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1136);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -8235,7 +8577,7 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
           static val_t once_value_8; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1116;
+  fra.me.line = 1138;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -8246,12 +8588,12 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1116 */
+  /* ./syntax//mmbuilder.nit:1138 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1118 */
+  /* ./syntax//mmbuilder.nit:1140 */
   CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1120 */
+  /* ./syntax//mmbuilder.nit:1142 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -8266,10 +8608,10 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1121 */
+    /* ./syntax//mmbuilder.nit:1143 */
     REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_parser___parser_nodes___AInitPropdef, ID_parser___parser_nodes___AInitPropdef)) /*cast AInitPropdef*/;
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1122 */
+      /* ./syntax//mmbuilder.nit:1144 */
       if (!once_value_1) {
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("init");
@@ -8285,101 +8627,101 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
       } else fra.me.REG[1] = once_value_1;
       fra.me.REG[1] = fra.me.REG[1];
     } else {
-      /* ./syntax//mmbuilder.nit:1124 */
+      /* ./syntax//mmbuilder.nit:1146 */
       if (!once_value_3) {
         if (!once_value_4) {
-          fra.me.REG[0] = BOX_NativeString("main");
+          fra.me.REG[4] = BOX_NativeString("main");
           REGB0 = TAG_Int(4);
-          fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
-          once_value_4 = fra.me.REG[0];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          once_value_4 = fra.me.REG[4];
           register_static_object(&once_value_4);
-        } else fra.me.REG[0] = once_value_4;
-        fra.me.REG[0] = fra.me.REG[0];
-        fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
-        once_value_3 = fra.me.REG[0];
+        } else fra.me.REG[4] = once_value_4;
+        fra.me.REG[4] = fra.me.REG[4];
+        fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+        once_value_3 = fra.me.REG[4];
         register_static_object(&once_value_3);
-      } else fra.me.REG[0] = once_value_3;
-      fra.me.REG[0] = fra.me.REG[0];
-      fra.me.REG[1] = fra.me.REG[0];
+      } else fra.me.REG[4] = once_value_3;
+      fra.me.REG[4] = fra.me.REG[4];
+      fra.me.REG[1] = fra.me.REG[4];
     }
   } else {
-    /* ./syntax//mmbuilder.nit:1127 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1149 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1127);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1149);
     }
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1127);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1149);
     }
-    fra.me.REG[1] = fra.me.REG[0];
-    /* ./syntax//mmbuilder.nit:1129 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[1] = fra.me.REG[4];
+    /* ./syntax//mmbuilder.nit:1151 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_methid(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1129);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1151);
     }
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[4])(fra.me.REG[4]);
     if (!once_value_5) {
       if (!once_value_6) {
-        fra.me.REG[4] = BOX_NativeString("-");
+        fra.me.REG[0] = BOX_NativeString("-");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-        once_value_6 = fra.me.REG[4];
+        fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB0);
+        once_value_6 = fra.me.REG[0];
         register_static_object(&once_value_6);
-      } else fra.me.REG[4] = once_value_6;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_5 = fra.me.REG[4];
+      } else fra.me.REG[0] = once_value_6;
+      fra.me.REG[0] = fra.me.REG[0];
+      fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
+      once_value_5 = fra.me.REG[0];
       register_static_object(&once_value_5);
-    } else fra.me.REG[4] = once_value_5;
-    fra.me.REG[4] = fra.me.REG[4];
-    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[0]));
+    } else fra.me.REG[0] = once_value_5;
+    fra.me.REG[0] = fra.me.REG[0];
+    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
         REGB0 = REGB1;
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1130 */
-      fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./syntax//mmbuilder.nit:1131 */
-      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./syntax//mmbuilder.nit:1152 */
+      fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+      /* ./syntax//mmbuilder.nit:1153 */
+      REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+        REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
-          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1131);
+          nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1153);
         }
-        fra.me.REG[4] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[4])(fra.me.REG[4]);
-        REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
+        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:210 */
+          /* ./../lib/standard//kernel.nit:227 */
           REGB1 = TAG_Bool((REGB0)==(REGB1));
-          /* ./syntax//mmbuilder.nit:1131 */
+          /* ./syntax//mmbuilder.nit:1153 */
           REGB2 = REGB1;
         }
       } else {
@@ -8387,35 +8729,35 @@ void syntax___mmbuilder___AMethPropdef___accept_property_builder(val_t p0, val_t
         REGB2 = REGB1;
       }
       if (UNTAG_Bool(REGB2)) {
-        /* ./syntax//mmbuilder.nit:1132 */
+        /* ./syntax//mmbuilder.nit:1154 */
         if (!once_value_7) {
           if (!once_value_8) {
-            fra.me.REG[4] = BOX_NativeString("unary -");
+            fra.me.REG[0] = BOX_NativeString("unary -");
             REGB2 = TAG_Int(7);
-            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
-            once_value_8 = fra.me.REG[4];
+            fra.me.REG[0] = NEW_String_standard___string___String___with_native(fra.me.REG[0], REGB2);
+            once_value_8 = fra.me.REG[0];
             register_static_object(&once_value_8);
-          } else fra.me.REG[4] = once_value_8;
-          fra.me.REG[4] = fra.me.REG[4];
-          fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-          once_value_7 = fra.me.REG[4];
+          } else fra.me.REG[0] = once_value_8;
+          fra.me.REG[0] = fra.me.REG[0];
+          fra.me.REG[0] = CALL_standard___symbol___String___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
+          once_value_7 = fra.me.REG[0];
           register_static_object(&once_value_7);
-        } else fra.me.REG[4] = once_value_7;
-        fra.me.REG[4] = fra.me.REG[4];
-        fra.me.REG[1] = fra.me.REG[4];
+        } else fra.me.REG[0] = once_value_7;
+        fra.me.REG[0] = fra.me.REG[0];
+        fra.me.REG[1] = fra.me.REG[0];
       }
     }
   }
-  /* ./syntax//mmbuilder.nit:1136 */
+  /* ./syntax//mmbuilder.nit:1158 */
   ATTR_syntax___mmbuilder___AMethPropdef____name(fra.me.REG[2]) = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1137 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[4] = NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1138 */
-  ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]) = fra.me.REG[4];
-  /* ./syntax//mmbuilder.nit:1139 */
+  /* ./syntax//mmbuilder.nit:1159 */
+  fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[0] = NEW_MMMethSrcMethod_syntax___syntax_base___MMMethSrcMethod___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+  /* ./syntax//mmbuilder.nit:1160 */
+  ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]) = fra.me.REG[0];
+  /* ./syntax//mmbuilder.nit:1161 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4]);
+  CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -8424,10 +8766,11 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   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_syntax___mmbuilder;
-  fra.me.line = 1142;
+  fra.me.line = 1164;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -8438,21 +8781,21 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1142 */
+  /* ./syntax//mmbuilder.nit:1164 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1144 */
+  /* ./syntax//mmbuilder.nit:1166 */
   fra.me.REG[4] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1145 */
+  /* ./syntax//mmbuilder.nit:1167 */
   CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1147 */
+  /* ./syntax//mmbuilder.nit:1169 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1149 */
+  /* ./syntax//mmbuilder.nit:1171 */
   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___signature(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -8469,61 +8812,66 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
   }
   if (UNTAG_Bool(REGB0)) {
   } else {
-    /* ./syntax//mmbuilder.nit:1152 */
+    /* ./syntax//mmbuilder.nit:1174 */
     fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+    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___signature(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1152);
+      nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1174);
     }
-    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+    CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1154 */
+  /* ./syntax//mmbuilder.nit:1176 */
   REGB0 = TAG_Int(1);
-  /* ./syntax//mmbuilder.nit:1155 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-  REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1177 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Bool(false);
       REGB1 = REGB2;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB2;
     }
   }
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(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___mmbuilder, 1155);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1177);
     }
-    REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
+    REGB1 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   } else {
-    /* ./syntax//mmbuilder.nit:1155 */
+    /* ./syntax//mmbuilder.nit:1177 */
     REGB1 = TAG_Bool(false);
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
-    /* ./syntax//mmbuilder.nit:1156 */
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+    /* ./syntax//mmbuilder.nit:1178 */
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB2)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1156);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1178);
     }
-    REGB2 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[0])(fra.me.REG[0]);
+    REGB2 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
     REGB0 = REGB2;
   }
-  /* ./syntax//mmbuilder.nit:1158 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+  /* ./syntax//mmbuilder.nit:1180 */
+  fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_parser___parser_nodes___AMethPropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB2 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB2)) {
@@ -8538,958 +8886,198 @@ void syntax___mmbuilder___AMethPropdef___accept_property_verifier(val_t p0, val_
     }
   }
   REGB2 = TAG_Bool(!UNTAG_Bool(REGB2));
-  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0], REGB2, REGB0);
-  /* ./syntax//mmbuilder.nit:1159 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
-    if (UNTAG_Bool(REGB2)) {
-      REGB2 = TAG_Bool(false);
-      REGB0 = REGB2;
-    } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
-      REGB0 = REGB2;
-    }
-  }
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[0] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(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___mmbuilder, 1159);
-    }
-    CALL_syntax___mmbuilder___ASignature___check_visibility(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3], fra.me.REG[2]);
-  }
-  label1: while(0);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1162;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1162 */
-  fra.me.REG[2] = fra.me.REG[0];
-  fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1164 */
-  fra.me.REG[2] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]);
-  CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1165 */
-  CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1166 */
-  CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
-  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_syntax___mmbuilder;
-  fra.me.line = 1171;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AMainMethPropdef___process_and_check;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  fra.me.REG[2] = p2;
-  REGB0 = p3;
-  REGB1 = p4;
-  /* ./syntax//mmbuilder.nit:1173 */
-  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
-  /* ./syntax//mmbuilder.nit:1174 */
-  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
-  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[1] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[1]);
-  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-void syntax___mmbuilder___AExternPropdef___accept_property_verifier(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 REGB2;
-  val_t tmp;
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1180;
-  fra.me.meth = LOCATE_syntax___mmbuilder___AExternPropdef___accept_property_verifier;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1180 */
-  fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1182 */
-  CALL_SUPER_syntax___mmbuilder___AExternPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1184 */
-  fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
-  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-  if (UNTAG_Bool(REGB0)) {
-  } else {
-    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB1)) {
-      REGB1 = TAG_Bool(false);
-      REGB0 = REGB1;
-    } else {
-      REGB1 = CALL_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)) {
-    /* ./syntax//mmbuilder.nit:1185 */
-    fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
-    if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1185);
-    }
-    fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1186 */
-    REGB0 = TAG_Int(1);
-    /* ./../lib/standard//collection//array.nit:23 */
-    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, 23);
-    }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./syntax//mmbuilder.nit:1186 */
-    REGB2 = TAG_Int(2);
-    /* ./../lib/standard//kernel.nit:220 */
-    REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
-    /* ./syntax//mmbuilder.nit:1186 */
-    fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
-    fra.me.REG[1] = fra.me.REG[0];
-  } else {
-    /* ./syntax//mmbuilder.nit:1188 */
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    fra.me.REG[0] = CALL_syntax___mmbuilder___MMMethod___default_extern_name(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[1] = fra.me.REG[0];
-  }
-  /* ./syntax//mmbuilder.nit:1190 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_syntax___syntax_base___MMMethSrcMethod___extern_name__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
-  stack_frame_head = fra.me.prev;
-  return;
-}
-val_t syntax___mmbuilder___MMMethod___default_extern_name(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_syntax___mmbuilder;
-  fra.me.line = 1195;
-  fra.me.meth = LOCATE_syntax___mmbuilder___MMMethod___default_extern_name;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1197 */
-  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(0);
-    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[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  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);
-    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];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
-  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];
-}
-val_t syntax___mmbuilder___MMMethod___friendly_extern_name(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
-  val_t REGB0;
-  val_t REGB1;
-  val_t REGB2;
-  val_t tmp;
-    static val_t once_value_1; /* Once value */
-      static val_t once_value_2; /* Once value */
-      static val_t once_value_3; /* Once value */
-        static val_t once_value_4; /* Once value */
-        static val_t once_value_5; /* Once value */
-          static val_t once_value_6; /* Once value */
-          static val_t once_value_7; /* Once value */
-            static val_t once_value_8; /* Once value */
-            static val_t once_value_9; /* Once value */
-              static val_t once_value_10; /* Once value */
-              static val_t once_value_11; /* Once value */
-               static val_t once_value_12; /* Once value */
-               static val_t once_value_13; /* Once value */
-               static val_t once_value_14; /* Once value */
-               static val_t once_value_15; /* Once value */
-               static val_t once_value_16; /* Once value */
-               static val_t once_value_17; /* Once value */
-               static val_t once_value_18; /* Once value */
-               static val_t once_value_19; /* Once value */
-               static val_t once_value_20; /* Once value */
-               static val_t once_value_21; /* Once value */
-               static val_t once_value_22; /* Once value */
-               static val_t once_value_23; /* Once value */
-               static val_t once_value_24; /* Once value */
-               static val_t once_value_25; /* Once value */
-               static val_t once_value_26; /* Once value */
-               static val_t once_value_27; /* Once value */
-               static val_t once_value_28; /* Once value */
-               static val_t once_value_29; /* Once value */
-               static val_t once_value_30; /* Once value */
-               static val_t once_value_31; /* Once value */
-               static val_t once_value_32; /* Once value */
-               static val_t once_value_33; /* Once value */
-               static val_t once_value_34; /* Once value */
-    static val_t once_value_35; /* Once value */
-    static val_t once_value_36; /* Once value */
-    static val_t once_value_37; /* Once value */
-    static val_t once_value_39; /* Once value */
-      static val_t once_value_40; /* Once value */
-      static val_t once_value_41; /* Once value */
-      static val_t once_value_42; /* Once value */
-      static val_t once_value_43; /* Once value */
-      static val_t once_value_44; /* Once value */
-      static val_t once_value_45; /* Once value */
-  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
-  fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1200;
-  fra.me.meth = LOCATE_syntax___mmbuilder___MMMethod___friendly_extern_name;
-  fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
-  fra.me.REG[0] = NIT_NULL;
-  fra.me.REG[1] = NIT_NULL;
-  fra.me.REG[2] = NIT_NULL;
-  fra.me.REG[3] = NIT_NULL;
-  fra.me.REG[4] = NIT_NULL;
-  fra.me.REG[5] = NIT_NULL;
-  fra.me.REG[0] = p0;
-  fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1204 */
-  REGB0 = CALL_syntax___syntax_base___MMLocalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
-  if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1206 */
-    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./syntax//mmbuilder.nit:1207 */
-    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);
-      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];
-    REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[3]));
-    if (UNTAG_Bool(REGB0)) {
-    } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-      REGB0 = REGB1;
-    }
-    if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1208 */
-      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);
-        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];
-    } else {
-      /* ./syntax//mmbuilder.nit:1209 */
-      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);
-        once_value_3 = fra.me.REG[4];
-        register_static_object(&once_value_3);
-      } else fra.me.REG[4] = once_value_3;
-      fra.me.REG[4] = fra.me.REG[4];
-      REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-      if (UNTAG_Bool(REGB0)) {
-      } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-        REGB0 = REGB1;
-      }
-      if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1210 */
-        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);
-          once_value_4 = fra.me.REG[4];
-          register_static_object(&once_value_4);
-        } else fra.me.REG[4] = once_value_4;
-        fra.me.REG[4] = fra.me.REG[4];
-        fra.me.REG[3] = fra.me.REG[4];
-      } else {
-        /* ./syntax//mmbuilder.nit:1211 */
-        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);
-          once_value_5 = fra.me.REG[4];
-          register_static_object(&once_value_5);
-        } else fra.me.REG[4] = once_value_5;
-        fra.me.REG[4] = fra.me.REG[4];
-        REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-        if (UNTAG_Bool(REGB0)) {
-        } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-          REGB0 = REGB1;
-        }
-        if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:1212 */
-          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);
-            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];
-          fra.me.REG[3] = fra.me.REG[4];
-        } else {
-          /* ./syntax//mmbuilder.nit:1213 */
-          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);
-            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];
-          REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-          if (UNTAG_Bool(REGB0)) {
-          } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-            REGB0 = REGB1;
-          }
-          if (UNTAG_Bool(REGB0)) {
-            /* ./syntax//mmbuilder.nit:1214 */
-            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);
-              once_value_8 = fra.me.REG[4];
-              register_static_object(&once_value_8);
-            } else fra.me.REG[4] = once_value_8;
-            fra.me.REG[4] = fra.me.REG[4];
-            fra.me.REG[3] = fra.me.REG[4];
-          } else {
-            /* ./syntax//mmbuilder.nit:1215 */
-            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);
-              once_value_9 = fra.me.REG[4];
-              register_static_object(&once_value_9);
-            } else fra.me.REG[4] = once_value_9;
-            fra.me.REG[4] = fra.me.REG[4];
-            REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-            if (UNTAG_Bool(REGB0)) {
-            } else {
-              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-              REGB0 = REGB1;
-            }
-            if (UNTAG_Bool(REGB0)) {
-              /* ./syntax//mmbuilder.nit:1216 */
-              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);
-               once_value_10 = fra.me.REG[4];
-               register_static_object(&once_value_10);
-              } else fra.me.REG[4] = once_value_10;
-              fra.me.REG[4] = fra.me.REG[4];
-              fra.me.REG[3] = fra.me.REG[4];
-            } else {
-              /* ./syntax//mmbuilder.nit:1217 */
-              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);
-               once_value_11 = fra.me.REG[4];
-               register_static_object(&once_value_11);
-              } else fra.me.REG[4] = once_value_11;
-              fra.me.REG[4] = fra.me.REG[4];
-              REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-              if (UNTAG_Bool(REGB0)) {
-              } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-              }
-              if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1218 */
-               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);
-               once_value_12 = fra.me.REG[4];
-               register_static_object(&once_value_12);
-               } else fra.me.REG[4] = once_value_12;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-              } else {
-               /* ./syntax//mmbuilder.nit:1219 */
-               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);
-               once_value_13 = fra.me.REG[4];
-               register_static_object(&once_value_13);
-               } else fra.me.REG[4] = once_value_13;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1220 */
-               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);
-               once_value_14 = fra.me.REG[4];
-               register_static_object(&once_value_14);
-               } else fra.me.REG[4] = once_value_14;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1221 */
-               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);
-               once_value_15 = fra.me.REG[4];
-               register_static_object(&once_value_15);
-               } else fra.me.REG[4] = once_value_15;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1222 */
-               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);
-               once_value_16 = fra.me.REG[4];
-               register_static_object(&once_value_16);
-               } else fra.me.REG[4] = once_value_16;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1223 */
-               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);
-               once_value_17 = fra.me.REG[4];
-               register_static_object(&once_value_17);
-               } else fra.me.REG[4] = once_value_17;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1224 */
-               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);
-               once_value_18 = fra.me.REG[4];
-               register_static_object(&once_value_18);
-               } else fra.me.REG[4] = once_value_18;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1225 */
-               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);
-               once_value_19 = fra.me.REG[4];
-               register_static_object(&once_value_19);
-               } else fra.me.REG[4] = once_value_19;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1226 */
-               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);
-               once_value_20 = fra.me.REG[4];
-               register_static_object(&once_value_20);
-               } else fra.me.REG[4] = once_value_20;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1227 */
-               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);
-               once_value_21 = fra.me.REG[4];
-               register_static_object(&once_value_21);
-               } else fra.me.REG[4] = once_value_21;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1228 */
-               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);
-               once_value_22 = fra.me.REG[4];
-               register_static_object(&once_value_22);
-               } else fra.me.REG[4] = once_value_22;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1229 */
-               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);
-               once_value_23 = fra.me.REG[4];
-               register_static_object(&once_value_23);
-               } else fra.me.REG[4] = once_value_23;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1230 */
-               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);
-               once_value_24 = fra.me.REG[4];
-               register_static_object(&once_value_24);
-               } else fra.me.REG[4] = once_value_24;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1231 */
-               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);
-               once_value_25 = fra.me.REG[4];
-               register_static_object(&once_value_25);
-               } else fra.me.REG[4] = once_value_25;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1232 */
-               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);
-               once_value_26 = fra.me.REG[4];
-               register_static_object(&once_value_26);
-               } else fra.me.REG[4] = once_value_26;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1233 */
-               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);
-               once_value_27 = fra.me.REG[4];
-               register_static_object(&once_value_27);
-               } else fra.me.REG[4] = once_value_27;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1234 */
-               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);
-               once_value_28 = fra.me.REG[4];
-               register_static_object(&once_value_28);
-               } else fra.me.REG[4] = once_value_28;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1235 */
-               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);
-               once_value_29 = fra.me.REG[4];
-               register_static_object(&once_value_29);
-               } else fra.me.REG[4] = once_value_29;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1236 */
-               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);
-               once_value_30 = fra.me.REG[4];
-               register_static_object(&once_value_30);
-               } else fra.me.REG[4] = once_value_30;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1237 */
-               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);
-               once_value_31 = fra.me.REG[4];
-               register_static_object(&once_value_31);
-               } else fra.me.REG[4] = once_value_31;
-               fra.me.REG[4] = fra.me.REG[4];
-               REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[2],fra.me.REG[4]));
-               if (UNTAG_Bool(REGB0)) {
-               } else {
-               REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
-               REGB0 = REGB1;
-               }
-               if (UNTAG_Bool(REGB0)) {
-               /* ./syntax//mmbuilder.nit:1238 */
-               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);
-               once_value_32 = fra.me.REG[4];
-               register_static_object(&once_value_32);
-               } else fra.me.REG[4] = once_value_32;
-               fra.me.REG[4] = fra.me.REG[4];
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./../lib/standard//collection//array.nit:23 */
-               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, 23);
-               }
-               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB1 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:220 */
-               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB1 = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[2])(fra.me.REG[2], REGB1);
-               REGB0 = TAG_Char('=');
-               REGB2 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB0));
-               if (UNTAG_Bool(REGB2)) {
-               } else {
-               /* ./../lib/standard//kernel.nit:350 */
-               REGB0 = TAG_Bool((REGB1)==(REGB0));
-               /* ./syntax//mmbuilder.nit:1239 */
-               REGB2 = REGB0;
-               }
-               if (UNTAG_Bool(REGB2)) {
-               /* ./syntax//mmbuilder.nit:1240 */
-               REGB2 = TAG_Int(3);
-               fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
-               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);
-               once_value_33 = fra.me.REG[5];
-               register_static_object(&once_value_33);
-               } else fra.me.REG[5] = once_value_33;
-               fra.me.REG[5] = fra.me.REG[5];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               REGB2 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:23 */
-               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, 23);
-               }
-               REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-               /* ./syntax//mmbuilder.nit:1240 */
-               REGB1 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:220 */
-               REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
-               /* ./syntax//mmbuilder.nit:1240 */
-               fra.me.REG[5] = CALL_standard___string___AbstractString___substring(fra.me.REG[2])(fra.me.REG[2], REGB2, REGB1);
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               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);
-               once_value_34 = fra.me.REG[5];
-               register_static_object(&once_value_34);
-               } else fra.me.REG[5] = once_value_34;
-               fra.me.REG[5] = fra.me.REG[5];
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-               fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-               fra.me.REG[3] = fra.me.REG[4];
-               } else {
-               /* ./syntax//mmbuilder.nit:1242 */
-               fra.me.REG[3] = fra.me.REG[2];
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-               }
-              }
-            }
-          }
-        }
-      }
+  CALL_syntax___mmbuilder___APropdef___process_and_check(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[4], REGB2, REGB0);
+  /* ./syntax//mmbuilder.nit:1181 */
+  fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
+  } else {
+    REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB2)) {
+      REGB2 = TAG_Bool(false);
+      REGB0 = REGB2;
+    } else {
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = REGB2;
     }
-    /* ./syntax//mmbuilder.nit:1245 */
-    REGB1 = TAG_Int(5);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-    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);
-      once_value_35 = fra.me.REG[4];
-      register_static_object(&once_value_35);
-    } else fra.me.REG[4] = once_value_35;
-    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]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(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]);
-    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);
-      once_value_36 = fra.me.REG[4];
-      register_static_object(&once_value_36);
-    } else fra.me.REG[4] = once_value_36;
-    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]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-    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);
-      once_value_37 = fra.me.REG[3];
-      register_static_object(&once_value_37);
-    } else fra.me.REG[3] = once_value_37;
-    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]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    goto label38;
+  }
+  REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+  if (UNTAG_Bool(REGB0)) {
+    fra.me.REG[4] = CALL_parser___parser_nodes___AMethPropdef___n_signature(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1181);
+    }
+    CALL_syntax___mmbuilder___ASignature___check_visibility(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3], fra.me.REG[2]);
+  }
+  label1: while(0);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(val_t p0, val_t p1){
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1184;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 4;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:1184 */
+  fra.me.REG[2] = fra.me.REG[0];
+  fra.me.REG[3] = fra.me.REG[1];
+  /* ./syntax//mmbuilder.nit:1186 */
+  fra.me.REG[2] = ATTR_syntax___mmbuilder___AMethPropdef____method(fra.me.REG[2]);
+  CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+  /* ./syntax//mmbuilder.nit:1187 */
+  CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//mmbuilder.nit:1188 */
+  CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void syntax___mmbuilder___AMainMethPropdef___process_and_check(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4){
+  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_syntax___mmbuilder;
+  fra.me.line = 1193;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AMainMethPropdef___process_and_check;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  fra.me.REG[2] = p2;
+  REGB0 = p3;
+  REGB1 = p4;
+  /* ./syntax//mmbuilder.nit:1195 */
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
+  /* ./syntax//mmbuilder.nit:1196 */
+  fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
+  fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[1]);
+  CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  stack_frame_head = fra.me.prev;
+  return;
+}
+void syntax___mmbuilder___AExternPropdef___accept_property_verifier(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 REGB2;
+  val_t tmp;
+  fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+  fra.me.file = LOCATE_syntax___mmbuilder;
+  fra.me.line = 1202;
+  fra.me.meth = LOCATE_syntax___mmbuilder___AExternPropdef___accept_property_verifier;
+  fra.me.has_broke = 0;
+  fra.me.REG_size = 3;
+  fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[0] = p0;
+  fra.me.REG[1] = p1;
+  /* ./syntax//mmbuilder.nit:1202 */
+  fra.me.REG[2] = fra.me.REG[0];
+  /* ./syntax//mmbuilder.nit:1204 */
+  CALL_SUPER_syntax___mmbuilder___AExternPropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+  /* ./syntax//mmbuilder.nit:1206 */
+  fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+  if (UNTAG_Bool(REGB0)) {
   } else {
-    /* ./syntax//mmbuilder.nit:1247 */
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[0])(fra.me.REG[0]);
-    if (!once_value_39) {
-      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);
-        once_value_40 = fra.me.REG[4];
-        register_static_object(&once_value_40);
-      } else fra.me.REG[4] = once_value_40;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
-      once_value_39 = fra.me.REG[4];
-      register_static_object(&once_value_39);
-    } else fra.me.REG[4] = once_value_39;
-    fra.me.REG[4] = fra.me.REG[4];
-    REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[4]));
+    REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
+      REGB1 = TAG_Bool(false);
+      REGB0 = REGB1;
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      REGB1 = REGB2;
+      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)) {
+    /* ./syntax//mmbuilder.nit:1207 */
+    fra.me.REG[1] = CALL_parser___parser_nodes___AExternPropdef___n_extern(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+    if (UNTAG_Bool(REGB0)) {
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1207);
     }
+    fra.me.REG[1] = CALL_parser___lexer___Token___text(fra.me.REG[1])(fra.me.REG[1]);
+    /* ./syntax//mmbuilder.nit:1208 */
+    REGB0 = TAG_Int(1);
+    /* ./../lib/standard//collection//array.nit:24 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      /* ./syntax//mmbuilder.nit:1248 */
-      REGB1 = TAG_Int(3);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      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);
-        once_value_41 = fra.me.REG[3];
-        register_static_object(&once_value_41);
-      } else fra.me.REG[3] = once_value_41;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
-      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[4])(fra.me.REG[4], fra.me.REG[3]);
-      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);
-        once_value_42 = fra.me.REG[3];
-        register_static_object(&once_value_42);
-      } else fra.me.REG[3] = once_value_42;
-      fra.me.REG[3] = fra.me.REG[3];
-      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]);
-      fra.me.REG[2] = fra.me.REG[4];
-      goto label38;
     } else {
-      /* ./syntax//mmbuilder.nit:1250 */
-      REGB1 = TAG_Int(5);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
-      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);
-        once_value_43 = fra.me.REG[3];
-        register_static_object(&once_value_43);
-      } else fra.me.REG[3] = once_value_43;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___name(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      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);
-        once_value_44 = fra.me.REG[1];
-        register_static_object(&once_value_44);
-      } else fra.me.REG[1] = once_value_44;
-      fra.me.REG[1] = fra.me.REG[1];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
-      fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(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]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[0]);
-      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);
-        once_value_45 = fra.me.REG[0];
-        register_static_object(&once_value_45);
-      } else fra.me.REG[0] = once_value_45;
-      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]);
-      fra.me.REG[2] = fra.me.REG[4];
-      goto label38;
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+    /* ./syntax//mmbuilder.nit:1208 */
+    REGB2 = TAG_Int(2);
+    /* ./../lib/standard//kernel.nit:237 */
+    REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
+    /* ./syntax//mmbuilder.nit:1208 */
+    fra.me.REG[0] = CALL_standard___string___AbstractString___substring(fra.me.REG[1])(fra.me.REG[1], REGB0, REGB2);
+    fra.me.REG[1] = fra.me.REG[0];
+  } else {
+    /* ./syntax//mmbuilder.nit:1210 */
+    fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[0] = CALL_primitive_info___MMMethod___default_extern_name(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[1] = fra.me.REG[0];
   }
-  label38: while(0);
+  /* ./syntax//mmbuilder.nit:1212 */
+  fra.me.REG[2] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_syntax___syntax_base___MMMethSrcMethod___extern_name__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return;
 }
 val_t syntax___mmbuilder___ATypePropdef___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 1257;
+  fra.me.line = 1217;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1257 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1217 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1257);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1217);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___ATypePropdef___accept_property_builder(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1260;
+  fra.me.line = 1220;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9499,20 +9087,20 @@ void syntax___mmbuilder___ATypePropdef___accept_property_builder(val_t p0, val_t
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1260 */
+  /* ./syntax//mmbuilder.nit:1220 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1262 */
+  /* ./syntax//mmbuilder.nit:1222 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1263 */
+  /* ./syntax//mmbuilder.nit:1223 */
   fra.me.REG[1] = CALL_parser___parser_nodes___ATypePropdef___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1264 */
+  /* ./syntax//mmbuilder.nit:1224 */
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = NEW_MMSrcTypeProperty_syntax___syntax_base___MMSrcTypeProperty___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1265 */
+  /* ./syntax//mmbuilder.nit:1225 */
   ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1266 */
+  /* ./syntax//mmbuilder.nit:1226 */
   fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   CALL_syntax___mmbuilder___MMSrcLocalClass___add_src_local_property(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3], fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -9526,7 +9114,7 @@ void syntax___mmbuilder___ATypePropdef___accept_property_verifier(val_t p0, val_
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1269;
+  fra.me.line = 1229;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 5;
@@ -9537,25 +9125,25 @@ void syntax___mmbuilder___ATypePropdef___accept_property_verifier(val_t p0, val_
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1269 */
+  /* ./syntax//mmbuilder.nit:1229 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1271 */
+  /* ./syntax//mmbuilder.nit:1231 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1272 */
+  /* ./syntax//mmbuilder.nit:1232 */
   fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[0] = CALL_parser___parser_nodes___ATypePropdef___n_type(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
   fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[4] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[4] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1273 */
+  /* ./syntax//mmbuilder.nit:1233 */
   fra.me.REG[0] = CALL_syntax___syntax_base___ATypePropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
   CALL_metamodel___static_type___MMLocalProperty___signature__eq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1274 */
+  /* ./syntax//mmbuilder.nit:1234 */
   fra.me.REG[4] = CALL_parser___parser_nodes___ATypePropdef___n_visibility(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_syntax___mmbuilder___AVisibility___level(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1275 */
+  /* ./syntax//mmbuilder.nit:1235 */
   fra.me.REG[4] = CALL_syntax___syntax_base___ATypePropdef___prop(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_parser___parser_nodes___ATypePropdef___n_kwredef(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
@@ -9580,7 +9168,7 @@ void syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(val_t p0, val
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1278;
+  fra.me.line = 1238;
   fra.me.meth = LOCATE_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9590,15 +9178,15 @@ void syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(val_t p0, val
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1278 */
+  /* ./syntax//mmbuilder.nit:1238 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1280 */
+  /* ./syntax//mmbuilder.nit:1240 */
   fra.me.REG[2] = ATTR_syntax___mmbuilder___ATypePropdef____prop(fra.me.REG[2]);
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1281 */
+  /* ./syntax//mmbuilder.nit:1241 */
   CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1282 */
+  /* ./syntax//mmbuilder.nit:1242 */
   CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
   stack_frame_head = fra.me.prev;
   return;
@@ -9609,17 +9197,17 @@ val_t syntax___mmbuilder___MethidAccumulator___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1289;
+  fra.me.line = 1249;
   fra.me.meth = LOCATE_syntax___mmbuilder___MethidAccumulator___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1289 */
+  /* ./syntax//mmbuilder.nit:1249 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1289);
+    nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1249);
   }
   fra.me.REG[0] = ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
@@ -9631,7 +9219,7 @@ void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1290;
+  fra.me.line = 1250;
   fra.me.meth = LOCATE_syntax___mmbuilder___MethidAccumulator___visit;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9641,27 +9229,27 @@ void syntax___mmbuilder___MethidAccumulator___visit(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1292 */
+  /* ./syntax//mmbuilder.nit:1252 */
   REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___Token, ID_parser___parser_nodes___Token)) /*cast Token*/;
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1293 */
+    /* ./syntax//mmbuilder.nit:1253 */
     REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___MethidAccumulator____name(fra.me.REG[0])!=NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1293);
+      nit_abort("Uninitialized attribute %s", "_name", LOCATE_syntax___mmbuilder, 1253);
     }
     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, 1293);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1253);
     }
     fra.me.REG[3] = CALL_parser___lexer___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:1295 */
+    /* ./syntax//mmbuilder.nit:1255 */
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1295);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1255);
     }
     CALL_parser___parser_prod___ANode___visit_all(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
   }
@@ -9673,13 +9261,13 @@ val_t syntax___mmbuilder___AMethid___name(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1301;
+  fra.me.line = 1261;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethid___name;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1301 */
+  /* ./syntax//mmbuilder.nit:1261 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AMethid____name(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -9689,7 +9277,7 @@ void syntax___mmbuilder___AMethid___accept_property_builder(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___mmbuilder;
-  fra.me.line = 1303;
+  fra.me.line = 1263;
   fra.me.meth = LOCATE_syntax___mmbuilder___AMethid___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -9699,24 +9287,24 @@ void syntax___mmbuilder___AMethid___accept_property_builder(val_t p0, val_t p1){
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1303 */
+  /* ./syntax//mmbuilder.nit:1263 */
   fra.me.REG[2] = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1305 */
+  /* ./syntax//mmbuilder.nit:1265 */
   fra.me.REG[3] = NEW_MethidAccumulator_parser___parser_prod___Visitor___init();
-  /* ./syntax//mmbuilder.nit:1306 */
+  /* ./syntax//mmbuilder.nit:1266 */
   CALL_parser___parser_prod___Visitor___enter_visit(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1307 */
+  /* ./syntax//mmbuilder.nit:1267 */
   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]);
   fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
   ATTR_syntax___mmbuilder___AMethid____name(fra.me.REG[2]) = fra.me.REG[3];
-  /* ./syntax//mmbuilder.nit:1308 */
+  /* ./syntax//mmbuilder.nit:1268 */
   CALL_SUPER_syntax___mmbuilder___AMethid___accept_property_builder(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
   stack_frame_head = fra.me.prev;
   return;
 }
 void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -9724,10 +9312,10 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1313;
+  fra.me.line = 1273;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___accept_property_verifier;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -9735,34 +9323,35 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1313 */
+  /* ./syntax//mmbuilder.nit:1273 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1315 */
+  /* ./syntax//mmbuilder.nit:1275 */
   CALL_SUPER_syntax___mmbuilder___ASignature___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1316 */
+  /* ./syntax//mmbuilder.nit:1276 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1317 */
+    /* ./syntax//mmbuilder.nit:1277 */
     goto label1;
   } else {
-    /* ./syntax//mmbuilder.nit:1318 */
+    /* ./syntax//mmbuilder.nit:1278 */
     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]);
     REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1319 */
+      /* ./syntax//mmbuilder.nit:1279 */
       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]);
       fra.me.REG[1] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(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(IS_EQUAL_NN(fra.me.REG[1],fra.me.REG[0]));
+      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]);
+      fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
+      REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[1],fra.me.REG[4]));
       if (UNTAG_Bool(REGB0)) {
       } else {
         REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
@@ -9770,7 +9359,7 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } 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[4]);
           REGB0 = REGB1;
         }
       }
@@ -9778,16 +9367,16 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
       if (UNTAG_Bool(REGB0)) {
         REGB0 = TAG_Bool(true);
       } else {
-        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
-        REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        fra.me.REG[4] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+          REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(false);
             REGB1 = REGB2;
           } else {
-            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
             REGB1 = REGB2;
           }
         }
@@ -9795,10 +9384,10 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1320 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[0])(fra.me.REG[0]);
+        /* ./syntax//mmbuilder.nit:1280 */
+        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___untyped_params(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
         if (!once_value_2) {
           fra.me.REG[1] = BOX_NativeString("Syntax error: untyped parameter.");
           REGB0 = TAG_Int(32);
@@ -9807,12 +9396,12 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
           register_static_object(&once_value_2);
         } else fra.me.REG[1] = once_value_2;
         fra.me.REG[1] = fra.me.REG[1];
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0], fra.me.REG[1]);
-        /* ./syntax//mmbuilder.nit:1321 */
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4], fra.me.REG[1]);
+        /* ./syntax//mmbuilder.nit:1281 */
         goto label1;
       }
     } else {
-      /* ./syntax//mmbuilder.nit:1323 */
+      /* ./syntax//mmbuilder.nit:1283 */
       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___params(fra.me.REG[1])(fra.me.REG[1]);
       REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[1])(fra.me.REG[1]);
@@ -9837,191 +9426,206 @@ void syntax___mmbuilder___ASignature___accept_property_verifier(val_t p0, val_t
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
-        /* ./syntax//mmbuilder.nit:1324 */
+        /* ./syntax//mmbuilder.nit:1284 */
         fra.me.REG[1] = NEW_Array_standard___collection___array___Array___init();
-        /* ./syntax//mmbuilder.nit:1325 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ./syntax//mmbuilder.nit:1285 */
+        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:235 */
-        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:270 */
+        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        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 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+          /* ./../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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+          REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+          if (UNTAG_Bool(REGB2)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ./../lib/standard//kernel.nit:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            /* ./../lib/standard//collection//array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-            /* ./syntax//mmbuilder.nit:1326 */
-            fra.me.REG[6] = CALL_syntax___mmbuilder___AParam___stype(fra.me.REG[5])(fra.me.REG[5]);
-            REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
+            /* ./../lib/standard//collection//array.nit:718 */
+            fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+            /* ./syntax//mmbuilder.nit:1286 */
+            fra.me.REG[7] = CALL_syntax___mmbuilder___AParam___stype(fra.me.REG[6])(fra.me.REG[6]);
+            REGB1 = TAG_Bool(fra.me.REG[7]!=NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
             } else {
-              nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1326);
+              nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1286);
             }
-            fra.me.REG[5] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[5])(fra.me.REG[5]);
-            fra.me.REG[5] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[5])(fra.me.REG[5]);
-            fra.me.REG[5] = NEW_MMParam_metamodel___static_type___MMParam___init(fra.me.REG[6], fra.me.REG[5]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            fra.me.REG[6] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[6])(fra.me.REG[6]);
+            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 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label3;
           }
         }
         label3: while(0);
-        /* ./syntax//mmbuilder.nit:1328 */
-        fra.me.REG[4] = NIT_NULL;
-        /* ./syntax//mmbuilder.nit:1329 */
-        fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
-        REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+        /* ./syntax//mmbuilder.nit:1288 */
+        fra.me.REG[0] = NIT_NULL;
+        /* ./syntax//mmbuilder.nit:1289 */
+        fra.me.REG[5] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[2])(fra.me.REG[2]);
+        REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB0 = REGB1;
           } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
+            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
             REGB0 = REGB1;
           }
         }
         REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
         if (UNTAG_Bool(REGB0)) {
-          /* ./syntax//mmbuilder.nit:1330 */
+          /* ./syntax//mmbuilder.nit:1290 */
           fra.me.REG[2] = CALL_parser___parser_nodes___ASignature___n_type(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___mmbuilder, 1330);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1290);
           }
           fra.me.REG[2] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          fra.me.REG[4] = fra.me.REG[2];
-          /* ./syntax//mmbuilder.nit:1331 */
-          REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+          fra.me.REG[0] = fra.me.REG[2];
+          /* ./syntax//mmbuilder.nit:1291 */
+          REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
           } else {
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
               REGB1 = TAG_Bool(false);
               REGB0 = REGB1;
             } else {
-              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+              REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], NIT_NULL);
               REGB0 = REGB1;
             }
           }
           if (UNTAG_Bool(REGB0)) {
-            /* ./syntax//mmbuilder.nit:1332 */
+            /* ./syntax//mmbuilder.nit:1292 */
             fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
             REGB0 = TAG_Bool(true);
             CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(fra.me.REG[2])(fra.me.REG[2], REGB0);
-            /* ./syntax//mmbuilder.nit:1333 */
+            /* ./syntax//mmbuilder.nit:1293 */
             goto label1;
           }
         }
-        /* ./syntax//mmbuilder.nit:1336 */
+        /* ./syntax//mmbuilder.nit:1296 */
         fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[4], fra.me.REG[0]);
-        CALL_syntax___mmbuilder___SignatureBuilder___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[0]);
-        /* ./syntax//mmbuilder.nit:1337 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[0])(fra.me.REG[0]);
+        fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+        CALL_syntax___mmbuilder___SignatureBuilder___signature__eq(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+        /* ./syntax//mmbuilder.nit:1297 */
+        fra.me.REG[5] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
+        REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[5])(fra.me.REG[5]);
         REGB1 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-        /* ./syntax//mmbuilder.nit:1337 */
+        /* ./syntax//mmbuilder.nit:1297 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1338 */
-          fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-          fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___signature(fra.me.REG[0])(fra.me.REG[0]);
+          /* ./syntax//mmbuilder.nit:1298 */
+          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___signature(fra.me.REG[5])(fra.me.REG[5]);
           fra.me.REG[2] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
           REGB1 = CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank(fra.me.REG[2])(fra.me.REG[2]);
-          REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+          REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
-            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1338);
+            nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1298);
           }
-          CALL_metamodel___vararg___MMSignature___vararg_rank__eq(fra.me.REG[0])(fra.me.REG[0], REGB1);
+          CALL_metamodel___vararg___MMSignature___vararg_rank__eq(fra.me.REG[5])(fra.me.REG[5], REGB1);
         }
-        /* ./syntax//mmbuilder.nit:1340 */
-        fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[0])(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:234 */
+        /* ./syntax//mmbuilder.nit:1300 */
+        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:235 */
-        REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:270 */
+        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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[2] = ATTR_standard___collection___array___Array____items(fra.me.REG[0]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        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 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:24 */
+          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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+          }
+          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+          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);
           }
-          REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ./../lib/standard//kernel.nit:232 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB0)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
-            /* ./syntax//mmbuilder.nit:1341 */
+            /* ./../lib/standard//collection//array.nit:718 */
+            fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB1)];
+            /* ./syntax//mmbuilder.nit:1301 */
             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___signature(fra.me.REG[1])(fra.me.REG[1]);
             REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
             if (UNTAG_Bool(REGB0)) {
-              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1341);
+              nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1301);
             }
             fra.me.REG[1] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
-            fra.me.REG[4] = CALL_syntax___syntax_base___AClosureDecl___variable(fra.me.REG[4])(fra.me.REG[4]);
-            fra.me.REG[4] = CALL_syntax___syntax_base___ClosureVariable___closure(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:239 */
+            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 */
             REGB0 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = REGB0;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label4;
           }
         }
@@ -10037,10 +9641,11 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   struct {struct stack_frame_t me; val_t MORE_REG[3];} 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_syntax___mmbuilder;
-  fra.me.line = 1346;
+  fra.me.line = 1306;
   fra.me.meth = LOCATE_syntax___mmbuilder___ASignature___check_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 4;
@@ -10051,20 +9656,25 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1349 */
+  /* ./syntax//mmbuilder.nit:1309 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1349 */
+  /* ./syntax//mmbuilder.nit:1309 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1350 */
+  /* ./syntax//mmbuilder.nit:1310 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[3])(fra.me.REG[3], (&(fra.me)), ((fun_t)OC_syntax___mmbuilder___ASignature___check_visibility_2));
-  /* ./syntax//mmbuilder.nit:1353 */
+  /* ./syntax//mmbuilder.nit:1313 */
   fra.me.REG[3] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -10083,7 +9693,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
     fra.me.REG[0] = CALL_parser___parser_nodes___ASignature___n_type(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
-      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1353);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1313);
     }
     CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2]);
   }
@@ -10109,7 +9719,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:1351 */
+    /* ./syntax//mmbuilder.nit:1311 */
     fra.me.REG[1] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
@@ -10128,7 +9738,7 @@ void syntax___mmbuilder___ASignature___check_visibility(val_t p0, val_t p1, val_
       fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(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_syntax___mmbuilder, 1351);
+        nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1311);
       }
       CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], closctx->REG[2]);
     }
@@ -10141,58 +9751,60 @@ val_t syntax___mmbuilder___AParam___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1358;
+  fra.me.line = 1318;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1358 */
+  /* ./syntax//mmbuilder.nit:1318 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1358);
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1318);
   }
   REGB0 = ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
 val_t syntax___mmbuilder___AParam___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 1360;
+  fra.me.line = 1320;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1360 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1320 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1360);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1320);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___mmbuilder___AParam___stype(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_syntax___mmbuilder;
-  fra.me.line = 1363;
+  fra.me.line = 1323;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___stype;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1363 */
+  /* ./syntax//mmbuilder.nit:1323 */
   fra.me.REG[0] = ATTR_syntax___mmbuilder___AParam____stype(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return fra.me.REG[0];
@@ -10202,7 +9814,7 @@ void syntax___mmbuilder___AParam___stype__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_syntax___mmbuilder;
-  fra.me.line = 1363;
+  fra.me.line = 1323;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___stype__eq;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10210,7 +9822,7 @@ void syntax___mmbuilder___AParam___stype__eq(val_t p0, val_t p1){
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1363 */
+  /* ./syntax//mmbuilder.nit:1323 */
   ATTR_syntax___mmbuilder___AParam____stype(fra.me.REG[0]) = fra.me.REG[1];
   stack_frame_head = fra.me.prev;
   return;
@@ -10225,7 +9837,7 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
             static val_t once_value_2; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1366;
+  fra.me.line = 1326;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 7;
@@ -10238,38 +9850,38 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1366 */
+  /* ./syntax//mmbuilder.nit:1326 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1368 */
+  /* ./syntax//mmbuilder.nit:1328 */
   CALL_SUPER_syntax___mmbuilder___AParam___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1369 */
+  /* ./syntax//mmbuilder.nit:1329 */
   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___params(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1369 */
+  /* ./syntax//mmbuilder.nit:1329 */
   ATTR_syntax___mmbuilder___AParam____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1370 */
+  /* ./syntax//mmbuilder.nit:1330 */
   fra.me.REG[1] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[1] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[1])(fra.me.REG[1]);
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = NEW_ParamVariable_syntax___syntax_base___ParamVariable___init(fra.me.REG[1], fra.me.REG[0]);
   ATTR_syntax___mmbuilder___AParam____variable(fra.me.REG[2]) = fra.me.REG[0];
-  /* ./syntax//mmbuilder.nit:1371 */
+  /* ./syntax//mmbuilder.nit:1331 */
   fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1372 */
+  /* ./syntax//mmbuilder.nit:1332 */
   fra.me.REG[0] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[0])(fra.me.REG[0]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1373 */
+  /* ./syntax//mmbuilder.nit:1333 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10285,14 +9897,14 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1374 */
+    /* ./syntax//mmbuilder.nit:1334 */
     fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_type(fra.me.REG[2])(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___mmbuilder, 1374);
+      nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1334);
     }
     fra.me.REG[0] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
-    /* ./syntax//mmbuilder.nit:1375 */
+    /* ./syntax//mmbuilder.nit:1335 */
     REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
@@ -10306,74 +9918,79 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
       }
     }
     if (UNTAG_Bool(REGB0)) {
-      /* ./syntax//mmbuilder.nit:1376 */
+      /* ./syntax//mmbuilder.nit:1336 */
       fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
       REGB0 = TAG_Bool(true);
       CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
-      /* ./syntax//mmbuilder.nit:1377 */
+      /* ./syntax//mmbuilder.nit:1337 */
       goto label1;
     }
-    /* ./syntax//mmbuilder.nit:1379 */
+    /* ./syntax//mmbuilder.nit:1339 */
     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:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../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, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB0)];
-        /* ./syntax//mmbuilder.nit:1380 */
+        /* ./syntax//mmbuilder.nit:1340 */
         CALL_syntax___mmbuilder___AParam___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-        /* ./syntax//mmbuilder.nit:1381 */
+        /* ./syntax//mmbuilder.nit:1341 */
         REGB1 = CALL_syntax___mmbuilder___AParam___is_vararg(fra.me.REG[2])(fra.me.REG[2]);
         if (UNTAG_Bool(REGB1)) {
-          /* ./syntax//mmbuilder.nit:1382 */
+          /* ./syntax//mmbuilder.nit:1342 */
           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:219 */
+          /* ./../lib/standard//kernel.nit:236 */
           REGB2 = TAG_Int(-UNTAG_Int(REGB2));
-          /* ./syntax//mmbuilder.nit:1382 */
+          /* ./syntax//mmbuilder.nit:1342 */
           REGB3 = TAG_Bool(IS_EQUAL_OO(REGB1,REGB2));
           if (UNTAG_Bool(REGB3)) {
           } else {
-            /* ./../lib/standard//kernel.nit:210 */
+            /* ./../lib/standard//kernel.nit:227 */
             REGB2 = TAG_Bool((REGB1)==(REGB2));
-            /* ./syntax//mmbuilder.nit:1382 */
+            /* ./syntax//mmbuilder.nit:1342 */
             REGB3 = REGB2;
           }
           if (UNTAG_Bool(REGB3)) {
-            /* ./syntax//mmbuilder.nit:1383 */
+            /* ./syntax//mmbuilder.nit:1343 */
             fra.me.REG[6] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
             REGB3 = CALL_syntax___syntax_base___AParam___position(fra.me.REG[5])(fra.me.REG[5]);
             CALL_syntax___mmbuilder___SignatureBuilder___vararg_rank__eq(fra.me.REG[6])(fra.me.REG[6], REGB3);
           } else {
-            /* ./syntax//mmbuilder.nit:1385 */
+            /* ./syntax//mmbuilder.nit:1345 */
             if (!once_value_2) {
               fra.me.REG[6] = BOX_NativeString("Error: A vararg parameter is already defined.");
               REGB3 = TAG_Int(45);
@@ -10384,26 +10001,26 @@ void syntax___mmbuilder___AParam___accept_property_verifier(val_t p0, val_t p1){
             fra.me.REG[6] = fra.me.REG[6];
             CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6]);
           }
-          /* ./syntax//mmbuilder.nit:1387 */
+          /* ./syntax//mmbuilder.nit:1347 */
           fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___type_array(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
           fra.me.REG[0] = fra.me.REG[6];
         }
-        /* ./syntax//mmbuilder.nit:1389 */
+        /* ./syntax//mmbuilder.nit:1349 */
         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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB3 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB3;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label3;
       }
     }
     label3: while(0);
-    /* ./syntax//mmbuilder.nit:1391 */
+    /* ./syntax//mmbuilder.nit:1351 */
     fra.me.REG[3] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[3] = CALL_syntax___mmbuilder___SignatureBuilder___untyped_params(fra.me.REG[3])(fra.me.REG[3]);
     CALL_standard___collection___abstract_collection___RemovableCollection___clear(fra.me.REG[3])(fra.me.REG[3]);
@@ -10419,13 +10036,13 @@ val_t syntax___mmbuilder___AParam___is_vararg(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1395;
+  fra.me.line = 1355;
   fra.me.meth = LOCATE_syntax___mmbuilder___AParam___is_vararg;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1395 */
+  /* ./syntax//mmbuilder.nit:1355 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AParam___n_dotdotdot(fra.me.REG[0])(fra.me.REG[0]);
   REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
@@ -10451,45 +10068,47 @@ val_t syntax___mmbuilder___AClosureDecl___position(val_t p0){
   val_t tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1399;
+  fra.me.line = 1359;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___position;
   fra.me.has_broke = 0;
   fra.me.REG_size = 1;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1399 */
+  /* ./syntax//mmbuilder.nit:1359 */
   REGB0 = TAG_Bool(ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1399);
+    nit_abort("Uninitialized attribute %s", "_position", LOCATE_syntax___mmbuilder, 1359);
   }
   REGB0 = ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[0]);
   stack_frame_head = fra.me.prev;
   return REGB0;
 }
 val_t syntax___mmbuilder___AClosureDecl___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
-  fra.me.line = 1401;
+  fra.me.line = 1361;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
-  /* ./syntax//mmbuilder.nit:1401 */
-  fra.me.REG[0] = ATTR_syntax___mmbuilder___AClosureDecl____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  /* ./syntax//mmbuilder.nit:1361 */
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___mmbuilder___AClosureDecl____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1401);
+    nit_abort("Cast failed", NULL, LOCATE_syntax___mmbuilder, 1361);
   }
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
@@ -10505,7 +10124,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         static val_t once_value_7; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1404;
+  fra.me.line = 1364;
   fra.me.meth = LOCATE_syntax___mmbuilder___AClosureDecl___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 11;
@@ -10522,27 +10141,27 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   fra.me.REG[10] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
-  /* ./syntax//mmbuilder.nit:1404 */
+  /* ./syntax//mmbuilder.nit:1364 */
   fra.me.REG[2] = fra.me.REG[0];
   fra.me.REG[3] = fra.me.REG[1];
-  /* ./syntax//mmbuilder.nit:1406 */
+  /* ./syntax//mmbuilder.nit:1366 */
   fra.me.REG[4] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1407 */
+  /* ./syntax//mmbuilder.nit:1367 */
   fra.me.REG[5] = NEW_SignatureBuilder_syntax___mmbuilder___SignatureBuilder___init();
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-  /* ./syntax//mmbuilder.nit:1408 */
+  /* ./syntax//mmbuilder.nit:1368 */
   CALL_SUPER_syntax___mmbuilder___AClosureDecl___accept_property_verifier(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1409 */
+  /* ./syntax//mmbuilder.nit:1369 */
   fra.me.REG[1] = CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = CALL_syntax___mmbuilder___SignatureBuilder___has_error_occured(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1410 */
+    /* ./syntax//mmbuilder.nit:1370 */
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1412 */
+  /* ./syntax//mmbuilder.nit:1372 */
   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___signature(fra.me.REG[1])(fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1413 */
+  /* ./syntax//mmbuilder.nit:1373 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -10556,17 +10175,17 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1414 */
+    /* ./syntax//mmbuilder.nit:1374 */
     fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
     fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
     fra.me.REG[5] = CALL_metamodel___static_type___MMLocalClass___get_type(fra.me.REG[5])(fra.me.REG[5]);
     fra.me.REG[5] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[0], NIT_NULL, fra.me.REG[5]);
     fra.me.REG[1] = fra.me.REG[5];
   }
-  /* ./syntax//mmbuilder.nit:1416 */
+  /* ./syntax//mmbuilder.nit:1376 */
   REGB0 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1416);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1376);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
@@ -10602,7 +10221,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1417 */
+    /* ./syntax//mmbuilder.nit:1377 */
     if (!once_value_2) {
       fra.me.REG[5] = BOX_NativeString("Syntax Error: A break block cannot have a return value.");
       REGB0 = TAG_Int(55);
@@ -10613,12 +10232,12 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
     fra.me.REG[5] = fra.me.REG[5];
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[5]);
   }
-  /* ./syntax//mmbuilder.nit:1421 */
+  /* ./syntax//mmbuilder.nit:1381 */
   fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
   fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
   fra.me.REG[0] = CALL_metamodel___inheritance___MMModule___type_any(fra.me.REG[0])(fra.me.REG[0]);
   fra.me.REG[0] = NEW_MMSignature_metamodel___static_type___MMSignature___init(fra.me.REG[5], NIT_NULL, fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1422 */
+  /* ./syntax//mmbuilder.nit:1382 */
   if (!once_value_3) {
     if (!once_value_4) {
       fra.me.REG[5] = BOX_NativeString("break");
@@ -10636,17 +10255,17 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   REGB0 = TAG_Bool(false);
   REGB1 = TAG_Bool(true);
   fra.me.REG[0] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[5], fra.me.REG[0], REGB0, REGB1);
-  /* ./syntax//mmbuilder.nit:1423 */
+  /* ./syntax//mmbuilder.nit:1383 */
   REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1423);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1383);
   }
   fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[1])(fra.me.REG[1]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1425 */
+  /* ./syntax//mmbuilder.nit:1385 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[0] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[0])(fra.me.REG[0]);
-  /* ./syntax//mmbuilder.nit:1426 */
+  /* ./syntax//mmbuilder.nit:1386 */
   fra.me.REG[5] = CALL_parser___parser_nodes___AClosureDecl___n_kwbreak(fra.me.REG[2])(fra.me.REG[2]);
   REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
@@ -10676,40 +10295,45 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   fra.me.REG[1] = NEW_MMClosure_metamodel___static_type___MMClosure___init(fra.me.REG[0], fra.me.REG[1], REGB1, REGB0);
-  /* ./syntax//mmbuilder.nit:1427 */
+  /* ./syntax//mmbuilder.nit:1387 */
   fra.me.REG[5] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
-      /* ./syntax//mmbuilder.nit:1428 */
+      /* ./syntax//mmbuilder.nit:1388 */
       fra.me.REG[8] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[7])(fra.me.REG[7]);
       fra.me.REG[8] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[8])(fra.me.REG[8]);
       REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[0]));
@@ -10719,7 +10343,7 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         REGB1 = REGB2;
       }
       if (UNTAG_Bool(REGB1)) {
-        /* ./syntax//mmbuilder.nit:1429 */
+        /* ./syntax//mmbuilder.nit:1389 */
         fra.me.REG[8] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
         REGB1 = TAG_Int(5);
         fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
@@ -10760,38 +10384,38 @@ void syntax___mmbuilder___AClosureDecl___accept_property_verifier(val_t p0, val_
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
         fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
         CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[8], fra.me.REG[9]);
-        /* ./syntax//mmbuilder.nit:1430 */
+        /* ./syntax//mmbuilder.nit:1390 */
         goto label1;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label8;
     }
   }
   label8: while(0);
-  /* ./syntax//mmbuilder.nit:1433 */
+  /* ./syntax//mmbuilder.nit:1393 */
   CALL_syntax___mmbuilder___PropertyVerifierVisitor___signature_builder__eq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  /* ./syntax//mmbuilder.nit:1434 */
+  /* ./syntax//mmbuilder.nit:1394 */
   fra.me.REG[3] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1434 */
+  /* ./syntax//mmbuilder.nit:1394 */
   ATTR_syntax___mmbuilder___AClosureDecl____position(fra.me.REG[2]) = REGB0;
-  /* ./syntax//mmbuilder.nit:1435 */
+  /* ./syntax//mmbuilder.nit:1395 */
   fra.me.REG[4] = CALL_syntax___mmbuilder___SignatureBuilder___closure_decls(fra.me.REG[4])(fra.me.REG[4]);
   CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
-  /* ./syntax//mmbuilder.nit:1436 */
+  /* ./syntax//mmbuilder.nit:1396 */
   fra.me.REG[4] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[4] = CALL_syntax___syntax_base___Token___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
   fra.me.REG[3] = CALL_parser___parser_nodes___AClosureDecl___n_id(fra.me.REG[2])(fra.me.REG[2]);
@@ -10805,13 +10429,14 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_2; /* Once value */
     static val_t once_value_3; /* Once value */
     static val_t once_value_4; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
   fra.me.file = LOCATE_syntax___mmbuilder;
-  fra.me.line = 1441;
+  fra.me.line = 1401;
   fra.me.meth = LOCATE_syntax___mmbuilder___AType___check_visibility;
   fra.me.has_broke = 0;
   fra.me.REG_size = 6;
@@ -10824,19 +10449,24 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
-  /* ./syntax//mmbuilder.nit:1444 */
+  /* ./syntax//mmbuilder.nit:1404 */
   fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
-  /* ./syntax//mmbuilder.nit:1444 */
+  /* ./syntax//mmbuilder.nit:1404 */
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1445 */
+  /* ./syntax//mmbuilder.nit:1405 */
   fra.me.REG[3] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
-  /* ./syntax//mmbuilder.nit:1446 */
+  /* ./syntax//mmbuilder.nit:1406 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
@@ -10852,21 +10482,26 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
   if (UNTAG_Bool(REGB1)) {
     goto label1;
   }
-  /* ./syntax//mmbuilder.nit:1447 */
+  /* ./syntax//mmbuilder.nit:1407 */
   REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
-    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1447);
+    nit_abort("Reciever is null", NULL, LOCATE_syntax___mmbuilder, 1407);
   }
   fra.me.REG[3] = CALL_metamodel___static_type___MMType___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  /* ./syntax//mmbuilder.nit:1448 */
+  /* ./syntax//mmbuilder.nit:1408 */
   fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[4])(fra.me.REG[4]);
   REGB0 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:216 */
+  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:233 */
   REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
-  /* ./syntax//mmbuilder.nit:1448 */
+  /* ./syntax//mmbuilder.nit:1408 */
   if (UNTAG_Bool(REGB0)) {
-    /* ./syntax//mmbuilder.nit:1449 */
+    /* ./syntax//mmbuilder.nit:1409 */
     REGB0 = TAG_Int(5);
     fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_2) {
@@ -10903,7 +10538,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
     CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
   }
-  /* ./syntax//mmbuilder.nit:1451 */
+  /* ./syntax//mmbuilder.nit:1411 */
   fra.me.REG[0] = CALL_parser___parser_nodes___AType___n_types(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_syntax___mmbuilder___AType___check_visibility_5));
   label1: while(0);
@@ -10925,7 +10560,7 @@ void syntax___mmbuilder___AType___check_visibility(val_t p0, val_t p1, val_t p2)
     fra.me.closure_funs = CREG;
     fra.me.REG[0] = p0;
     CREG[0] = clos_fun0;
-    /* ./syntax//mmbuilder.nit:1452 */
+    /* ./syntax//mmbuilder.nit:1412 */
     CALL_syntax___mmbuilder___AType___check_visibility(fra.me.REG[0])(fra.me.REG[0], closctx->REG[1], closctx->REG[2]);
     stack_frame_head = fra.me.prev;
     return;
@@ -10935,7 +10570,7 @@ void syntax___mmbuilder___AExpr___accept_class_builder(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___mmbuilder;
-  fra.me.line = 1458;
+  fra.me.line = 1418;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_class_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10951,7 +10586,7 @@ void syntax___mmbuilder___AExpr___accept_property_builder(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___mmbuilder;
-  fra.me.line = 1459;
+  fra.me.line = 1419;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_property_builder;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
@@ -10967,7 +10602,7 @@ void syntax___mmbuilder___AExpr___accept_property_verifier(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___mmbuilder;
-  fra.me.line = 1460;
+  fra.me.line = 1420;
   fra.me.meth = LOCATE_syntax___mmbuilder___AExpr___accept_property_verifier;
   fra.me.has_broke = 0;
   fra.me.REG_size = 2;
index cba4d98..2eb675f 100644 (file)
@@ -1,7 +1,8 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/mmbuilder. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/mmbuilder. */
 #ifndef syntax___mmbuilder_sep
 #define syntax___mmbuilder_sep
 #include "syntax___syntax_base._sep.h"
+#include "primitive_info._sep.h"
 #include <nit_common.h>
 
 extern const classtable_elt_t VFT_syntax___mmbuilder___CSHSorter[];
@@ -147,32 +148,34 @@ extern const int SFT_syntax___mmbuilder[];
 #define CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_property_verifier(recv) ((syntax___mmbuilder___AMethPropdef___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[52] + 2)))
 #define CALL_SUPER_syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor(recv) ((syntax___mmbuilder___AMethPropdef___accept_abs_syntax_visitor_t)CALL((recv), (SFT_syntax___mmbuilder[52] + 3)))
 #define CALL_SUPER_syntax___mmbuilder___AExternPropdef___accept_property_verifier(recv) ((syntax___mmbuilder___AExternPropdef___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[53] + 0)))
-#define CALL_syntax___mmbuilder___MMMethod___default_extern_name(recv) ((syntax___mmbuilder___MMMethod___default_extern_name_t)CALL((recv), (SFT_syntax___mmbuilder[54] + 0)))
-#define CALL_syntax___mmbuilder___MMMethod___friendly_extern_name(recv) ((syntax___mmbuilder___MMMethod___friendly_extern_name_t)CALL((recv), (SFT_syntax___mmbuilder[54] + 1)))
-#define ATTR_syntax___mmbuilder___ATypePropdef____prop(recv) ATTR(recv, (SFT_syntax___mmbuilder[55] + 0))
-#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_builder(recv) ((syntax___mmbuilder___ATypePropdef___accept_property_builder_t)CALL((recv), (SFT_syntax___mmbuilder[56] + 0)))
-#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_verifier(recv) ((syntax___mmbuilder___ATypePropdef___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[56] + 1)))
-#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(recv) ((syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor_t)CALL((recv), (SFT_syntax___mmbuilder[56] + 2)))
-#define ID_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[57])
-#define COLOR_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[58])
-#define ATTR_syntax___mmbuilder___MethidAccumulator____name(recv) ATTR(recv, (SFT_syntax___mmbuilder[59] + 0))
-#define INIT_TABLE_POS_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[60] + 0)
-#define CALL_syntax___mmbuilder___MethidAccumulator___name(recv) ((syntax___mmbuilder___MethidAccumulator___name_t)CALL((recv), (SFT_syntax___mmbuilder[60] + 1)))
-#define ATTR_syntax___mmbuilder___AMethid____name(recv) ATTR(recv, (SFT_syntax___mmbuilder[61] + 0))
-#define CALL_SUPER_syntax___mmbuilder___AMethid___accept_property_builder(recv) ((syntax___mmbuilder___AMethid___accept_property_builder_t)CALL((recv), (SFT_syntax___mmbuilder[62] + 0)))
-#define CALL_SUPER_syntax___mmbuilder___ASignature___accept_property_verifier(recv) ((syntax___mmbuilder___ASignature___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[63] + 0)))
-#define CALL_syntax___mmbuilder___ASignature___check_visibility(recv) ((syntax___mmbuilder___ASignature___check_visibility_t)CALL((recv), (SFT_syntax___mmbuilder[63] + 1)))
-#define ATTR_syntax___mmbuilder___AParam____position(recv) ATTR(recv, (SFT_syntax___mmbuilder[64] + 0))
-#define ATTR_syntax___mmbuilder___AParam____variable(recv) ATTR(recv, (SFT_syntax___mmbuilder[64] + 1))
-#define ATTR_syntax___mmbuilder___AParam____stype(recv) ATTR(recv, (SFT_syntax___mmbuilder[64] + 2))
-#define CALL_syntax___mmbuilder___AParam___stype(recv) ((syntax___mmbuilder___AParam___stype_t)CALL((recv), (SFT_syntax___mmbuilder[65] + 0)))
-#define CALL_syntax___mmbuilder___AParam___stype__eq(recv) ((syntax___mmbuilder___AParam___stype__eq_t)CALL((recv), (SFT_syntax___mmbuilder[65] + 1)))
-#define CALL_SUPER_syntax___mmbuilder___AParam___accept_property_verifier(recv) ((syntax___mmbuilder___AParam___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[65] + 2)))
-#define CALL_syntax___mmbuilder___AParam___is_vararg(recv) ((syntax___mmbuilder___AParam___is_vararg_t)CALL((recv), (SFT_syntax___mmbuilder[65] + 3)))
-#define ATTR_syntax___mmbuilder___AClosureDecl____position(recv) ATTR(recv, (SFT_syntax___mmbuilder[66] + 0))
-#define ATTR_syntax___mmbuilder___AClosureDecl____variable(recv) ATTR(recv, (SFT_syntax___mmbuilder[66] + 1))
-#define CALL_SUPER_syntax___mmbuilder___AClosureDecl___accept_property_verifier(recv) ((syntax___mmbuilder___AClosureDecl___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[67] + 0)))
-#define CALL_syntax___mmbuilder___AType___check_visibility(recv) ((syntax___mmbuilder___AType___check_visibility_t)CALL((recv), (SFT_syntax___mmbuilder[68] + 0)))
+#define ATTR_syntax___mmbuilder___ATypePropdef____prop(recv) ATTR(recv, (SFT_syntax___mmbuilder[54] + 0))
+#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_builder(recv) ((syntax___mmbuilder___ATypePropdef___accept_property_builder_t)CALL((recv), (SFT_syntax___mmbuilder[55] + 0)))
+#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_property_verifier(recv) ((syntax___mmbuilder___ATypePropdef___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[55] + 1)))
+#define CALL_SUPER_syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor(recv) ((syntax___mmbuilder___ATypePropdef___accept_abs_syntax_visitor_t)CALL((recv), (SFT_syntax___mmbuilder[55] + 2)))
+#define ID_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[56])
+#define COLOR_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[57])
+#define ATTR_syntax___mmbuilder___MethidAccumulator____name(recv) ATTR(recv, (SFT_syntax___mmbuilder[58] + 0))
+#define INIT_TABLE_POS_syntax___mmbuilder___MethidAccumulator (SFT_syntax___mmbuilder[59] + 0)
+#define CALL_syntax___mmbuilder___MethidAccumulator___name(recv) ((syntax___mmbuilder___MethidAccumulator___name_t)CALL((recv), (SFT_syntax___mmbuilder[59] + 1)))
+#define ATTR_syntax___mmbuilder___AMethid____name(recv) ATTR(recv, (SFT_syntax___mmbuilder[60] + 0))
+#define CALL_SUPER_syntax___mmbuilder___AMethid___accept_property_builder(recv) ((syntax___mmbuilder___AMethid___accept_property_builder_t)CALL((recv), (SFT_syntax___mmbuilder[61] + 0)))
+#define CALL_SUPER_syntax___mmbuilder___ASignature___accept_property_verifier(recv) ((syntax___mmbuilder___ASignature___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[62] + 0)))
+#define CALL_syntax___mmbuilder___ASignature___check_visibility(recv) ((syntax___mmbuilder___ASignature___check_visibility_t)CALL((recv), (SFT_syntax___mmbuilder[62] + 1)))
+#define ATTR_syntax___mmbuilder___AParam____position(recv) ATTR(recv, (SFT_syntax___mmbuilder[63] + 0))
+#define ATTR_syntax___mmbuilder___AParam____variable(recv) ATTR(recv, (SFT_syntax___mmbuilder[63] + 1))
+#define ATTR_syntax___mmbuilder___AParam____stype(recv) ATTR(recv, (SFT_syntax___mmbuilder[63] + 2))
+#define CALL_syntax___mmbuilder___AParam___stype(recv) ((syntax___mmbuilder___AParam___stype_t)CALL((recv), (SFT_syntax___mmbuilder[64] + 0)))
+#define CALL_syntax___mmbuilder___AParam___stype__eq(recv) ((syntax___mmbuilder___AParam___stype__eq_t)CALL((recv), (SFT_syntax___mmbuilder[64] + 1)))
+#define CALL_SUPER_syntax___mmbuilder___AParam___accept_property_verifier(recv) ((syntax___mmbuilder___AParam___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[64] + 2)))
+#define CALL_syntax___mmbuilder___AParam___is_vararg(recv) ((syntax___mmbuilder___AParam___is_vararg_t)CALL((recv), (SFT_syntax___mmbuilder[64] + 3)))
+#define ATTR_syntax___mmbuilder___AClosureDecl____position(recv) ATTR(recv, (SFT_syntax___mmbuilder[65] + 0))
+#define ATTR_syntax___mmbuilder___AClosureDecl____variable(recv) ATTR(recv, (SFT_syntax___mmbuilder[65] + 1))
+#define CALL_SUPER_syntax___mmbuilder___AClosureDecl___accept_property_verifier(recv) ((syntax___mmbuilder___AClosureDecl___accept_property_verifier_t)CALL((recv), (SFT_syntax___mmbuilder[66] + 0)))
+#define CALL_syntax___mmbuilder___AType___check_visibility(recv) ((syntax___mmbuilder___AType___check_visibility_t)CALL((recv), (SFT_syntax___mmbuilder[67] + 0)))
+static const char * const LOCATE_syntax___mmbuilder___ToolContext___handle_property_conflict = "mmbuilder::ToolContext::(inheritance::MMContext::handle_property_conflict)";
+void syntax___mmbuilder___ToolContext___handle_property_conflict(val_t p0, val_t p1, val_t p2);
+typedef void (*syntax___mmbuilder___ToolContext___handle_property_conflict_t)(val_t p0, val_t p1, val_t p2);
+val_t NEW_ToolContext_mmloader___ToolContext___init();
 static const char * const LOCATE_syntax___mmbuilder___CSHSorter___compare = "mmbuilder::CSHSorter::(sorter::AbstractSorter::compare)";
 val_t syntax___mmbuilder___CSHSorter___compare(val_t p0, val_t p1, val_t p2);
 typedef val_t (*syntax___mmbuilder___CSHSorter___compare_t)(val_t p0, val_t p1, val_t p2);
@@ -616,13 +619,6 @@ typedef void (*syntax___mmbuilder___AExternPropdef___accept_property_verifier_t)
 val_t NEW_AExternPropdef_parser___parser_nodes___ANode___init(val_t p0);
 val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___empty_init();
 val_t NEW_AExternPropdef_parser___parser_prod___AMethPropdef___init_amethpropdef(val_t p0, val_t p1, val_t p2, val_t p3, val_t p4);
-static const char * const LOCATE_syntax___mmbuilder___MMMethod___default_extern_name = "mmbuilder::MMMethod::default_extern_name";
-val_t syntax___mmbuilder___MMMethod___default_extern_name(val_t p0);
-typedef val_t (*syntax___mmbuilder___MMMethod___default_extern_name_t)(val_t p0);
-static const char * const LOCATE_syntax___mmbuilder___MMMethod___friendly_extern_name = "mmbuilder::MMMethod::friendly_extern_name";
-val_t syntax___mmbuilder___MMMethod___friendly_extern_name(val_t p0, val_t p1);
-typedef val_t (*syntax___mmbuilder___MMMethod___friendly_extern_name_t)(val_t p0, val_t p1);
-val_t NEW_MMMethod_metamodel___abstractmetamodel___MMLocalProperty___init(val_t p0, val_t p1);
 static const char * const LOCATE_syntax___mmbuilder___ATypePropdef___prop = "mmbuilder::ATypePropdef::(syntax_base::ATypePropdef::prop)";
 val_t syntax___mmbuilder___ATypePropdef___prop(val_t p0);
 typedef val_t (*syntax___mmbuilder___ATypePropdef___prop_t)(val_t p0);
index dcfe80d..971214b 100644 (file)
@@ -25,21 +25,26 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 48);
   }
   fra.me.REG[2] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./syntax//scope.nit:48 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ./syntax//scope.nit:49 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* ./syntax//scope.nit:49 */
     if (UNTAG_Bool(REGB0)) {
@@ -50,40 +55,50 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 50);
       }
       fra.me.REG[2] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[2])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./syntax//scope.nit:51 */
@@ -107,7 +122,7 @@ val_t syntax___scope___ScopeContext_____bra(val_t p0, val_t p1){
       }
       /* ./syntax//scope.nit:53 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ./syntax//scope.nit:53 */
       REGB1 = REGB0;
@@ -341,36 +356,41 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
       nit_abort("Uninitialized attribute %s", "_labels", LOCATE_syntax___scope, 84);
     }
     fra.me.REG[4] = ATTR_syntax___scope___ScopeContext____labels(fra.me.REG[0]);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
         /* ./syntax//scope.nit:85 */
         REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[2]));
@@ -446,14 +466,14 @@ void syntax___scope___ScopeContext___push_escapable(val_t p0, val_t p1, val_t p2
           /* ./syntax//scope.nit:87 */
           goto label4;
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label5;
       }
     }
@@ -496,21 +516,26 @@ 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:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
   /* ./syntax//scope.nit:98 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ./syntax//scope.nit:99 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* ./syntax//scope.nit:99 */
     if (UNTAG_Bool(REGB0)) {
@@ -521,40 +546,50 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 100);
       }
       fra.me.REG[1] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./syntax//scope.nit:101 */
@@ -571,7 +606,7 @@ val_t syntax___scope___ScopeContext___head(val_t p0){
       }
       /* ./syntax//scope.nit:102 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ./syntax//scope.nit:102 */
       REGB1 = REGB0;
@@ -618,16 +653,16 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
     nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 111);
   }
   fra.me.REG[2] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./syntax//scope.nit:111 */
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ./syntax//scope.nit:112 */
   fra.me.REG[2] = CALL_parser___parser_nodes___ALabel___n_id(fra.me.REG[1])(fra.me.REG[1]);
@@ -635,7 +670,12 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
   /* ./syntax//scope.nit:113 */
   while(1) {
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:216 */
+    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:233 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>=UNTAG_Int(REGB0));
     /* ./syntax//scope.nit:113 */
     if (UNTAG_Bool(REGB0)) {
@@ -646,40 +686,50 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
         nit_abort("Uninitialized attribute %s", "_stack", LOCATE_syntax___scope, 114);
       }
       fra.me.REG[3] = ATTR_syntax___scope___ScopeContext____stack(fra.me.REG[0]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       REGB0 = REGB1;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB2));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB3 = TAG_Bool(false);
         REGB2 = REGB3;
       }
       if (UNTAG_Bool(REGB2)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./syntax//scope.nit:115 */
@@ -707,7 +757,7 @@ val_t syntax___scope___ScopeContext___get_by_label(val_t p0, val_t p1){
       }
       /* ./syntax//scope.nit:116 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:220 */
+      /* ./../lib/standard//kernel.nit:237 */
       REGB0 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB0));
       /* ./syntax//scope.nit:116 */
       REGB1 = REGB0;
index 67d3355..a8076aa 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/scope. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/scope. */
 #ifndef syntax___scope_sep
 #define syntax___scope_sep
 #include "syntax___flow._sep.h"
index ee19198..405f329 100644 (file)
@@ -17,7 +17,7 @@ void syntax___syntax_base___MMSrcModule___clear_ast(val_t p0){
   return;
 }
 val_t syntax___syntax_base___MMSrcModule___node(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -25,12 +25,15 @@ val_t syntax___syntax_base___MMSrcModule___node(val_t p0){
   fra.me.line = 34;
   fra.me.meth = LOCATE_syntax___syntax_base___MMSrcModule___node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:34 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:35 */
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
+  fra.me.REG[1] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AModule, ID_parser___parser_nodes___AModule)) /*cast AModule*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 35);
@@ -38,7 +41,7 @@ val_t syntax___syntax_base___MMSrcModule___node(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___syntax_base___MMSrcModule___src_local_classes(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -280,7 +283,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//syntax_base.nit:71 */
     REGB2 = REGB1;
@@ -295,7 +298,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./syntax//syntax_base.nit:73 */
       REGB3 = REGB1;
@@ -303,7 +306,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
     if (UNTAG_Bool(REGB3)) {
       /* ./syntax//syntax_base.nit:74 */
       REGB3 = TAG_Int(5);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
+      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB3);
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Class ");
         REGB3 = TAG_Int(24);
@@ -312,9 +315,9 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
       fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       fra.me.REG[5] = CALL_standard___string___Object___to_s(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[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB3 = TAG_Int(30);
@@ -323,20 +326,20 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
       fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[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[4])(fra.me.REG[4], fra.me.REG[3]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+      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[3])(fra.me.REG[3], fra.me.REG[4]);
       if (!once_value_4) {
-        fra.me.REG[3] = BOX_NativeString(".");
+        fra.me.REG[4] = BOX_NativeString(".");
         REGB3 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB3);
-        once_value_4 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB3);
+        once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
-      } else fra.me.REG[3] = once_value_4;
-      fra.me.REG[3] = fra.me.REG[3];
-      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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[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]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
       /* ./syntax//syntax_base.nit:75 */
       REGB3 = TAG_Bool(false);
       REGB2 = REGB3;
@@ -345,24 +348,29 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
       /* ./syntax//syntax_base.nit:76 */
       REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       REGB1 = TAG_Int(3);
-      /* ./../lib/standard//kernel.nit:216 */
+      REGB0 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB3), VTID_standard___kernel___Comparable___OTHER(REGB3))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB0)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:233 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB1));
       /* ./syntax//syntax_base.nit:76 */
       if (UNTAG_Bool(REGB1)) {
         /* ./syntax//syntax_base.nit:77 */
         REGB1 = TAG_Int(3);
-        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+        fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_5) {
-          fra.me.REG[3] = BOX_NativeString("Visibility error: Class ");
+          fra.me.REG[4] = BOX_NativeString("Visibility error: Class ");
           REGB1 = TAG_Int(24);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-          once_value_5 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+          once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
-        } else fra.me.REG[3] = once_value_5;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        } else fra.me.REG[4] = once_value_5;
+        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[0] = CALL_standard___string___Object___to_s(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]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
         if (!once_value_6) {
           fra.me.REG[0] = BOX_NativeString(" is private.");
           REGB1 = TAG_Int(12);
@@ -371,9 +379,9 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
           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]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+        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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
         /* ./syntax//syntax_base.nit:78 */
         REGB1 = TAG_Bool(false);
         REGB2 = REGB1;
@@ -390,7 +398,7 @@ val_t syntax___syntax_base___MMGlobalClass___check_visibility(val_t p0, val_t p1
   return REGB2;
 }
 val_t syntax___syntax_base___MMSrcLocalClass___node(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -398,14 +406,17 @@ val_t syntax___syntax_base___MMSrcLocalClass___node(val_t p0){
   fra.me.line = 87;
   fra.me.meth = LOCATE_syntax___syntax_base___MMSrcLocalClass___node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:87 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:88 */
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]==NIT_NULL) || VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AClassdef, ID_parser___parser_nodes___AClassdef)) /*cast nullable AClassdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 88);
@@ -413,7 +424,7 @@ val_t syntax___syntax_base___MMSrcLocalClass___node(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___syntax_base___MMSrcLocalClass___formal_dict(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -542,7 +553,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB2 = TAG_Bool((REGB1)==(REGB2));
     /* ./syntax//syntax_base.nit:110 */
     REGB3 = REGB2;
@@ -557,7 +568,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
       /* ./syntax//syntax_base.nit:112 */
       REGB4 = REGB2;
@@ -565,7 +576,7 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
     if (UNTAG_Bool(REGB4)) {
       /* ./syntax//syntax_base.nit:114 */
       REGB4 = TAG_Int(5);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
+      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB4);
       if (!once_value_2) {
         fra.me.REG[5] = BOX_NativeString("Visibility error: Property ");
         REGB4 = TAG_Int(27);
@@ -574,9 +585,9 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         register_static_object(&once_value_2);
       } else fra.me.REG[5] = once_value_2;
       fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       fra.me.REG[5] = CALL_standard___string___Object___to_s(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[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       if (!once_value_3) {
         fra.me.REG[5] = BOX_NativeString(" comes from the hidden module ");
         REGB4 = TAG_Int(30);
@@ -585,20 +596,20 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         register_static_object(&once_value_3);
       } else fra.me.REG[5] = once_value_3;
       fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[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[4])(fra.me.REG[4], fra.me.REG[3]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+      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[3])(fra.me.REG[3], fra.me.REG[4]);
       if (!once_value_4) {
-        fra.me.REG[3] = BOX_NativeString(".");
+        fra.me.REG[4] = BOX_NativeString(".");
         REGB4 = TAG_Int(1);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB4);
-        once_value_4 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB4);
+        once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
-      } else fra.me.REG[3] = once_value_4;
-      fra.me.REG[3] = fra.me.REG[3];
-      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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[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]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
       /* ./syntax//syntax_base.nit:115 */
       REGB4 = TAG_Bool(false);
       REGB3 = REGB4;
@@ -607,35 +618,40 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
       /* ./syntax//syntax_base.nit:116 */
       REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
       REGB2 = TAG_Int(3);
-      /* ./../lib/standard//kernel.nit:216 */
+      REGB1 = TAG_Bool(VAL_ISA(REGB2, VTCOLOR_standard___kernel___Comparable___OTHER(REGB4), VTID_standard___kernel___Comparable___OTHER(REGB4))) /*cast OTHER*/;
+      if (UNTAG_Bool(REGB1)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:233 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB4)>=UNTAG_Int(REGB2));
       /* ./syntax//syntax_base.nit:116 */
       if (UNTAG_Bool(REGB2)) {
         /* ./syntax//syntax_base.nit:117 */
         REGB2 = TAG_Int(3);
-        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_5) {
-          fra.me.REG[3] = BOX_NativeString("Visibility error: Property ");
+          fra.me.REG[4] = BOX_NativeString("Visibility error: Property ");
           REGB2 = TAG_Int(27);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-          once_value_5 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
-        } else fra.me.REG[3] = once_value_5;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-        fra.me.REG[3] = CALL_standard___string___Object___to_s(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[3]);
+        } else fra.me.REG[4] = once_value_5;
+        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[4] = CALL_standard___string___Object___to_s(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[4]);
         if (!once_value_6) {
-          fra.me.REG[3] = BOX_NativeString(" is private.");
+          fra.me.REG[4] = BOX_NativeString(" is private.");
           REGB2 = TAG_Int(12);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
-          once_value_6 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+          once_value_6 = fra.me.REG[4];
           register_static_object(&once_value_6);
-        } else fra.me.REG[3] = once_value_6;
-        fra.me.REG[3] = fra.me.REG[3];
-        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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+        } else fra.me.REG[4] = once_value_6;
+        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]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
         /* ./syntax//syntax_base.nit:118 */
         REGB2 = TAG_Bool(false);
         REGB3 = REGB2;
@@ -644,7 +660,12 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         /* ./syntax//syntax_base.nit:119 */
         REGB2 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___visibility_level(fra.me.REG[0])(fra.me.REG[0]);
         REGB4 = TAG_Int(2);
-        /* ./../lib/standard//kernel.nit:216 */
+        REGB1 = TAG_Bool(VAL_ISA(REGB4, 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:233 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB4));
         /* ./syntax//syntax_base.nit:119 */
         if (UNTAG_Bool(REGB4)) {
@@ -656,18 +677,18 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
         if (UNTAG_Bool(REGB0)) {
           /* ./syntax//syntax_base.nit:120 */
           REGB0 = TAG_Int(3);
-          fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+          fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
           if (!once_value_7) {
-            fra.me.REG[3] = BOX_NativeString("Visibility error: Property ");
+            fra.me.REG[4] = BOX_NativeString("Visibility error: Property ");
             REGB0 = TAG_Int(27);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-            once_value_7 = fra.me.REG[3];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+            once_value_7 = fra.me.REG[4];
             register_static_object(&once_value_7);
-          } else fra.me.REG[3] = once_value_7;
-          fra.me.REG[3] = fra.me.REG[3];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+          } 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]);
           fra.me.REG[0] = CALL_standard___string___Object___to_s(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]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
           if (!once_value_8) {
             fra.me.REG[0] = BOX_NativeString(" is protected and can only acceded by self.");
             REGB0 = TAG_Int(43);
@@ -676,9 +697,9 @@ val_t syntax___syntax_base___MMGlobalProperty___check_visibility(val_t p0, val_t
             register_static_object(&once_value_8);
           } else fra.me.REG[0] = once_value_8;
           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]);
-          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+          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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
           /* ./syntax//syntax_base.nit:121 */
           REGB0 = TAG_Bool(false);
           REGB3 = REGB0;
@@ -733,7 +754,7 @@ val_t syntax___syntax_base___MMLocalProperty___is_init(val_t p0){
   return REGB0;
 }
 val_t syntax___syntax_base___MMSrcAttribute___node(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -741,14 +762,16 @@ val_t syntax___syntax_base___MMSrcAttribute___node(val_t p0){
   fra.me.line = 138;
   fra.me.meth = LOCATE_syntax___syntax_base___MMSrcAttribute___node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//syntax_base.nit:138 */
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast nullable AAttrPropdef*/;
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]==NIT_NULL) || VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast nullable AAttrPropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 138);
@@ -756,7 +779,7 @@ val_t syntax___syntax_base___MMSrcAttribute___node(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___syntax_base___MMSrcAttribute___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos2 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___syntax_base___MMSrcAttribute].i;
@@ -865,7 +888,7 @@ val_t syntax___syntax_base___MMSrcMethod___extern_name(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___syntax_base___MMAttrImplementationMethod___node(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -873,14 +896,16 @@ val_t syntax___syntax_base___MMAttrImplementationMethod___node(val_t p0){
   fra.me.line = 158;
   fra.me.meth = LOCATE_syntax___syntax_base___MMAttrImplementationMethod___node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//syntax_base.nit:158 */
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast nullable AAttrPropdef*/;
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]==NIT_NULL) || VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AAttrPropdef, ID_parser___parser_nodes___AAttrPropdef)) /*cast nullable AAttrPropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 158);
@@ -888,7 +913,7 @@ val_t syntax___syntax_base___MMAttrImplementationMethod___node(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___syntax_base___MMAttrImplementationMethod___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos3 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___syntax_base___MMAttrImplementationMethod].i;
@@ -1138,7 +1163,7 @@ val_t syntax___syntax_base___MMMethSrcMethod___explicit_imports(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___syntax_base___MMMethSrcMethod___node(val_t p0){
-  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 tmp;
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -1146,14 +1171,16 @@ val_t syntax___syntax_base___MMMethSrcMethod___node(val_t p0){
   fra.me.line = 194;
   fra.me.meth = LOCATE_syntax___syntax_base___MMMethSrcMethod___node;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 2;
+  fra.me.REG_size = 3;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
+  fra.me.REG[2] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//syntax_base.nit:194 */
-  fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]==NIT_NULL) || VAL_ISA(fra.me.REG[0], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast nullable AMethPropdef*/;
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___MMModule___nodes(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]==NIT_NULL) || VAL_ISA(fra.me.REG[1], COLOR_parser___parser_nodes___AMethPropdef, ID_parser___parser_nodes___AMethPropdef)) /*cast nullable AMethPropdef*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 194);
@@ -1161,7 +1188,7 @@ val_t syntax___syntax_base___MMMethSrcMethod___node(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___syntax_base___MMMethSrcMethod___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
   int itpos6 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_syntax___syntax_base___MMMethSrcMethod].i;
@@ -2423,7 +2450,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___mmmodule(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___syntax_base___AbsSyntaxVisitor___local_class(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2431,12 +2458,15 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___local_class(val_t p0){
   fra.me.line = 391;
   fra.me.meth = LOCATE_syntax___syntax_base___AbsSyntaxVisitor___local_class;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:391 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:392 */
-  fra.me.REG[0] = ATTR_syntax___syntax_base___AbsSyntaxVisitor____local_class(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___syntax_base___AbsSyntaxVisitor____local_class(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 392);
@@ -2444,7 +2474,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___local_class(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2465,7 +2495,7 @@ void syntax___syntax_base___AbsSyntaxVisitor___local_class__eq(val_t p0, val_t p
   return;
 }
 val_t syntax___syntax_base___AbsSyntaxVisitor___local_property(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2473,12 +2503,15 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___local_property(val_t p0){
   fra.me.line = 395;
   fra.me.meth = LOCATE_syntax___syntax_base___AbsSyntaxVisitor___local_property;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//syntax_base.nit:395 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//syntax_base.nit:396 */
-  fra.me.REG[0] = ATTR_syntax___syntax_base___AbsSyntaxVisitor____local_property(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___syntax_base___AbsSyntaxVisitor____local_property(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___syntax_base, 396);
@@ -2486,7 +2519,7 @@ val_t syntax___syntax_base___AbsSyntaxVisitor___local_property(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___syntax_base___AbsSyntaxVisitor___local_property__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2829,7 +2862,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./syntax//syntax_base.nit:439 */
       REGB2 = REGB1;
@@ -3057,7 +3090,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:178 */
+        /* ./../lib/standard//kernel.nit:195 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* ./syntax//syntax_base.nit:476 */
         REGB2 = REGB1;
@@ -3814,7 +3847,12 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     fra.me.REG[5] = CALL_parser___parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
     REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
     /* ./syntax//syntax_base.nit:637 */
     if (UNTAG_Bool(REGB1)) {
@@ -3886,7 +3924,12 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
     fra.me.REG[6] = CALL_parser___parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
     /* ./syntax//syntax_base.nit:648 */
     if (UNTAG_Bool(REGB0)) {
@@ -4029,7 +4072,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB1)==(REGB0));
     /* ./syntax//syntax_base.nit:666 */
     REGB2 = REGB1;
@@ -4041,7 +4084,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB0)==(REGB2));
       /* ./syntax//syntax_base.nit:667 */
       REGB1 = REGB2;
@@ -4083,7 +4126,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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB2 = TAG_Bool((REGB1)==(REGB2));
         /* ./syntax//syntax_base.nit:669 */
         REGB3 = REGB2;
@@ -4175,7 +4218,12 @@ val_t syntax___syntax_base___AType___get_unchecked_stype(val_t p0, val_t p1){
   }
   /* ./syntax//syntax_base.nit:677 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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:234 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB3));
   /* ./syntax//syntax_base.nit:677 */
   if (UNTAG_Bool(REGB3)) {
@@ -4386,23 +4434,33 @@ void syntax___syntax_base___AType___check_conform(val_t p0, val_t p1){
   REGB0 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[4])(fra.me.REG[4]);
   /* ./syntax//syntax_base.nit:713 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   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:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     while(1) {
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       if (UNTAG_Bool(REGB2)) {
         /* ./syntax//syntax_base.nit:714 */
         REGB2 = REGB1;
         /* ./syntax//syntax_base.nit:715 */
         fra.me.REG[4] = CALL_parser___parser_nodes___AType___n_types(fra.me.REG[0])(fra.me.REG[0]);
-        fra.me.REG[4] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
+        fra.me.REG[4] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[4])(fra.me.REG[4], REGB2);
         /* ./syntax//syntax_base.nit:716 */
         fra.me.REG[5] = CALL_syntax___syntax_base___AType___get_stype(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
         /* ./syntax//syntax_base.nit:717 */
@@ -4420,14 +4478,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:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB2 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-        /* ./../lib/standard//kernel.nit:337 */
+        /* ./../lib/standard//kernel.nit:354 */
         REGB1 = REGB2;
       } else {
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         goto label2;
       }
     }
index 4f283a3..af09278 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/syntax_base. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/syntax_base. */
 #ifndef syntax___syntax_base_sep
 #define syntax___syntax_base_sep
 #include "parser._sep.h"
index 9dcb3bf..9d37b8f 100644 (file)
@@ -83,7 +83,7 @@ val_t syntax___typing___TypingVisitor___scope_ctx(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -91,12 +91,15 @@ val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
   fra.me.line = 49;
   fra.me.meth = LOCATE_syntax___typing___TypingVisitor___flow_ctx;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:49 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:50 */
-  fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____flow_ctx(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 50);
@@ -104,7 +107,7 @@ val_t syntax___typing___TypingVisitor___flow_ctx(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___TypingVisitor___flow_ctx__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -219,7 +222,7 @@ void syntax___typing___TypingVisitor___enter_visit_block(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -227,12 +230,15 @@ val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
   fra.me.line = 75;
   fra.me.meth = LOCATE_syntax___typing___TypingVisitor___base_flow_ctx;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:75 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:76 */
-  fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____base_flow_ctx(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 76);
@@ -240,7 +246,7 @@ val_t syntax___typing___TypingVisitor___base_flow_ctx(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -261,7 +267,7 @@ void syntax___typing___TypingVisitor___base_flow_ctx__eq(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___TypingVisitor___self_var(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -269,12 +275,15 @@ val_t syntax___typing___TypingVisitor___self_var(val_t p0){
   fra.me.line = 79;
   fra.me.meth = LOCATE_syntax___typing___TypingVisitor___self_var;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:79 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:80 */
-  fra.me.REG[0] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___TypingVisitor____self_var(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 80);
@@ -282,7 +291,7 @@ val_t syntax___typing___TypingVisitor___self_var(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___TypingVisitor___self_var__eq(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -588,7 +597,7 @@ void syntax___typing___TypingVisitor___init(val_t p0, val_t p1, val_t p2, int* i
   return;
 }
 val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, val_t p1, val_t p2, val_t p3){
-  struct {struct stack_frame_t me; val_t MORE_REG[10];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[11];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -614,7 +623,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
   fra.me.line = 114;
   fra.me.meth = LOCATE_syntax___typing___TypingVisitor___get_default_constructor_for;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 11;
+  fra.me.REG_size = 12;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -626,269 +635,294 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
   fra.me.REG[8] = NIT_NULL;
   fra.me.REG[9] = NIT_NULL;
   fra.me.REG[10] = NIT_NULL;
+  fra.me.REG[11] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
   fra.me.REG[3] = p3;
+  /* ./syntax//typing.nit:114 */
+  fra.me.REG[4] = fra.me.REG[0];
+  /* ./syntax//typing.nit:116 */
+  fra.me.REG[5] = fra.me.REG[4];
   /* ./syntax//typing.nit:119 */
-  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+  fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
   /* ./syntax//typing.nit:120 */
-  fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
+  fra.me.REG[7] = NEW_Array_standard___collection___array___Array___init();
   /* ./syntax//typing.nit:121 */
-  fra.me.REG[6] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
-  REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+  fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
+  REGB0 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 121);
   }
-  REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[6])(fra.me.REG[6]);
-  fra.me.REG[6] = REGB0;
+  REGB0 = CALL_metamodel___static_type___MMSignature___arity(fra.me.REG[8])(fra.me.REG[8]);
+  fra.me.REG[8] = REGB0;
   /* ./syntax//typing.nit:122 */
-  fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
-  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[7])(fra.me.REG[7], (&(fra.me)), ((fun_t)OC_syntax___typing___TypingVisitor___get_default_constructor_for_1));
+  fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalClass___global_properties(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___Collection___iterate(fra.me.REG[9])(fra.me.REG[9], (&(fra.me)), ((fun_t)OC_syntax___typing___TypingVisitor___get_default_constructor_for_1));
   switch ((&(fra.me))->has_broke) {
     case 0: break;
     case 1: (&(fra.me))->has_broke = 0; goto label5;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
-  REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+  /* ./../lib/standard//collection//array.nit:24 */
+  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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
-  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+  REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
   /* ./syntax//typing.nit:141 */
   REGB1 = TAG_Int(1);
   REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
   if (UNTAG_Bool(REGB2)) {
   } else {
-    /* ./../lib/standard//kernel.nit:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//typing.nit:141 */
     REGB2 = REGB1;
   }
   if (UNTAG_Bool(REGB2)) {
     /* ./syntax//typing.nit:142 */
-    fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
-    fra.me.REG[7] = fra.me.REG[3];
+    fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[6])(fra.me.REG[6]);
+    fra.me.REG[9] = fra.me.REG[3];
     goto label5;
   } else {
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:24 */
+    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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+    REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
     /* ./syntax//typing.nit:143 */
     REGB1 = TAG_Int(0);
-    /* ./../lib/standard//kernel.nit:217 */
+    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:234 */
     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:234 */
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB1 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
-      REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:270 */
+      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, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
-      REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:236 */
-      fra.me.REG[6] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      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 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
-        REGB2 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:24 */
+        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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
-        REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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*/;
+        if (UNTAG_Bool(REGB0)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB2)) {
-          /* ./../lib/standard//collection//array.nit:238 */
-          REGB2 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:273 */
+          REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
-          fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB1)];
+          /* ./../lib/standard//collection//array.nit:718 */
+          fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
           /* ./syntax//typing.nit:146 */
           REGB2 = TAG_Int(5);
-          fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+          fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
           if (!once_value_6) {
-            fra.me.REG[10] = BOX_NativeString("");
+            fra.me.REG[11] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB2);
-            once_value_6 = fra.me.REG[10];
+            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
+            once_value_6 = fra.me.REG[11];
             register_static_object(&once_value_6);
-          } else fra.me.REG[10] = once_value_6;
-          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]);
-          fra.me.REG[10] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[8])(fra.me.REG[8]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[10]);
+          } else fra.me.REG[11] = once_value_6;
+          fra.me.REG[11] = fra.me.REG[11];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+          fra.me.REG[11] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[4])(fra.me.REG[4]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
           if (!once_value_7) {
-            fra.me.REG[10] = BOX_NativeString("");
+            fra.me.REG[11] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[10] = NEW_String_standard___string___String___with_native(fra.me.REG[10], REGB2);
-            once_value_7 = fra.me.REG[10];
+            fra.me.REG[11] = NEW_String_standard___string___String___with_native(fra.me.REG[11], REGB2);
+            once_value_7 = fra.me.REG[11];
             register_static_object(&once_value_7);
-          } else fra.me.REG[10] = once_value_7;
-          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]);
-          fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
-          REGB2 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_metamodel___static_type___MMSignature, ID_metamodel___static_type___MMSignature)) /*cast MMSignature*/;
+          } else fra.me.REG[11] = once_value_7;
+          fra.me.REG[11] = fra.me.REG[11];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[11]);
+          fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[4])(fra.me.REG[4]);
+          REGB2 = 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(REGB2)) {
           } else {
             nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 146);
           }
-          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[9])(fra.me.REG[9], 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[10])(fra.me.REG[10], fra.me.REG[4]);
           if (!once_value_8) {
-            fra.me.REG[8] = BOX_NativeString("");
+            fra.me.REG[4] = BOX_NativeString("");
             REGB2 = TAG_Int(0);
-            fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB2);
-            once_value_8 = fra.me.REG[8];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+            once_value_8 = fra.me.REG[4];
             register_static_object(&once_value_8);
-          } else fra.me.REG[8] = once_value_8;
-          fra.me.REG[8] = fra.me.REG[8];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
-          fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[9]);
-          /* ./../lib/standard//collection//array.nit:239 */
+          } else fra.me.REG[4] = once_value_8;
+          fra.me.REG[4] = fra.me.REG[4];
+          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 */
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = REGB2;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label9;
         }
       }
       label9: while(0);
       /* ./syntax//typing.nit:148 */
       REGB1 = TAG_Int(5);
-      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_10) {
-        fra.me.REG[4] = BOX_NativeString("Error: Conflicting default constructor to call for ");
+        fra.me.REG[6] = BOX_NativeString("Error: Conflicting default constructor to call for ");
         REGB1 = TAG_Int(51);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_10 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_10 = fra.me.REG[6];
         register_static_object(&once_value_10);
-      } else fra.me.REG[4] = once_value_10;
-      fra.me.REG[4] = fra.me.REG[4];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-      fra.me.REG[4] = CALL_standard___string___Object___to_s(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[4]);
+      } 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[8])(fra.me.REG[8], fra.me.REG[6]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
       if (!once_value_11) {
-        fra.me.REG[4] = BOX_NativeString(": ");
+        fra.me.REG[6] = BOX_NativeString(": ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_11 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_11 = fra.me.REG[6];
         register_static_object(&once_value_11);
-      } else fra.me.REG[4] = once_value_11;
-      fra.me.REG[4] = fra.me.REG[4];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      } else fra.me.REG[6] = once_value_11;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
       if (!once_value_12) {
-        fra.me.REG[4] = BOX_NativeString(", ");
+        fra.me.REG[6] = BOX_NativeString(", ");
         REGB1 = TAG_Int(2);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_12 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_12 = fra.me.REG[6];
         register_static_object(&once_value_12);
-      } else fra.me.REG[4] = once_value_12;
-      fra.me.REG[4] = fra.me.REG[4];
-      fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+      } else fra.me.REG[6] = once_value_12;
+      fra.me.REG[6] = fra.me.REG[6];
+      fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
       if (!once_value_13) {
-        fra.me.REG[4] = BOX_NativeString(".");
+        fra.me.REG[6] = BOX_NativeString(".");
         REGB1 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
-        once_value_13 = fra.me.REG[4];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_13 = fra.me.REG[6];
         register_static_object(&once_value_13);
-      } else fra.me.REG[4] = once_value_13;
-      fra.me.REG[4] = fra.me.REG[4];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
-      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[6]);
+      } else fra.me.REG[6] = once_value_13;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
+      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[8]);
       /* ./syntax//typing.nit:149 */
-      fra.me.REG[7] = NIT_NULL;
+      fra.me.REG[9] = NIT_NULL;
       goto label5;
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:24 */
+      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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
+      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
       /* ./syntax//typing.nit:150 */
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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:234 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
       /* ./syntax//typing.nit:150 */
       if (UNTAG_Bool(REGB2)) {
         /* ./syntax//typing.nit:151 */
-        fra.me.REG[6] = NEW_Array_standard___collection___array___Array___init();
-        /* ./../lib/standard//collection//array.nit:234 */
+        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:235 */
-        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:270 */
+        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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        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 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:24 */
+          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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/standard//kernel.nit:215 */
+          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
+          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:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
-            REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+            /* ./../lib/standard//collection//array.nit:273 */
+            REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
-            fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
+            /* ./../lib/standard//collection//array.nit:718 */
+            fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB2)];
             /* ./syntax//typing.nit:153 */
             REGB1 = TAG_Int(5);
-            fra.me.REG[9] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+            fra.me.REG[10] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_14) {
-              fra.me.REG[8] = BOX_NativeString("");
+              fra.me.REG[4] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_14 = fra.me.REG[8];
+              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+              once_value_14 = fra.me.REG[4];
               register_static_object(&once_value_14);
-            } else fra.me.REG[8] = once_value_14;
-            fra.me.REG[8] = fra.me.REG[8];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
-            fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+            } else fra.me.REG[4] = once_value_14;
+            fra.me.REG[4] = fra.me.REG[4];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
+            fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___full_name(fra.me.REG[3])(fra.me.REG[3]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
             if (!once_value_15) {
-              fra.me.REG[8] = BOX_NativeString("");
+              fra.me.REG[4] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_15 = fra.me.REG[8];
+              fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+              once_value_15 = fra.me.REG[4];
               register_static_object(&once_value_15);
-            } else fra.me.REG[8] = once_value_15;
-            fra.me.REG[8] = fra.me.REG[8];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
+            } else fra.me.REG[4] = once_value_15;
+            fra.me.REG[4] = fra.me.REG[4];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[4]);
             fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[3])(fra.me.REG[3]);
             REGB1 = 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(REGB1)) {
@@ -896,7 +930,7 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
               nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 153);
             }
             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[9])(fra.me.REG[9], fra.me.REG[3]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[10])(fra.me.REG[10], fra.me.REG[3]);
             if (!once_value_16) {
               fra.me.REG[3] = BOX_NativeString("");
               REGB1 = TAG_Int(0);
@@ -905,83 +939,83 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
               register_static_object(&once_value_16);
             } else fra.me.REG[3] = once_value_16;
             fra.me.REG[3] = fra.me.REG[3];
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[3]);
-            fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[9]);
-            /* ./../lib/standard//collection//array.nit:239 */
+            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 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB2 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label17;
           }
         }
         label17: while(0);
         /* ./syntax//typing.nit:155 */
         REGB2 = TAG_Int(5);
-        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_18) {
-          fra.me.REG[5] = BOX_NativeString("Error: there is no available compatible constructor in ");
+          fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
           REGB2 = TAG_Int(55);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_18 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          once_value_18 = fra.me.REG[6];
           register_static_object(&once_value_18);
-        } else fra.me.REG[5] = once_value_18;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-        fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        } else fra.me.REG[6] = once_value_18;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+        fra.me.REG[6] = 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[6]);
         if (!once_value_19) {
-          fra.me.REG[5] = BOX_NativeString(". Discarded candidates are ");
+          fra.me.REG[6] = BOX_NativeString(". Discarded candidates are ");
           REGB2 = TAG_Int(27);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_19 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          once_value_19 = fra.me.REG[6];
           register_static_object(&once_value_19);
-        } else fra.me.REG[5] = once_value_19;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        } else fra.me.REG[6] = once_value_19;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
         if (!once_value_20) {
-          fra.me.REG[5] = BOX_NativeString(", ");
+          fra.me.REG[6] = BOX_NativeString(", ");
           REGB2 = TAG_Int(2);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_20 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          once_value_20 = fra.me.REG[6];
           register_static_object(&once_value_20);
-        } else fra.me.REG[5] = once_value_20;
-        fra.me.REG[5] = fra.me.REG[5];
-        fra.me.REG[5] = CALL_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        } else fra.me.REG[6] = once_value_20;
+        fra.me.REG[6] = fra.me.REG[6];
+        fra.me.REG[6] = CALL_standard___string___Collection___join(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[6]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
         if (!once_value_21) {
-          fra.me.REG[5] = BOX_NativeString(".");
+          fra.me.REG[6] = BOX_NativeString(".");
           REGB2 = TAG_Int(1);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_21 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          once_value_21 = fra.me.REG[6];
           register_static_object(&once_value_21);
-        } else fra.me.REG[5] = once_value_21;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-        fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
+        } else fra.me.REG[6] = once_value_21;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
+        fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
         /* ./syntax//typing.nit:156 */
-        fra.me.REG[7] = NIT_NULL;
+        fra.me.REG[9] = NIT_NULL;
         goto label5;
       } else {
         /* ./syntax//typing.nit:158 */
         REGB2 = TAG_Int(3);
-        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+        fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
         if (!once_value_22) {
-          fra.me.REG[5] = BOX_NativeString("Error: there is no available compatible constructor in ");
+          fra.me.REG[6] = BOX_NativeString("Error: there is no available compatible constructor in ");
           REGB2 = TAG_Int(55);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB2);
-          once_value_22 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB2);
+          once_value_22 = fra.me.REG[6];
           register_static_object(&once_value_22);
-        } else fra.me.REG[5] = once_value_22;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+        } else fra.me.REG[6] = once_value_22;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[6]);
         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[4])(fra.me.REG[4], fra.me.REG[2]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
         if (!once_value_23) {
           fra.me.REG[2] = BOX_NativeString(".");
           REGB2 = TAG_Int(1);
@@ -990,18 +1024,18 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
           register_static_object(&once_value_23);
         } else fra.me.REG[2] = once_value_23;
         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[2]);
-        fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+        fra.me.REG[0] = CALL_standard___string___Object___to_s(fra.me.REG[0])(fra.me.REG[0]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1], fra.me.REG[0]);
         /* ./syntax//typing.nit:159 */
-        fra.me.REG[7] = NIT_NULL;
+        fra.me.REG[9] = NIT_NULL;
         goto label5;
       }
     }
   }
   label5: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[7];
+  return fra.me.REG[9];
 }
   void OC_syntax___typing___TypingVisitor___get_default_constructor_for_1(struct stack_frame_t *closctx, val_t p0, struct stack_frame_t *closctx_param, fun_t clos_fun0){
     struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -1061,7 +1095,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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((REGB0)==(REGB1));
         /* ./syntax//typing.nit:129 */
         REGB2 = REGB1;
@@ -1069,11 +1103,11 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(true);
       } else {
-        REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[6],REGB0));
+        REGB1 = TAG_Bool(IS_EQUAL_OO(closctx->REG[8],REGB0));
         if (UNTAG_Bool(REGB1)) {
         } else {
-          /* ./../lib/standard//kernel.nit:210 */
-          REGB3 = TAG_Bool((closctx->REG[6])==(REGB0));
+          /* ./../lib/standard//kernel.nit:227 */
+          REGB3 = TAG_Bool((closctx->REG[8])==(REGB0));
           /* ./syntax//typing.nit:129 */
           REGB1 = REGB3;
         }
@@ -1092,12 +1126,12 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       }
       if (UNTAG_Bool(REGB2)) {
         /* ./syntax//typing.nit:130 */
-        closctx->REG[7] = fra.me.REG[0];
+        closctx->REG[9] = fra.me.REG[0];
         closctx->has_broke = 1;
         goto label2;
       } else {
         /* ./syntax//typing.nit:132 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
       }
     } else {
       /* ./syntax//typing.nit:134 */
@@ -1105,7 +1139,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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB2 = TAG_Bool((REGB0)==(REGB2));
         /* ./syntax//typing.nit:134 */
         REGB1 = REGB2;
@@ -1138,12 +1172,12 @@ val_t syntax___typing___TypingVisitor___get_default_constructor_for(val_t p0, va
       }
       if (UNTAG_Bool(REGB1)) {
         /* ./syntax//typing.nit:135 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[4])(closctx->REG[4], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[6])(closctx->REG[6], fra.me.REG[0]);
         /* ./syntax//typing.nit:136 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
       } else {
         /* ./syntax//typing.nit:138 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[5])(closctx->REG[5], fra.me.REG[0]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[7])(closctx->REG[7], fra.me.REG[0]);
       }
     }
     label2: while(0);
@@ -1230,7 +1264,7 @@ void syntax___typing___AClassdef___accept_typing(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___APropdef___self_var(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -1238,12 +1272,14 @@ val_t syntax___typing___APropdef___self_var(val_t p0){
   fra.me.line = 186;
   fra.me.meth = LOCATE_syntax___typing___APropdef___self_var;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:186 */
-  fra.me.REG[0] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___APropdef____self_var(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 186);
@@ -1251,7 +1287,7 @@ val_t syntax___typing___APropdef___self_var(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AAttrPropdef___accept_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -1472,7 +1508,7 @@ void syntax___typing___AConcreteInitPropdef___accept_typing(val_t p0, val_t p1){
   return;
 }
 void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -1485,7 +1521,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
   fra.me.line = 238;
   fra.me.meth = LOCATE_syntax___typing___AConcreteInitPropdef___after_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -1493,6 +1529,7 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./syntax//typing.nit:238 */
@@ -1508,11 +1545,11 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
     fra.me.REG[1] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[1])(fra.me.REG[1]);
     fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[0] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-    REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[0]));
+    fra.me.REG[4] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+    REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[1],fra.me.REG[4]));
     if (UNTAG_Bool(REGB1)) {
     } else {
-      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+      REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4]);
       REGB1 = REGB2;
     }
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
@@ -1523,160 +1560,190 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
     /* ./syntax//typing.nit:244 */
     REGB0 = TAG_Int(0);
     /* ./syntax//typing.nit:245 */
-    fra.me.REG[0] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:23 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0])!=NIT_NULL);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
+    /* ./../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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
+    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     /* ./syntax//typing.nit:246 */
-    fra.me.REG[0] = NIT_NULL;
+    fra.me.REG[4] = NIT_NULL;
     /* ./syntax//typing.nit:247 */
     fra.me.REG[1] = NIT_NULL;
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
     /* ./syntax//typing.nit:248 */
     if (UNTAG_Bool(REGB2)) {
       /* ./syntax//typing.nit:249 */
-      fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-      /* ./../lib/standard//collection//array.nit:243 */
+      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 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB3 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB3));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       if (UNTAG_Bool(REGB3)) {
-        REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+        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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
-        REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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*/;
+        if (UNTAG_Bool(REGB4)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+        }
+        /* ./../lib/standard//kernel.nit:232 */
         REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Bool(false);
         REGB3 = REGB4;
       }
       if (UNTAG_Bool(REGB3)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
-      fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-      REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:281 */
+      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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
-      fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB2)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:718 */
+      fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB2)];
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label1;
       label1: while(0);
       /* ./syntax//typing.nit:249 */
-      fra.me.REG[0] = fra.me.REG[4];
+      fra.me.REG[4] = fra.me.REG[5];
       /* ./syntax//typing.nit:250 */
-      REGB2 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+      REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
         nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 250);
       }
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
-      fra.me.REG[1] = fra.me.REG[5];
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+      fra.me.REG[1] = fra.me.REG[6];
     }
     /* ./syntax//typing.nit:252 */
     REGB2 = TAG_Int(0);
     /* ./syntax//typing.nit:253 */
     while(1) {
-      fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(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:23 */
-      REGB3 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+      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:24 */
+      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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+      }
+      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*/;
+      if (UNTAG_Bool(REGB4)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
       }
-      REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-      /* ./../lib/standard//kernel.nit:215 */
+      /* ./../lib/standard//kernel.nit:232 */
       REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB3));
       /* ./syntax//typing.nit:253 */
       if (UNTAG_Bool(REGB3)) {
         /* ./syntax//typing.nit:254 */
-        fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[3])(fra.me.REG[3]);
-        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(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:243 */
+        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 */
         REGB3 = REGB2;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB4 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         if (UNTAG_Bool(REGB4)) {
-          REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5])!=NIT_NULL);
+          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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+          }
+          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*/;
+          if (UNTAG_Bool(REGB5)) {
+          } else {
+            nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
           }
-          REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-          /* ./../lib/standard//kernel.nit:215 */
+          /* ./../lib/standard//kernel.nit:232 */
           REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB5 = TAG_Bool(false);
           REGB4 = REGB5;
         }
         if (UNTAG_Bool(REGB4)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
-        fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[5]);
-        REGB4 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:281 */
+        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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB3)];
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label2;
         label2: while(0);
         /* ./syntax//typing.nit:255 */
-        fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-        REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[4])(fra.me.REG[4]);
+        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
+        REGB3 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_interface(fra.me.REG[5])(fra.me.REG[5]);
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(true);
         } else {
-          fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[4])(fra.me.REG[4]);
+          fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
+          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_enum(fra.me.REG[5])(fra.me.REG[5]);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(true);
         } else {
-          fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[4])(fra.me.REG[4]);
+          fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
+          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_extern(fra.me.REG[5])(fra.me.REG[5]);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
           REGB3 = TAG_Bool(true);
         } else {
-          fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[5])(fra.me.REG[5]);
-          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
+          fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[6])(fra.me.REG[6]);
+          REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
           REGB3 = REGB4;
         }
         if (UNTAG_Bool(REGB3)) {
           /* ./syntax//typing.nit:256 */
           REGB3 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
           /* ./syntax//typing.nit:256 */
           REGB2 = REGB3;
@@ -1696,8 +1763,8 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
           }
           REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
           if (UNTAG_Bool(REGB3)) {
-            fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[5])(fra.me.REG[5]);
-            REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[1]);
+            fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___cshe(fra.me.REG[6])(fra.me.REG[6]);
+            REGB3 = CALL_metamodel___partial_order___PartialOrderElement_____leq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
             if (UNTAG_Bool(REGB3)) {
               REGB3 = TAG_Bool(true);
             } else {
@@ -1705,8 +1772,8 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
               if (UNTAG_Bool(REGB4)) {
                nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 257);
               }
-              fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
-              REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[4])(fra.me.REG[4]);
+              fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[1])(fra.me.REG[1]);
+              REGB4 = CALL_metamodel___abstractmetamodel___MMGlobalClass___is_mixin(fra.me.REG[5])(fra.me.REG[5]);
               REGB3 = REGB4;
             }
           } else {
@@ -1715,120 +1782,135 @@ void syntax___typing___AConcreteInitPropdef___after_typing(val_t p0, val_t p1){
           }
           if (UNTAG_Bool(REGB3)) {
             /* ./syntax//typing.nit:258 */
-            REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[5],fra.me.REG[1]));
+            REGB3 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[6],fra.me.REG[1]));
             if (UNTAG_Bool(REGB3)) {
             } else {
-              REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[1]);
+              REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[1]);
               REGB3 = REGB4;
             }
             if (UNTAG_Bool(REGB3)) {
               REGB3 = TAG_Int(1);
-              /* ./../lib/standard//kernel.nit:218 */
+              /* ./../lib/standard//kernel.nit:235 */
               REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
               /* ./syntax//typing.nit:258 */
               REGB2 = REGB3;
             }
             /* ./syntax//typing.nit:259 */
-            fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-            REGB3 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+            fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
+            REGB3 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
             } else {
               nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 259);
             }
-            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[5])(fra.me.REG[5], fra.me.REG[4]);
             /* ./syntax//typing.nit:260 */
             REGB3 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB3 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB3));
             /* ./syntax//typing.nit:260 */
             REGB0 = REGB3;
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB3 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
             /* ./syntax//typing.nit:261 */
             if (UNTAG_Bool(REGB3)) {
               /* ./syntax//typing.nit:262 */
-              fra.me.REG[4] = CALL_syntax___syntax_base___AConcreteInitPropdef___explicit_super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-              /* ./../lib/standard//collection//array.nit:243 */
+              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 */
               REGB3 = REGB0;
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB4 = TAG_Int(0);
-              /* ./../lib/standard//kernel.nit:216 */
+              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:233 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               if (UNTAG_Bool(REGB4)) {
-               REGB4 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+               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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+               }
+               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*/;
+               if (UNTAG_Bool(REGB5)) {
+               } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
                }
-               REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-               /* ./../lib/standard//kernel.nit:215 */
+               /* ./../lib/standard//kernel.nit:232 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
               } else {
-               /* ./../lib/standard//collection//array.nit:245 */
+               /* ./../lib/standard//collection//array.nit:280 */
                REGB5 = TAG_Bool(false);
                REGB4 = REGB5;
               }
               if (UNTAG_Bool(REGB4)) {
               } else {
-               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+               nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
               }
-              /* ./../lib/standard//collection//array.nit:246 */
-              fra.me.REG[4] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-              REGB4 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+              /* ./../lib/standard//collection//array.nit:281 */
+              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, 246);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
               }
-              /* ./../lib/standard//collection//array.nit:654 */
-              fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[4])->val[UNTAG_Int(REGB3)];
-              /* ./../lib/standard//collection//array.nit:246 */
+              /* ./../lib/standard//collection//array.nit:718 */
+              fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
+              /* ./../lib/standard//collection//array.nit:281 */
               goto label3;
               label3: while(0);
               /* ./syntax//typing.nit:262 */
-              fra.me.REG[0] = fra.me.REG[4];
+              fra.me.REG[4] = fra.me.REG[5];
               /* ./syntax//typing.nit:263 */
-              REGB3 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
+              REGB3 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
               if (UNTAG_Bool(REGB3)) {
                nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 263);
               }
-              fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
-              fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
-              fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
-              fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
-              fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
-              fra.me.REG[1] = fra.me.REG[6];
+              fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
+              fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[5])(fra.me.REG[5]);
+              fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[5])(fra.me.REG[5]);
+              fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[3])(fra.me.REG[3]);
+              fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___for_module(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[7]);
+              fra.me.REG[1] = fra.me.REG[7];
             } else {
               /* ./syntax//typing.nit:265 */
-              fra.me.REG[0] = NIT_NULL;
+              fra.me.REG[4] = NIT_NULL;
               /* ./syntax//typing.nit:266 */
               fra.me.REG[1] = NIT_NULL;
             }
           } else {
             /* ./syntax//typing.nit:269 */
-            fra.me.REG[6] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
-            fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___get_default_constructor_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[5], fra.me.REG[6]);
+            fra.me.REG[7] = CALL_syntax___syntax_base___AMethPropdef___method(fra.me.REG[2])(fra.me.REG[2]);
+            fra.me.REG[7] = CALL_syntax___typing___TypingVisitor___get_default_constructor_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2], fra.me.REG[6], fra.me.REG[7]);
             /* ./syntax//typing.nit:270 */
-            REGB3 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+            REGB3 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB3)) {
             } else {
-              REGB4 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+              REGB4 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
               if (UNTAG_Bool(REGB4)) {
                REGB4 = TAG_Bool(false);
                REGB3 = REGB4;
               } else {
-               REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
+               REGB4 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[7])(fra.me.REG[7], NIT_NULL);
                REGB3 = REGB4;
               }
             }
             REGB3 = TAG_Bool(!UNTAG_Bool(REGB3));
             if (UNTAG_Bool(REGB3)) {
               /* ./syntax//typing.nit:271 */
-              fra.me.REG[5] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(fra.me.REG[2])(fra.me.REG[2]);
-              CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
+              fra.me.REG[6] = CALL_syntax___syntax_base___AConcreteInitPropdef___super_init_calls(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[7]);
             }
             /* ./syntax//typing.nit:273 */
             REGB3 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB3 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB3));
             /* ./syntax//typing.nit:273 */
             REGB2 = REGB3;
@@ -2031,7 +2113,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:178 */
+      /* ./../lib/standard//kernel.nit:195 */
       REGB1 = TAG_Bool((REGB0)==(REGB1));
       /* ./syntax//typing.nit:326 */
       REGB2 = REGB1;
@@ -2124,47 +2206,52 @@ 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, 334);
     }
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB2 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
+    /* ./../lib/standard//collection//array.nit:270 */
     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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-    /* ./../lib/standard//collection//array.nit:236 */
+    /* ./../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:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-      /* ./../lib/standard//kernel.nit:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
+        /* ./../lib/standard//collection//array.nit:273 */
         REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB2)];
         /* ./syntax//typing.nit:335 */
         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:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB2 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label3;
       }
     }
@@ -2181,7 +2268,7 @@ void syntax___typing___AClosureDecl___accept_typing(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___AType___stype(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2189,12 +2276,14 @@ val_t syntax___typing___AType___stype(val_t p0){
   fra.me.line = 345;
   fra.me.meth = LOCATE_syntax___typing___AType___stype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:345 */
-  fra.me.REG[0] = ATTR_syntax___typing___AType____stype(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AType____stype(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 345);
@@ -2202,7 +2291,7 @@ val_t syntax___typing___AType___stype(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AType___is_typed(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -2311,7 +2400,7 @@ val_t syntax___typing___AExpr___is_statement(val_t p0){
   return REGB0;
 }
 val_t syntax___typing___AExpr___stype(val_t p0){
-  struct {struct stack_frame_t me; val_t MORE_REG[2];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
   val_t REGB0;
   val_t tmp;
     static val_t once_value_1; /* Once value */
@@ -2323,79 +2412,82 @@ val_t syntax___typing___AExpr___stype(val_t p0){
   fra.me.line = 358;
   fra.me.meth = LOCATE_syntax___typing___AExpr___stype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 3;
+  fra.me.REG_size = 4;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
+  fra.me.REG[3] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:358 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:360 */
-  REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_syntax___syntax_base___AExpr___is_typed(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:361 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[2] = BOX_NativeString("");
+      fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_1 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_1 = fra.me.REG[3];
       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[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
-    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[1])(fra.me.REG[1], fra.me.REG[2]);
+    } 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]);
+    fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
+    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]);
     if (!once_value_2) {
-      fra.me.REG[2] = BOX_NativeString(": not is_typed");
+      fra.me.REG[3] = BOX_NativeString(": not is_typed");
       REGB0 = TAG_Int(14);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_2 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
-    } else fra.me.REG[2] = once_value_2;
-    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[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    } 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[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___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     /* ./syntax//typing.nit:362 */
     nit_abort("Aborted", NULL, LOCATE_syntax___typing, 362);
   }
   /* ./syntax//typing.nit:364 */
-  REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[0])(fra.me.REG[0]);
+  REGB0 = CALL_syntax___syntax_base___AExpr___is_statement(fra.me.REG[1])(fra.me.REG[1]);
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:365 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_3) {
-      fra.me.REG[2] = BOX_NativeString("");
+      fra.me.REG[3] = BOX_NativeString("");
       REGB0 = TAG_Int(0);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_3 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_3 = fra.me.REG[3];
       register_static_object(&once_value_3);
-    } else fra.me.REG[2] = once_value_3;
-    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[2] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[0])(fra.me.REG[0]);
-    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[1])(fra.me.REG[1], fra.me.REG[2]);
+    } 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]);
+    fra.me.REG[3] = CALL_parser___parser_nodes___ANode___location(fra.me.REG[1])(fra.me.REG[1]);
+    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]);
     if (!once_value_4) {
-      fra.me.REG[2] = BOX_NativeString(": is_statement");
+      fra.me.REG[3] = BOX_NativeString(": is_statement");
       REGB0 = TAG_Int(14);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_4 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_4 = fra.me.REG[3];
       register_static_object(&once_value_4);
-    } else fra.me.REG[2] = once_value_4;
-    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[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
-    CALL_standard___file___Object___print(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+    } else fra.me.REG[3] = once_value_4;
+    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]);
+    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_standard___file___Object___print(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
     /* ./syntax//typing.nit:366 */
     nit_abort("Aborted", NULL, LOCATE_syntax___typing, 366);
   }
   /* ./syntax//typing.nit:368 */
-  fra.me.REG[0] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___AExpr____stype(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 368);
@@ -2403,7 +2495,7 @@ val_t syntax___typing___AExpr___stype(val_t p0){
   goto label5;
   label5: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AExpr___after_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
@@ -2514,7 +2606,7 @@ val_t syntax___typing___AExpr___if_false_flow_ctx(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___AVardeclExpr___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -2522,12 +2614,14 @@ val_t syntax___typing___AVardeclExpr___variable(val_t p0){
   fra.me.line = 396;
   fra.me.meth = LOCATE_syntax___typing___AVardeclExpr___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:396 */
-  fra.me.REG[0] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AVardeclExpr____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 396);
@@ -2535,7 +2629,7 @@ val_t syntax___typing___AVardeclExpr___variable(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AVardeclExpr___after_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -2936,7 +3030,7 @@ void syntax___typing___AReturnExpr___after_typing(val_t p0, val_t p1){
   return;
 }
 void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -2948,28 +3042,31 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
   fra.me.line = 462;
   fra.me.meth = LOCATE_syntax___typing___AContinueExpr___after_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 4;
+  fra.me.REG_size = 5;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
+  fra.me.REG[4] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:462 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:464 */
-  CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* ./syntax//typing.nit:465 */
-  fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[2] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[2]);
+  fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
   /* ./syntax//typing.nit:466 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
@@ -2977,55 +3074,55 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
     goto label1;
   }
   /* ./syntax//typing.nit:468 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 468);
   }
-  REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___scope___EscapableBlock___is_break_block(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:469 */
     if (!once_value_2) {
-      fra.me.REG[3] = BOX_NativeString("Error: cannot 'continue', only 'break'.");
+      fra.me.REG[4] = 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);
-      once_value_2 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_2 = fra.me.REG[4];
       register_static_object(&once_value_2);
-    } else fra.me.REG[3] = once_value_2;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+    } else fra.me.REG[4] = once_value_2;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     /* ./syntax//typing.nit:470 */
     goto label1;
   }
   /* ./syntax//typing.nit:473 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 473);
   }
-  fra.me.REG[2] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___continue_stype(fra.me.REG[3])(fra.me.REG[3]);
   /* ./syntax//typing.nit:474 */
-  fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         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[3])(fra.me.REG[3], NIT_NULL);
         REGB0 = REGB1;
       }
     }
@@ -3037,40 +3134,40 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:475 */
     if (!once_value_3) {
-      fra.me.REG[3] = BOX_NativeString("Error: continue with a value required in this block.");
+      fra.me.REG[4] = BOX_NativeString("Error: continue with a value required in this block.");
       REGB0 = TAG_Int(52);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_3 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_3 = fra.me.REG[4];
       register_static_object(&once_value_3);
-    } else fra.me.REG[3] = once_value_3;
-    fra.me.REG[3] = fra.me.REG[3];
-    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
-  } else {
+    } else fra.me.REG[4] = once_value_3;
+    fra.me.REG[4] = fra.me.REG[4];
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
+  } else {
     /* ./syntax//typing.nit:476 */
-    fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           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[3])(fra.me.REG[3], NIT_NULL);
           REGB0 = REGB1;
         }
       }
@@ -3081,40 +3178,40 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:477 */
       if (!once_value_4) {
-        fra.me.REG[3] = BOX_NativeString("Error: continue without value required in this block.");
+        fra.me.REG[4] = BOX_NativeString("Error: continue without value required in this block.");
         REGB0 = TAG_Int(53);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-        once_value_4 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        once_value_4 = fra.me.REG[4];
         register_static_object(&once_value_4);
-      } else fra.me.REG[3] = once_value_4;
-      fra.me.REG[3] = fra.me.REG[3];
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+      } else fra.me.REG[4] = once_value_4;
+      fra.me.REG[4] = fra.me.REG[4];
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     } else {
       /* ./syntax//typing.nit:478 */
-      fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             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[3])(fra.me.REG[3], NIT_NULL);
             REGB0 = REGB1;
           }
         }
@@ -3125,25 +3222,25 @@ void syntax___typing___AContinueExpr___after_typing(val_t p0, val_t p1){
       }
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//typing.nit:479 */
-        fra.me.REG[3] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-        REGB0 = TAG_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*/;
+        fra.me.REG[4] = CALL_parser___parser_nodes___AContinueExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+        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 AExpr*/;
         if (UNTAG_Bool(REGB0)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 479);
         }
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[2]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[4], fra.me.REG[3]);
       }
     }
   }
   /* ./syntax//typing.nit:481 */
   REGB0 = TAG_Bool(true);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
 void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -3154,31 +3251,34 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
   fra.me.line = 486;
   fra.me.meth = LOCATE_syntax___typing___ABreakExpr___after_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 5;
+  fra.me.REG_size = 6;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:486 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:488 */
-  fra.me.REG[2] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___flow_ctx(fra.me.REG[1])(fra.me.REG[1]);
   /* ./syntax//typing.nit:489 */
-  CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_syntax___typing___TypingVisitor___mark_unreash(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   /* ./syntax//typing.nit:490 */
-  fra.me.REG[3] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[3] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[3]);
+  fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_syntax___scope___AEscapeExpr___compute_escapable_block(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
   /* ./syntax//typing.nit:491 */
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB0 = REGB1;
     }
   }
@@ -3186,42 +3286,42 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
     goto label1;
   }
   /* ./syntax//typing.nit:493 */
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 493);
   }
-  fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(fra.me.REG[3])(fra.me.REG[3]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[2]);
+  fra.me.REG[5] = CALL_syntax___scope___EscapableBlock___break_flow_contexts(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[3]);
   /* ./syntax//typing.nit:495 */
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 495);
   }
-  fra.me.REG[3] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_syntax___scope___EscapableBlock___break_list(fra.me.REG[4])(fra.me.REG[4]);
   /* ./syntax//typing.nit:496 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         REGB0 = REGB1;
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
         REGB0 = REGB1;
       }
     }
@@ -3233,40 +3333,40 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:497 */
     if (!once_value_2) {
-      fra.me.REG[2] = BOX_NativeString("Error: break with a value required in this block.");
+      fra.me.REG[3] = BOX_NativeString("Error: break with a value required in this block.");
       REGB0 = TAG_Int(49);
-      fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-      once_value_2 = fra.me.REG[2];
+      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+      once_value_2 = fra.me.REG[3];
       register_static_object(&once_value_2);
-    } else fra.me.REG[2] = once_value_2;
-    fra.me.REG[2] = fra.me.REG[2];
-    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+    } else fra.me.REG[3] = once_value_2;
+    fra.me.REG[3] = fra.me.REG[3];
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
   } else {
     /* ./syntax//typing.nit:498 */
-    fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-    REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
         REGB1 = TAG_Bool(false);
         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[3])(fra.me.REG[3], NIT_NULL);
         REGB0 = REGB1;
       }
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
-      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+      REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           REGB0 = REGB1;
         } else {
-          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+          REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
           REGB0 = REGB1;
         }
       }
@@ -3277,40 +3377,40 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:499 */
       if (!once_value_3) {
-        fra.me.REG[2] = BOX_NativeString("Error: break without value required in this block.");
+        fra.me.REG[3] = BOX_NativeString("Error: break without value required in this block.");
         REGB0 = TAG_Int(50);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-        once_value_3 = fra.me.REG[2];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        once_value_3 = fra.me.REG[3];
         register_static_object(&once_value_3);
-      } else fra.me.REG[2] = once_value_3;
-      fra.me.REG[2] = fra.me.REG[2];
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+      } else fra.me.REG[3] = once_value_3;
+      fra.me.REG[3] = fra.me.REG[3];
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
     } else {
       /* ./syntax//typing.nit:500 */
-      fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(false);
           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[3])(fra.me.REG[3], NIT_NULL);
           REGB0 = REGB1;
         }
       }
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
-        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
             REGB1 = TAG_Bool(false);
             REGB0 = REGB1;
           } else {
-            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
             REGB0 = REGB1;
           }
         }
@@ -3321,23 +3421,23 @@ void syntax___typing___ABreakExpr___after_typing(val_t p0, val_t p1){
       }
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//typing.nit:502 */
-        fra.me.REG[2] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-        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*/;
+        fra.me.REG[3] = CALL_parser___parser_nodes___ABreakExpr___n_expr(fra.me.REG[2])(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_syntax___typing, 502);
         }
-        REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
           nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 502);
         }
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
       }
     }
   }
   /* ./syntax//typing.nit:504 */
   REGB0 = TAG_Bool(true);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -3702,7 +3802,7 @@ void syntax___typing___ALoopExpr___process_control_inside(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___AForExpr___variables(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -3710,12 +3810,14 @@ val_t syntax___typing___AForExpr___variables(val_t p0){
   fra.me.line = 653;
   fra.me.meth = LOCATE_syntax___typing___AForExpr___variables;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:653 */
-  fra.me.REG[0] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AForExpr____variables(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 653);
@@ -3723,7 +3825,7 @@ val_t syntax___typing___AForExpr___variables(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AForExpr___accept_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -3933,7 +4035,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//typing.nit:706 */
     REGB2 = REGB1;
@@ -3955,11 +4057,11 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
   } else {
     /* ./syntax//typing.nit:709 */
     fra.me.REG[5] = CALL_metamodel___static_type___MMSignature___closures(fra.me.REG[3])(fra.me.REG[3]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
     /* ./syntax//typing.nit:709 */
@@ -3967,7 +4069,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./syntax//typing.nit:709 */
       REGB0 = REGB1;
@@ -4026,11 +4128,11 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
     /* ./syntax//typing.nit:716 */
     goto label2;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
   /* ./syntax//typing.nit:718 */
@@ -4038,7 +4140,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//typing.nit:718 */
     REGB2 = REGB1;
@@ -4051,7 +4153,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB1 = TAG_Bool((REGB2)==(REGB1));
       /* ./syntax//typing.nit:719 */
       REGB0 = REGB1;
@@ -4092,11 +4194,11 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       } else fra.me.REG[4] = once_value_13;
       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:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       /* ./syntax//typing.nit:720 */
@@ -4149,11 +4251,11 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
       } else fra.me.REG[4] = once_value_17;
       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:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
       /* ./syntax//typing.nit:722 */
@@ -4176,56 +4278,71 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
   }
   /* ./syntax//typing.nit:728 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+    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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB2)) {
       /* ./syntax//typing.nit:728 */
       REGB2 = REGB0;
-      /* ./../lib/standard//collection//array.nit:243 */
+      /* ./../lib/standard//collection//array.nit:278 */
       fra.me.REG[5] = fra.me.REG[2];
       REGB3 = REGB2;
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       REGB4 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:216 */
+      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:233 */
       REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-      /* ./../lib/standard//collection//array.nit:245 */
+      /* ./../lib/standard//collection//array.nit:280 */
       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, 245);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
         }
         REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[5]);
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
       } else {
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB5 = TAG_Bool(false);
         REGB4 = REGB5;
       }
       if (UNTAG_Bool(REGB4)) {
       } else {
-        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+        nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
       }
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       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, 246);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[5] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB3)];
-      /* ./../lib/standard//collection//array.nit:246 */
+      /* ./../lib/standard//collection//array.nit:281 */
       goto label19;
       label19: while(0);
       /* ./syntax//typing.nit:729 */
@@ -4235,14 +4352,14 @@ void syntax___typing___AForExpr___do_typing(val_t p0, val_t p1){
         nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 729);
       }
       CALL_syntax___syntax_base___Variable___stype__eq(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[0]);
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = REGB2;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label20;
     }
   }
@@ -4339,7 +4456,7 @@ void syntax___typing___AAssertExpr___accept_typing(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___AVarFormExpr___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -4347,12 +4464,14 @@ val_t syntax___typing___AVarFormExpr___variable(val_t p0){
   fra.me.line = 757;
   fra.me.meth = LOCATE_syntax___typing___AVarFormExpr___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:757 */
-  fra.me.REG[0] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AVarFormExpr____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 757);
@@ -4360,7 +4479,7 @@ val_t syntax___typing___AVarFormExpr___variable(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AVarExpr___its_variable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -4662,7 +4781,7 @@ val_t syntax___typing___AReassignFormExpr___do_rvalue_typing(val_t p0, val_t p1,
   return fra.me.REG[3];
 }
 val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -4670,12 +4789,14 @@ val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
   fra.me.line = 815;
   fra.me.meth = LOCATE_syntax___typing___AReassignFormExpr___assign_method;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:815 */
-  fra.me.REG[0] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AReassignFormExpr____assign_method(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 815);
@@ -4683,7 +4804,7 @@ val_t syntax___typing___AReassignFormExpr___assign_method(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AVarReassignExpr___after_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -4863,7 +4984,7 @@ val_t syntax___typing___AMinusAssignOp___method_name(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___ASelfExpr___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -4871,12 +4992,14 @@ val_t syntax___typing___ASelfExpr___variable(val_t p0){
   fra.me.line = 852;
   fra.me.meth = LOCATE_syntax___typing___ASelfExpr___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:852 */
-  fra.me.REG[0] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___ASelfExpr____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 852);
@@ -4884,7 +5007,7 @@ val_t syntax___typing___ASelfExpr___variable(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___ASelfExpr___its_variable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -5467,7 +5590,7 @@ void syntax___typing___AStringFormExpr___after_typing(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -5475,12 +5598,14 @@ val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
   fra.me.line = 1059;
   fra.me.meth = LOCATE_syntax___typing___ASuperstringExpr___atype;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1059 */
-  fra.me.REG[0] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___ASuperstringExpr____atype(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1059);
@@ -5488,7 +5613,7 @@ val_t syntax___typing___ASuperstringExpr___atype(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___ASuperstringExpr___after_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
@@ -5788,7 +5913,7 @@ val_t syntax___typing___ASuperExpr___compute_raw_arguments(val_t p0){
   return fra.me.REG[0];
 }
 void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[8];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[9];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t REGB2;
@@ -5809,7 +5934,7 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
   fra.me.line = 1117;
   fra.me.meth = LOCATE_syntax___typing___ASuperExpr___after_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 9;
+  fra.me.REG_size = 10;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -5819,474 +5944,502 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[7] = NIT_NULL;
   fra.me.REG[8] = NIT_NULL;
+  fra.me.REG[9] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:1117 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:1119 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = CALL_metamodel___partial_order___PartialOrderElement___direct_greaters(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___prhe(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]);
   /* ./syntax//typing.nit:1120 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
+  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)) {
     /* ./syntax//typing.nit:1121 */
-    fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
     REGB0 = TAG_Bool(true);
-    CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
+    CALL_metamodel___abstractmetamodel___MMLocalProperty___need_super__eq(fra.me.REG[4])(fra.me.REG[4], REGB0);
   } else {
     /* ./syntax//typing.nit:1122 */
-    fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
-    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:1123 */
-      fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
-      fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-      /* ./../lib/standard//collection//array.nit:231 */
-      fra.me.REG[3] = fra.me.REG[4];
-      /* ./../lib/standard//collection//array.nit:234 */
+      fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+      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 */
+      fra.me.REG[4] = fra.me.REG[5];
+      /* ./../lib/standard//collection//array.nit:269 */
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//collection//array.nit:235 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:270 */
+      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
       if (UNTAG_Bool(REGB1)) {
       } else {
-        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
       }
-      REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:236 */
-      fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
-      /* ./../lib/standard//collection//array.nit:237 */
+      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 */
       while(1) {
-        /* ./../lib/standard//collection//array.nit:23 */
-        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+        /* ./../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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
+        }
+        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
+        REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+        if (UNTAG_Bool(REGB2)) {
+        } else {
+          nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
         }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-        /* ./../lib/standard//kernel.nit:215 */
+        /* ./../lib/standard//kernel.nit:232 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         if (UNTAG_Bool(REGB1)) {
-          /* ./../lib/standard//collection//array.nit:238 */
-          REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:273 */
+          REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
           if (UNTAG_Bool(REGB1)) {
-            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
-          fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+          /* ./../lib/standard//collection//array.nit:718 */
+          fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
           /* ./syntax//typing.nit:1125 */
-          fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
-          REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[7])(fra.me.REG[7]);
+          fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
+          REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[8])(fra.me.REG[8]);
           REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
           if (UNTAG_Bool(REGB1)) {
             /* ./syntax//typing.nit:1126 */
             REGB1 = TAG_Int(5);
-            fra.me.REG[7] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+            fra.me.REG[8] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
             if (!once_value_1) {
-              fra.me.REG[8] = BOX_NativeString("Error: ");
+              fra.me.REG[9] = BOX_NativeString("Error: ");
               REGB1 = TAG_Int(7);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_1 = fra.me.REG[8];
+              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              once_value_1 = fra.me.REG[9];
               register_static_object(&once_value_1);
-            } else fra.me.REG[8] = once_value_1;
-            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]);
-            fra.me.REG[8] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
-            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]);
+            } else fra.me.REG[9] = once_value_1;
+            fra.me.REG[9] = fra.me.REG[9];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[9] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[7])(fra.me.REG[7]);
+            fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
             if (!once_value_2) {
-              fra.me.REG[8] = BOX_NativeString("::");
+              fra.me.REG[9] = BOX_NativeString("::");
               REGB1 = TAG_Int(2);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_2 = fra.me.REG[8];
+              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              once_value_2 = fra.me.REG[9];
               register_static_object(&once_value_2);
-            } else fra.me.REG[8] = once_value_2;
-            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]);
-            fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+            } else fra.me.REG[9] = once_value_2;
+            fra.me.REG[9] = fra.me.REG[9];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[7])(fra.me.REG[7]);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
             if (!once_value_3) {
-              fra.me.REG[8] = BOX_NativeString(" is not a constructor.");
+              fra.me.REG[9] = BOX_NativeString(" is not a constructor.");
               REGB1 = TAG_Int(22);
-              fra.me.REG[8] = NEW_String_standard___string___String___with_native(fra.me.REG[8], REGB1);
-              once_value_3 = fra.me.REG[8];
+              fra.me.REG[9] = NEW_String_standard___string___String___with_native(fra.me.REG[9], REGB1);
+              once_value_3 = fra.me.REG[9];
               register_static_object(&once_value_3);
-            } else fra.me.REG[8] = once_value_3;
-            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]);
-            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[0], fra.me.REG[7]);
+            } else fra.me.REG[9] = once_value_3;
+            fra.me.REG[9] = fra.me.REG[9];
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[9]);
+            fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
+            CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[8]);
           } else {
             /* ./syntax//typing.nit:1128 */
-            fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-            fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
-            fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
+            fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+            fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[7])(fra.me.REG[7]);
+            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:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB1 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:218 */
+          /* ./../lib/standard//kernel.nit:235 */
           REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:239 */
+          /* ./../lib/standard//collection//array.nit:274 */
           REGB0 = REGB1;
         } else {
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           goto label4;
         }
       }
       label4: while(0);
       /* ./syntax//typing.nit:1131 */
-      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[3])(fra.me.REG[3]);
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//typing.nit:1132 */
         REGB0 = TAG_Int(3);
-        fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+        fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_5) {
-          fra.me.REG[3] = BOX_NativeString("Error: No contructor named ");
+          fra.me.REG[4] = BOX_NativeString("Error: No contructor named ");
           REGB0 = TAG_Int(27);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-          once_value_5 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          once_value_5 = fra.me.REG[4];
           register_static_object(&once_value_5);
-        } else fra.me.REG[3] = once_value_5;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-        fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___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]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+        } else fra.me.REG[4] = once_value_5;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+        fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
+        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[6])(fra.me.REG[6], fra.me.REG[4]);
         if (!once_value_6) {
-          fra.me.REG[3] = BOX_NativeString(" in superclasses.");
+          fra.me.REG[4] = BOX_NativeString(" in superclasses.");
           REGB0 = TAG_Int(17);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-          once_value_6 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          once_value_6 = fra.me.REG[4];
           register_static_object(&once_value_6);
-        } else fra.me.REG[3] = once_value_6;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-        fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+        } else fra.me.REG[4] = once_value_6;
+        fra.me.REG[4] = fra.me.REG[4];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+        fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
         /* ./syntax//typing.nit:1133 */
         goto label7;
       } else {
-        /* ./../lib/standard//collection//array.nit:23 */
-        REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:24 */
+        REGB0 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
         if (UNTAG_Bool(REGB0)) {
         } else {
-          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
-        REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
+        REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
         /* ./syntax//typing.nit:1134 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:217 */
+        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 */
         REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
         /* ./syntax//typing.nit:1134 */
         if (UNTAG_Bool(REGB1)) {
           /* ./syntax//typing.nit:1135 */
           REGB1 = TAG_Int(5);
-          fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+          fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
           if (!once_value_8) {
-            fra.me.REG[3] = BOX_NativeString("Error: Conflicting contructors named ");
+            fra.me.REG[4] = BOX_NativeString("Error: Conflicting contructors named ");
             REGB1 = TAG_Int(37);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-            once_value_8 = fra.me.REG[3];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            once_value_8 = fra.me.REG[4];
             register_static_object(&once_value_8);
-          } else fra.me.REG[3] = once_value_8;
-          fra.me.REG[3] = fra.me.REG[3];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-          fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-          fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___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]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+          } else fra.me.REG[4] = once_value_8;
+          fra.me.REG[4] = fra.me.REG[4];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+          fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+          fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
+          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[6])(fra.me.REG[6], fra.me.REG[4]);
           if (!once_value_9) {
-            fra.me.REG[3] = BOX_NativeString(" in superclasses: ");
+            fra.me.REG[4] = BOX_NativeString(" in superclasses: ");
             REGB1 = TAG_Int(18);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-            once_value_9 = fra.me.REG[3];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            once_value_9 = fra.me.REG[4];
             register_static_object(&once_value_9);
-          } else fra.me.REG[3] = once_value_9;
-          fra.me.REG[3] = fra.me.REG[3];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+          } else fra.me.REG[4] = once_value_9;
+          fra.me.REG[4] = fra.me.REG[4];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
           if (!once_value_10) {
-            fra.me.REG[3] = BOX_NativeString(", ");
+            fra.me.REG[4] = BOX_NativeString(", ");
             REGB1 = TAG_Int(2);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-            once_value_10 = fra.me.REG[3];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            once_value_10 = fra.me.REG[4];
             register_static_object(&once_value_10);
-          } else fra.me.REG[3] = once_value_10;
-          fra.me.REG[3] = fra.me.REG[3];
-          fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
+          } else fra.me.REG[4] = once_value_10;
+          fra.me.REG[4] = fra.me.REG[4];
+          fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
           if (!once_value_11) {
-            fra.me.REG[3] = BOX_NativeString(".");
+            fra.me.REG[4] = BOX_NativeString(".");
             REGB1 = TAG_Int(1);
-            fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-            once_value_11 = fra.me.REG[3];
+            fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB1);
+            once_value_11 = fra.me.REG[4];
             register_static_object(&once_value_11);
-          } else fra.me.REG[3] = once_value_11;
-          fra.me.REG[3] = fra.me.REG[3];
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-          fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+          } else fra.me.REG[4] = once_value_11;
+          fra.me.REG[4] = fra.me.REG[4];
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[4]);
+          fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+          CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
           /* ./syntax//typing.nit:1136 */
           goto label7;
         }
       }
       /* ./syntax//typing.nit:1138 */
-      fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[4])(fra.me.REG[4]);
+      fra.me.REG[5] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[5])(fra.me.REG[5]);
       /* ./syntax//typing.nit:1139 */
-      REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[4], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+      REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
       if (UNTAG_Bool(REGB1)) {
       } else {
         nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1139);
       }
       /* ./syntax//typing.nit:1140 */
-      ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[0]) = fra.me.REG[4];
+      ATTR_syntax___typing___ASuperExpr____init_in_superclass(fra.me.REG[2]) = fra.me.REG[5];
       /* ./syntax//typing.nit:1141 */
-      CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[4]);
+      CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[5]);
       /* ./syntax//typing.nit:1142 */
-      fra.me.REG[5] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[0])(fra.me.REG[0]);
-      REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[5])(fra.me.REG[5]);
+      fra.me.REG[6] = CALL_parser___parser_nodes___ASuperExpr___n_args(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = CALL_standard___collection___abstract_collection___Collection___length(fra.me.REG[6])(fra.me.REG[6]);
       REGB0 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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 */
       REGB0 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB0));
       /* ./syntax//typing.nit:1142 */
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//typing.nit:1143 */
-        fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(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*/;
+        fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[6] = CALL_syntax___syntax_base___Variable___stype(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___typing, 1143);
         }
         REGB0 = TAG_Bool(true);
-        fra.me.REG[5] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], REGB0);
+        fra.me.REG[6] = CALL_syntax___typing___AAbsSendExpr___get_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], REGB0);
         /* ./syntax//typing.nit:1144 */
-        fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[4])(fra.me.REG[4]);
-        fra.me.REG[3] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
-        CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], fra.me.REG[4], fra.me.REG[3]);
+        fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra.me.REG[5])(fra.me.REG[5]);
+        fra.me.REG[4] = CALL_syntax___typing___AAbsAbsSendExpr___compute_raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
+        CALL_syntax___typing___AAbsAbsSendExpr___process_signature(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6], fra.me.REG[5], fra.me.REG[4]);
       }
     } else {
       /* ./syntax//typing.nit:1147 */
       REGB0 = TAG_Int(3);
-      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_12) {
-        fra.me.REG[4] = BOX_NativeString("Error: No super method to call for ");
+        fra.me.REG[5] = BOX_NativeString("Error: No super method to call for ");
         REGB0 = TAG_Int(35);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-        once_value_12 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        once_value_12 = fra.me.REG[5];
         register_static_object(&once_value_12);
-      } else fra.me.REG[4] = once_value_12;
-      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[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(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[3])(fra.me.REG[3], fra.me.REG[4]);
+      } else fra.me.REG[5] = once_value_12;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       if (!once_value_13) {
-        fra.me.REG[4] = BOX_NativeString(".");
+        fra.me.REG[5] = BOX_NativeString(".");
         REGB0 = TAG_Int(1);
-        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-        once_value_13 = fra.me.REG[4];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+        once_value_13 = fra.me.REG[5];
         register_static_object(&once_value_13);
-      } else fra.me.REG[4] = once_value_13;
-      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]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+      } else fra.me.REG[5] = once_value_13;
+      fra.me.REG[5] = fra.me.REG[5];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+      fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
       /* ./syntax//typing.nit:1148 */
       goto label7;
     }
   }
   /* ./syntax//typing.nit:1151 */
-  fra.me.REG[3] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[4] = CALL_syntax___syntax_base___Variable___stype(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___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+  fra.me.REG[4] = CALL_standard___collection___abstract_collection___Collection___first(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[5] = CALL_syntax___syntax_base___Variable___stype(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___typing, 1151);
   }
-  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1151);
   }
-  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
-  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  fra.me.REG[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+  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);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1152 */
-    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___init();
+    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___init();
     /* ./syntax//typing.nit:1153 */
-    fra.me.REG[3] = NIT_NULL;
-    /* ./../lib/standard//collection//array.nit:234 */
+    fra.me.REG[4] = NIT_NULL;
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
     } else {
-      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[2]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[2])!=NIT_NULL);
+      /* ./../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, 23);
+        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:215 */
+      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:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:273 */
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[6] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
         /* ./syntax//typing.nit:1155 */
-        REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+        REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[7], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
         if (UNTAG_Bool(REGB1)) {
         } else {
           nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1155);
         }
         /* ./syntax//typing.nit:1156 */
-        fra.me.REG[7] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[7] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[7])(fra.me.REG[7]);
-        REGB1 = TAG_Bool((fra.me.REG[7]!=NIT_NULL) && VAL_ISA(fra.me.REG[7], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+        fra.me.REG[8] = CALL_syntax___typing___TypingVisitor___self_var(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[8] = CALL_syntax___syntax_base___Variable___stype(fra.me.REG[8])(fra.me.REG[8]);
+        REGB1 = TAG_Bool((fra.me.REG[8]!=NIT_NULL) && VAL_ISA(fra.me.REG[8], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
         if (UNTAG_Bool(REGB1)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1156);
         }
-        fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
-        fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[7])(fra.me.REG[7]);
-        fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
-        REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+        fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
+        fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[8])(fra.me.REG[8]);
+        fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+        REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
         }
-        fra.me.REG[6] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
-        fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-        fra.me.REG[7] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[7])(fra.me.REG[7]);
-        REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
+        fra.me.REG[7] = CALL_metamodel___static_type___MMType___for_module(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
+        fra.me.REG[8] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+        fra.me.REG[8] = CALL_metamodel___static_type___MMLocalProperty___signature(fra.me.REG[8])(fra.me.REG[8]);
+        REGB1 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
           nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1156);
         }
-        fra.me.REG[7] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[7])(fra.me.REG[7]);
-        fra.me.REG[7] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[7]);
+        fra.me.REG[8] = CALL_metamodel___static_type___MMSignature___recv(fra.me.REG[8])(fra.me.REG[8]);
+        fra.me.REG[8] = CALL_metamodel___static_type___MMType___adapt_to(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
         /* ./syntax//typing.nit:1157 */
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[8]);
         /* ./syntax//typing.nit:1158 */
-        REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
-          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Bool(false);
             REGB1 = REGB2;
           } else {
-            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+            REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
             REGB1 = REGB2;
           }
         }
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Bool(true);
         } else {
-          REGB2 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+          REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB2)) {
             nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1158);
           }
-          REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+          REGB2 = CALL_metamodel___static_type___MMType_____l(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[8]);
           REGB1 = REGB2;
         }
         if (UNTAG_Bool(REGB1)) {
           /* ./syntax//typing.nit:1159 */
-          fra.me.REG[3] = fra.me.REG[7];
+          fra.me.REG[4] = fra.me.REG[8];
         }
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label14;
       }
     }
     label14: while(0);
-    /* ./../lib/standard//collection//array.nit:234 */
+    /* ./../lib/standard//collection//array.nit:269 */
     REGB0 = TAG_Int(0);
-    /* ./../lib/standard//collection//array.nit:235 */
-    REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+    /* ./../lib/standard//collection//array.nit:270 */
+    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, 235);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
     }
-    REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:236 */
-    fra.me.REG[5] = ATTR_standard___collection___array___Array____items(fra.me.REG[4]);
-    /* ./../lib/standard//collection//array.nit:237 */
+    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 */
     while(1) {
-      /* ./../lib/standard//collection//array.nit:23 */
-      REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4])!=NIT_NULL);
+      /* ./../lib/standard//collection//array.nit:24 */
+      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, 23);
+        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:215 */
+      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*/;
+      if (UNTAG_Bool(REGB2)) {
+      } else {
+        nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+      }
+      /* ./../lib/standard//kernel.nit:232 */
       REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       if (UNTAG_Bool(REGB1)) {
-        /* ./../lib/standard//collection//array.nit:238 */
-        REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:273 */
+        REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
-          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
-        fra.me.REG[2] = ((Nit_NativeArray)fra.me.REG[5])->val[UNTAG_Int(REGB0)];
+        /* ./../lib/standard//collection//array.nit:718 */
+        fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[6])->val[UNTAG_Int(REGB0)];
         /* ./syntax//typing.nit:1163 */
-        REGB1 = TAG_Bool(fra.me.REG[3]!=NIT_NULL);
+        REGB1 = TAG_Bool(fra.me.REG[4]!=NIT_NULL);
         if (UNTAG_Bool(REGB1)) {
         } else {
           nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1163);
         }
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], fra.me.REG[3]);
-        /* ./../lib/standard//collection//array.nit:239 */
+        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 */
         REGB1 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-        /* ./../lib/standard//collection//array.nit:239 */
+        /* ./../lib/standard//collection//array.nit:274 */
         REGB0 = REGB1;
       } else {
-        /* ./../lib/standard//collection//array.nit:237 */
+        /* ./../lib/standard//collection//array.nit:272 */
         goto label15;
       }
     }
     label15: while(0);
     /* ./syntax//typing.nit:1165 */
-    ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[3];
+    ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[4];
   }
   /* ./syntax//typing.nit:1167 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
@@ -6297,10 +6450,10 @@ void syntax___typing___ASuperExpr___after_typing(val_t p0, val_t p1){
     nit_abort("Assert failed", NULL, LOCATE_syntax___typing, 1168);
   }
   /* ./syntax//typing.nit:1169 */
-  ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]) = fra.me.REG[1];
+  ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]) = fra.me.REG[1];
   /* ./syntax//typing.nit:1170 */
   REGB0 = TAG_Bool(true);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
   label7: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -6338,7 +6491,7 @@ val_t syntax___typing___AExternCall___target_method_name(val_t p0){
   return NIT_NULL;
 }
 void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[7];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -6353,7 +6506,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
   fra.me.line = 1178;
   fra.me.meth = LOCATE_syntax___typing___AExternCall___after_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 7;
+  fra.me.REG_size = 8;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
@@ -6361,148 +6514,151 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
   fra.me.REG[6] = NIT_NULL;
+  fra.me.REG[7] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:1178 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:1180 */
-  fra.me.REG[2] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_class_name(fra.me.REG[2])(fra.me.REG[2]);
   /* ./syntax//typing.nit:1181 */
-  fra.me.REG[3] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = CALL_syntax___typing___AExternCall___target_method_name(fra.me.REG[2])(fra.me.REG[2]);
   /* ./syntax//typing.nit:1188 */
-  REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       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[3])(fra.me.REG[3], NIT_NULL);
       REGB0 = REGB1;
     }
   }
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1189 */
-    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
+    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___local_class(fra.me.REG[5])(fra.me.REG[5]);
   } else {
     /* ./syntax//typing.nit:1191 */
-    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___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
-    REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+    fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMModule___has_global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:1192 */
-      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___mmmodule(fra.me.REG[5])(fra.me.REG[5]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-      /* ./syntax//typing.nit:1193 */
       fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
       fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
-      fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[5]);
-      fra.me.REG[4] = fra.me.REG[5];
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule___global_class_named(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+      /* ./syntax//typing.nit:1193 */
+      fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+      fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalProperty___mmmodule(fra.me.REG[7])(fra.me.REG[7]);
+      fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[6]);
+      fra.me.REG[5] = fra.me.REG[6];
     } else {
       /* ./syntax//typing.nit:1195 */
       REGB0 = TAG_Int(3);
-      fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+      fra.me.REG[6] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_1) {
-        fra.me.REG[6] = BOX_NativeString("Error: class ");
+        fra.me.REG[7] = BOX_NativeString("Error: class ");
         REGB0 = TAG_Int(13);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-        once_value_1 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        once_value_1 = fra.me.REG[7];
         register_static_object(&once_value_1);
-      } else fra.me.REG[6] = once_value_1;
-      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]);
-      REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+      } else fra.me.REG[7] = once_value_1;
+      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]);
+      REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
       if (UNTAG_Bool(REGB0)) {
         nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1195);
       }
-      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[5])(fra.me.REG[5], fra.me.REG[2]);
+      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[6])(fra.me.REG[6], fra.me.REG[3]);
       if (!once_value_2) {
-        fra.me.REG[2] = BOX_NativeString(", not found.");
+        fra.me.REG[3] = BOX_NativeString(", not found.");
         REGB0 = TAG_Int(12);
-        fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB0);
-        once_value_2 = fra.me.REG[2];
+        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+        once_value_2 = fra.me.REG[3];
         register_static_object(&once_value_2);
-      } else fra.me.REG[2] = once_value_2;
-      fra.me.REG[2] = fra.me.REG[2];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[5]);
+      } 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[6])(fra.me.REG[6], fra.me.REG[3]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[6]);
       /* ./syntax//typing.nit:1196 */
       goto label3;
     }
   }
   /* ./syntax//typing.nit:1200 */
-  REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMLocalClass___has_global_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1201 */
-    fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
     /* ./syntax//typing.nit:1203 */
-    fra.me.REG[5] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
+    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
     /* ./syntax//typing.nit:1205 */
-    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[5], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
+    REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[6], COLOR_metamodel___abstractmetamodel___MMMethod, ID_metamodel___abstractmetamodel___MMMethod)) /*cast MMMethod*/;
     if (UNTAG_Bool(REGB0)) {
     } else {
       /* ./syntax//typing.nit:1208 */
       REGB0 = TAG_Int(3);
-      fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_4) {
-        fra.me.REG[6] = BOX_NativeString("Error: property ");
+        fra.me.REG[7] = BOX_NativeString("Error: property ");
         REGB0 = TAG_Int(16);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-        once_value_4 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        once_value_4 = fra.me.REG[7];
         register_static_object(&once_value_4);
-      } else fra.me.REG[6] = once_value_4;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-      fra.me.REG[6] = 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[6]);
+      } else fra.me.REG[7] = once_value_4;
+      fra.me.REG[7] = fra.me.REG[7];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      fra.me.REG[7] = CALL_standard___string___Object___to_s(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[7]);
       if (!once_value_5) {
-        fra.me.REG[6] = BOX_NativeString(" is not a method.");
+        fra.me.REG[7] = BOX_NativeString(" is not a method.");
         REGB0 = TAG_Int(17);
-        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-        once_value_5 = fra.me.REG[6];
+        fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+        once_value_5 = fra.me.REG[7];
         register_static_object(&once_value_5);
-      } else fra.me.REG[6] = once_value_5;
-      fra.me.REG[6] = fra.me.REG[6];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-      fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+      } else fra.me.REG[7] = once_value_5;
+      fra.me.REG[7] = fra.me.REG[7];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
       /* ./syntax//typing.nit:1209 */
       goto label3;
     }
   } else {
     /* ./syntax//typing.nit:1212 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_6) {
-      fra.me.REG[6] = BOX_NativeString("Error: property ");
+      fra.me.REG[7] = BOX_NativeString("Error: property ");
       REGB0 = TAG_Int(16);
-      fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB0);
-      once_value_6 = fra.me.REG[6];
+      fra.me.REG[7] = NEW_String_standard___string___String___with_native(fra.me.REG[7], REGB0);
+      once_value_6 = fra.me.REG[7];
       register_static_object(&once_value_6);
-    } else fra.me.REG[6] = once_value_6;
-    fra.me.REG[6] = fra.me.REG[6];
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[6]);
-    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]);
+    } else fra.me.REG[7] = once_value_6;
+    fra.me.REG[7] = fra.me.REG[7];
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+    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[3])(fra.me.REG[3], fra.me.REG[4]);
     if (!once_value_7) {
-      fra.me.REG[3] = BOX_NativeString(" not found in target class.");
+      fra.me.REG[4] = BOX_NativeString(" not found in target class.");
       REGB0 = TAG_Int(27);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_7 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_7 = fra.me.REG[4];
       register_static_object(&once_value_7);
-    } else fra.me.REG[3] = once_value_7;
-    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]);
-    fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+    } 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]);
+    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
     /* ./syntax//typing.nit:1213 */
     goto label3;
   }
   /* ./syntax//typing.nit:1216 */
-  fra.me.REG[5] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[4], fra.me.REG[5]);
+  fra.me.REG[6] = NEW_MMExplicitImport_metamodel___abstractmetamodel___MMExplicitImport___init(fra.me.REG[5], fra.me.REG[6]);
   /* ./syntax//typing.nit:1217 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
   REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[1], COLOR_syntax___syntax_base___MMSrcMethod, ID_syntax___syntax_base___MMSrcMethod)) /*cast MMSrcMethod*/;
@@ -6511,7 +6667,7 @@ void syntax___typing___AExternCall___after_typing(val_t p0, val_t p1){
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1217);
   }
   fra.me.REG[1] = CALL_metamodel___abstractmetamodel___MMMethod___explicit_imports(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[5]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[6]);
   label3: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -6535,7 +6691,7 @@ val_t syntax___typing___ALocalPropExternCall___target_class_name(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -6543,13 +6699,15 @@ val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
   fra.me.line = 1223;
   fra.me.meth = LOCATE_syntax___typing___ALocalPropExternCall___target_method_name;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1223 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = CALL_parser___parser_nodes___ALocalPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1223);
@@ -6557,7 +6715,7 @@ val_t syntax___typing___ALocalPropExternCall___target_method_name(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___ASuperExternCall___after_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -6643,7 +6801,7 @@ val_t syntax___typing___AFullPropExternCall___target_class_name(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -6651,13 +6809,15 @@ val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
   fra.me.line = 1241;
   fra.me.meth = LOCATE_syntax___typing___AFullPropExternCall___target_method_name;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1241 */
-  fra.me.REG[0] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = TAG_Bool((fra.me.REG[0]!=NIT_NULL) && VAL_ISA(fra.me.REG[0], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = CALL_parser___parser_nodes___AFullPropExternCall___n_methid(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[1] = CALL_syntax___syntax_base___AMethid___name(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], COLOR_standard___symbol___Symbol, ID_standard___symbol___Symbol)) /*cast Symbol*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1241);
@@ -6665,7 +6825,7 @@ val_t syntax___typing___AFullPropExternCall___target_method_name(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AInitPropExternCall___target_class_name(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -6783,8 +6943,8 @@ void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
   }
   /* ./syntax//typing.nit:1260 */
   fra.me.REG[3] = CALL_syntax___typing___ACastExternCall___from_type(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[0] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[0]);
+  fra.me.REG[2] = CALL_syntax___typing___ACastExternCall___to_type(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[2] = NEW_MMImportedCast_metamodel___static_type___MMImportedCast___init(fra.me.REG[3], fra.me.REG[2]);
   /* ./syntax//typing.nit:1261 */
   fra.me.REG[1] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
   /* ./syntax//typing.nit:1262 */
@@ -6795,7 +6955,7 @@ void syntax___typing___ACastExternCall___after_typing(val_t p0, val_t p1){
   }
   /* ./syntax//typing.nit:1263 */
   fra.me.REG[1] = CALL_metamodel___static_type___MMMethod___explicit_casts(fra.me.REG[1])(fra.me.REG[1]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
   stack_frame_head = fra.me.prev;
   return;
 }
@@ -6929,7 +7089,7 @@ val_t syntax___typing___AAsNotNullableExternCall___to_type(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -6937,12 +7097,14 @@ val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
   fra.me.line = 1292;
   fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1292 */
-  fra.me.REG[0] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____prop(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1292);
@@ -6950,10 +7112,10 @@ val_t syntax___typing___AAttrFormExpr___prop(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -6961,12 +7123,14 @@ val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
   fra.me.line = 1295;
   fra.me.meth = LOCATE_syntax___typing___AAttrFormExpr___attr_type;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1295 */
-  fra.me.REG[0] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AAttrFormExpr____attr_type(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1295);
@@ -6974,12 +7138,13 @@ val_t syntax___typing___AAttrFormExpr___attr_type(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_2; /* Once value */
     static val_t once_value_3; /* Once value */
@@ -7103,7 +7268,12 @@ void syntax___typing___AAttrFormExpr___do_typing(val_t p0, val_t p1){
   fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalClass___mmmodule(fra.me.REG[6])(fra.me.REG[6]);
   REGB0 = CALL_metamodel___abstractmetamodel___MMModule___visibility_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[6]);
   REGB1 = TAG_Int(3);
-  /* ./../lib/standard//kernel.nit:215 */
+  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:232 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
   /* ./syntax//typing.nit:1314 */
   if (UNTAG_Bool(REGB1)) {
@@ -7405,7 +7575,7 @@ void syntax___typing___AIssetAttrExpr___after_typing(val_t p0, val_t p1){
   return;
 }
 val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -7413,12 +7583,15 @@ val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
   fra.me.line = 1370;
   fra.me.meth = LOCATE_syntax___typing___AAbsAbsSendExpr___prop_signature;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:1370 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:1371 */
-  fra.me.REG[0] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___AAbsAbsSendExpr____prop_signature(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1371);
@@ -7426,7 +7599,7 @@ val_t syntax___typing___AAbsAbsSendExpr___prop_signature(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AAbsAbsSendExpr___raw_arguments(val_t p0){
   struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
@@ -7604,17 +7777,22 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
     if (UNTAG_Bool(REGB3)) {
       nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1402);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     /* ./syntax//typing.nit:1402 */
     REGB2 = REGB3;
   }
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
   /* ./syntax//typing.nit:1403 */
   if (UNTAG_Bool(REGB3)) {
@@ -7623,7 +7801,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB5 = TAG_Bool((REGB1)==(REGB2));
       /* ./syntax//typing.nit:1403 */
       REGB4 = REGB5;
@@ -7631,13 +7809,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:219 */
+      /* ./../lib/standard//kernel.nit:236 */
       REGB4 = TAG_Int(-UNTAG_Int(REGB4));
       /* ./syntax//typing.nit:1403 */
       REGB5 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB4));
       if (UNTAG_Bool(REGB5)) {
       } else {
-        /* ./../lib/standard//kernel.nit:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB4 = TAG_Bool((REGB0)==(REGB4));
         /* ./syntax//typing.nit:1403 */
         REGB5 = REGB4;
@@ -7693,13 +7871,18 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
   REGB5 = TAG_Int(0);
   /* ./syntax//typing.nit:1408 */
   REGB4 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:330 */
+  /* ./../lib/standard//kernel.nit:347 */
   REGB6 = REGB1;
-  /* ./../lib/standard//kernel.nit:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB7 = TAG_Bool(UNTAG_Int(REGB4)<UNTAG_Int(REGB6));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB7)) {
       /* ./syntax//typing.nit:1408 */
       REGB7 = REGB4;
@@ -7709,7 +7892,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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB7 = TAG_Bool((REGB7)==(REGB0));
         /* ./syntax//typing.nit:1411 */
         REGB8 = REGB7;
@@ -7717,72 +7900,87 @@ val_t syntax___typing___AAbsAbsSendExpr___process_signature(val_t p0, val_t p1,
       if (UNTAG_Bool(REGB8)) {
         /* ./syntax//typing.nit:1412 */
         REGB8 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:220 */
+        /* ./../lib/standard//kernel.nit:237 */
         REGB7 = TAG_Int(UNTAG_Int(REGB2)-UNTAG_Int(REGB1));
-        /* ./../lib/standard//kernel.nit:324 */
+        /* ./../lib/standard//kernel.nit:341 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:214 */
+          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:231 */
           REGB9 = TAG_Bool(UNTAG_Int(REGB8)<=UNTAG_Int(REGB7));
-          /* ./../lib/standard//kernel.nit:324 */
+          /* ./../lib/standard//kernel.nit:341 */
           if (UNTAG_Bool(REGB9)) {
             /* ./syntax//typing.nit:1413 */
             REGB9 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
             if (UNTAG_Bool(REGB9)) {
               nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1413);
             }
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[0] = fra.me.REG[4];
             REGB9 = REGB5;
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB10 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB10 = TAG_Bool(UNTAG_Int(REGB9)>=UNTAG_Int(REGB10));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
               }
               REGB10 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[0]);
-              /* ./../lib/standard//kernel.nit:215 */
+              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:232 */
               REGB10 = TAG_Bool(UNTAG_Int(REGB9)<UNTAG_Int(REGB10));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB11 = TAG_Bool(false);
               REGB10 = REGB11;
             }
             if (UNTAG_Bool(REGB10)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[0] = ((Nit_NativeArray)fra.me.REG[0])->val[UNTAG_Int(REGB9)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label5;
             label5: while(0);
             /* ./syntax//typing.nit:1414 */
             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:1415 */
             REGB9 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB9 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB9));
             /* ./syntax//typing.nit:1415 */
             REGB5 = REGB9;
-            /* ./../lib/standard//kernel.nit:326 */
+            /* ./../lib/standard//kernel.nit:343 */
             REGB9 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB9 = TAG_Int(UNTAG_Int(REGB8)+UNTAG_Int(REGB9));
-            /* ./../lib/standard//kernel.nit:326 */
+            /* ./../lib/standard//kernel.nit:343 */
             REGB8 = REGB9;
           } else {
-            /* ./../lib/standard//kernel.nit:324 */
+            /* ./../lib/standard//kernel.nit:341 */
             goto label6;
           }
         }
@@ -7793,41 +7991,51 @@ 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, 1418);
         }
-        /* ./../lib/standard//collection//array.nit:243 */
+        /* ./../lib/standard//collection//array.nit:278 */
         fra.me.REG[3] = fra.me.REG[4];
         REGB8 = REGB5;
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         REGB7 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:216 */
+        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:233 */
         REGB7 = TAG_Bool(UNTAG_Int(REGB8)>=UNTAG_Int(REGB7));
-        /* ./../lib/standard//collection//array.nit:245 */
+        /* ./../lib/standard//collection//array.nit:280 */
         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, 245);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
           }
           REGB7 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB7 = TAG_Bool(UNTAG_Int(REGB8)<UNTAG_Int(REGB7));
         } else {
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB9 = TAG_Bool(false);
           REGB7 = REGB9;
         }
         if (UNTAG_Bool(REGB7)) {
         } else {
-          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+          nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
         }
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         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, 246);
+          nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
         }
-        /* ./../lib/standard//collection//array.nit:654 */
+        /* ./../lib/standard//collection//array.nit:718 */
         fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB8)];
-        /* ./../lib/standard//collection//array.nit:246 */
+        /* ./../lib/standard//collection//array.nit:281 */
         goto label7;
         label7: while(0);
         /* ./syntax//typing.nit:1418 */
@@ -7836,19 +8044,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:1420 */
         REGB8 = TAG_Int(1);
-        /* ./../lib/standard//kernel.nit:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB8 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB8));
         /* ./syntax//typing.nit:1420 */
         REGB5 = REGB8;
       }
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB8 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB8 = TAG_Int(UNTAG_Int(REGB4)+UNTAG_Int(REGB8));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB4 = REGB8;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label8;
     }
   }
@@ -7924,57 +8132,62 @@ 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:1431 */
   REGB0 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:231 */
+  /* ./../lib/standard//collection//array.nit:266 */
   fra.me.REG[7] = fra.me.REG[6];
-  /* ./../lib/standard//collection//array.nit:234 */
+  /* ./../lib/standard//collection//array.nit:269 */
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//collection//array.nit:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB2));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB2)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../lib/standard//collection//array.nit:273 */
       REGB2 = TAG_Bool(fra.me.REG[8]==NIT_NULL);
       if (UNTAG_Bool(REGB2)) {
-        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[8])->val[UNTAG_Int(REGB1)];
       /* ./syntax//typing.nit:1433 */
       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:218 */
+        /* ./../lib/standard//kernel.nit:235 */
         REGB2 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB2));
         /* ./syntax//typing.nit:1433 */
         REGB0 = REGB2;
       }
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB2 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB2 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB2));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = REGB2;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label1;
     }
   }
@@ -8000,26 +8213,31 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
     if (UNTAG_Bool(REGB2)) {
       nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1436);
     }
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
     /* ./syntax//typing.nit:1436 */
     REGB1 = REGB2;
   }
-  /* ./../lib/standard//collection//array.nit:23 */
+  /* ./../lib/standard//collection//array.nit:24 */
   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, 23);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
   }
   REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
   /* ./syntax//typing.nit:1437 */
   REGB3 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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:234 */
   REGB3 = TAG_Bool(UNTAG_Int(REGB2)>UNTAG_Int(REGB3));
   /* ./syntax//typing.nit:1437 */
   if (UNTAG_Bool(REGB3)) {
@@ -8028,14 +8246,19 @@ 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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB3 = TAG_Bool((REGB1)==(REGB3));
       /* ./syntax//typing.nit:1438 */
       REGB2 = REGB3;
     }
     if (UNTAG_Bool(REGB2)) {
       REGB2 = TAG_Int(0);
-      /* ./../lib/standard//kernel.nit:217 */
+      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 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB2));
     } else {
       /* ./syntax//typing.nit:1438 */
@@ -8066,11 +8289,11 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       } else fra.me.REG[7] = once_value_3;
       fra.me.REG[7] = fra.me.REG[7];
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
       /* ./syntax//typing.nit:1439 */
@@ -8088,20 +8311,30 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
       fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[8])(fra.me.REG[8]);
       CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[8]);
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-      /* ./../lib/standard//kernel.nit:217 */
+      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 */
       REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
       /* ./syntax//typing.nit:1440 */
       if (UNTAG_Bool(REGB2)) {
         REGB2 = TAG_Bool(true);
       } else {
-        /* ./../lib/standard//kernel.nit:215 */
+        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:232 */
         REGB0 = TAG_Bool(UNTAG_Int(REGB1)<UNTAG_Int(REGB0));
         /* ./syntax//typing.nit:1440 */
         REGB2 = REGB0;
@@ -8130,11 +8363,11 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         } else fra.me.REG[7] = once_value_6;
         fra.me.REG[7] = fra.me.REG[7];
         CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[7]);
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
         /* ./syntax//typing.nit:1441 */
@@ -8153,11 +8386,11 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         if (UNTAG_Bool(REGB2)) {
           nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1441);
         }
-        /* ./../lib/standard//collection//array.nit:23 */
+        /* ./../lib/standard//collection//array.nit:24 */
         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, 23);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
         }
         REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[4]);
         /* ./syntax//typing.nit:1441 */
@@ -8197,52 +8430,67 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         }
         /* ./syntax//typing.nit:1448 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:217 */
+        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:234 */
         REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
         /* ./syntax//typing.nit:1448 */
         if (UNTAG_Bool(REGB2)) {
           REGB2 = TAG_Int(1);
-          /* ./../lib/standard//kernel.nit:220 */
+          /* ./../lib/standard//kernel.nit:237 */
           REGB2 = TAG_Int(UNTAG_Int(REGB1)-UNTAG_Int(REGB2));
           /* ./syntax//typing.nit:1448 */
           REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
           if (UNTAG_Bool(REGB0)) {
             nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1448);
           }
-          /* ./../lib/standard//collection//array.nit:243 */
+          /* ./../lib/standard//collection//array.nit:278 */
           fra.me.REG[7] = fra.me.REG[4];
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           REGB0 = TAG_Int(0);
-          /* ./../lib/standard//kernel.nit:216 */
+          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:233 */
           REGB0 = TAG_Bool(UNTAG_Int(REGB2)>=UNTAG_Int(REGB0));
-          /* ./../lib/standard//collection//array.nit:245 */
+          /* ./../lib/standard//collection//array.nit:280 */
           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, 245);
+              nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
             }
             REGB0 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
-            /* ./../lib/standard//kernel.nit:215 */
+            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:232 */
             REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
           } else {
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB3 = TAG_Bool(false);
             REGB0 = REGB3;
           }
           if (UNTAG_Bool(REGB0)) {
           } else {
-            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+            nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
           }
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           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, 246);
+            nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
           }
-          /* ./../lib/standard//collection//array.nit:654 */
+          /* ./../lib/standard//collection//array.nit:718 */
           fra.me.REG[7] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB2)];
-          /* ./../lib/standard//collection//array.nit:246 */
+          /* ./../lib/standard//collection//array.nit:281 */
           goto label9;
           label9: while(0);
           /* ./syntax//typing.nit:1448 */
@@ -8256,13 +8504,18 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
         }
         /* ./syntax//typing.nit:1451 */
         REGB2 = TAG_Int(0);
-        /* ./../lib/standard//kernel.nit:330 */
+        /* ./../lib/standard//kernel.nit:347 */
         REGB0 = REGB1;
-        /* ./../lib/standard//kernel.nit:335 */
+        /* ./../lib/standard//kernel.nit:352 */
         while(1) {
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB3 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB0));
-          /* ./../lib/standard//kernel.nit:335 */
+          /* ./../lib/standard//kernel.nit:352 */
           if (UNTAG_Bool(REGB3)) {
             /* ./syntax//typing.nit:1451 */
             REGB3 = REGB2;
@@ -8271,40 +8524,50 @@ 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, 1452);
             }
-            /* ./../lib/standard//collection//array.nit:243 */
+            /* ./../lib/standard//collection//array.nit:278 */
             fra.me.REG[9] = fra.me.REG[4];
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             REGB4 = TAG_Int(0);
-            /* ./../lib/standard//kernel.nit:216 */
+            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:233 */
             REGB4 = TAG_Bool(UNTAG_Int(REGB3)>=UNTAG_Int(REGB4));
-            /* ./../lib/standard//collection//array.nit:245 */
+            /* ./../lib/standard//collection//array.nit:280 */
             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, 245);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+              }
+              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*/;
+              if (UNTAG_Bool(REGB5)) {
+              } else {
+               nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
               }
-              REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[9]);
-              /* ./../lib/standard//kernel.nit:215 */
+              /* ./../lib/standard//kernel.nit:232 */
               REGB4 = TAG_Bool(UNTAG_Int(REGB3)<UNTAG_Int(REGB4));
             } else {
-              /* ./../lib/standard//collection//array.nit:245 */
+              /* ./../lib/standard//collection//array.nit:280 */
               REGB5 = TAG_Bool(false);
               REGB4 = REGB5;
             }
             if (UNTAG_Bool(REGB4)) {
             } else {
-              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 245);
+              nit_abort("Assert %s  failed", "'index'", LOCATE_standard___collection___array, 280);
             }
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             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, 246);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[9] = ((Nit_NativeArray)fra.me.REG[9])->val[UNTAG_Int(REGB3)];
-            /* ./../lib/standard//collection//array.nit:246 */
+            /* ./../lib/standard//collection//array.nit:281 */
             goto label10;
             label10: while(0);
             /* ./syntax//typing.nit:1453 */
@@ -8338,11 +8601,11 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
               fra.me.REG[11] = CALL_syntax___typing___TypingVisitor___scope_ctx(fra.me.REG[1])(fra.me.REG[1]);
               CALL_syntax___scope___ScopeContext___pop(fra.me.REG[11])(fra.me.REG[11]);
             } else {
-              /* ./../lib/standard//collection//array.nit:23 */
+              /* ./../lib/standard//collection//array.nit:24 */
               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, 23);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
               }
               REGB3 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
               /* ./syntax//typing.nit:1460 */
@@ -8350,7 +8613,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:210 */
+               /* ./../lib/standard//kernel.nit:227 */
                REGB4 = TAG_Bool((REGB3)==(REGB4));
                /* ./syntax//typing.nit:1460 */
                REGB5 = REGB4;
@@ -8413,38 +8676,43 @@ val_t syntax___typing___AAbsAbsSendExpr___process_closures(val_t p0, val_t p1, v
               } else {
                /* ./syntax//typing.nit:1463 */
                fra.me.REG[12] = NEW_Array_standard___collection___array___Array___init();
-               /* ./../lib/standard//collection//array.nit:231 */
+               /* ./../lib/standard//collection//array.nit:266 */
                fra.me.REG[11] = fra.me.REG[6];
-               /* ./../lib/standard//collection//array.nit:234 */
+               /* ./../lib/standard//collection//array.nit:269 */
                REGB5 = TAG_Int(0);
-               /* ./../lib/standard//collection//array.nit:235 */
+               /* ./../lib/standard//collection//array.nit:270 */
                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, 235);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
-               /* ./../lib/standard//collection//array.nit:236 */
+               /* ./../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:237 */
+               /* ./../lib/standard//collection//array.nit:272 */
                while(1) {
-               /* ./../lib/standard//collection//array.nit:23 */
+               /* ./../lib/standard//collection//array.nit:24 */
                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, 23);
+               nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
                }
                REGB4 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[11]);
-               /* ./../lib/standard//kernel.nit:215 */
+               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:232 */
                REGB4 = TAG_Bool(UNTAG_Int(REGB5)<UNTAG_Int(REGB4));
-               /* ./../lib/standard//collection//array.nit:237 */
+               /* ./../lib/standard//collection//array.nit:272 */
                if (UNTAG_Bool(REGB4)) {
-               /* ./../lib/standard//collection//array.nit:238 */
+               /* ./../lib/standard//collection//array.nit:273 */
                REGB4 = TAG_Bool(fra.me.REG[13]==NIT_NULL);
                if (UNTAG_Bool(REGB4)) {
-               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+               nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
                }
-               /* ./../lib/standard//collection//array.nit:654 */
+               /* ./../lib/standard//collection//array.nit:718 */
                fra.me.REG[14] = ((Nit_NativeArray)fra.me.REG[13])->val[UNTAG_Int(REGB5)];
                /* ./syntax//typing.nit:1465 */
                REGB4 = TAG_Int(3);
@@ -8472,14 +8740,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:239 */
+               /* ./../lib/standard//collection//array.nit:274 */
                REGB4 = TAG_Int(1);
-               /* ./../lib/standard//kernel.nit:218 */
+               /* ./../lib/standard//kernel.nit:235 */
                REGB4 = TAG_Int(UNTAG_Int(REGB5)+UNTAG_Int(REGB4));
-               /* ./../lib/standard//collection//array.nit:239 */
+               /* ./../lib/standard//collection//array.nit:274 */
                REGB5 = REGB4;
                } else {
-               /* ./../lib/standard//collection//array.nit:237 */
+               /* ./../lib/standard//collection//array.nit:272 */
                goto label17;
                }
                }
@@ -8542,14 +8810,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:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB5 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB5 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB5));
-            /* ./../lib/standard//kernel.nit:337 */
+            /* ./../lib/standard//kernel.nit:354 */
             REGB2 = REGB5;
           } else {
-            /* ./../lib/standard//kernel.nit:335 */
+            /* ./../lib/standard//kernel.nit:352 */
             goto label23;
           }
         }
@@ -8581,7 +8849,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:210 */
+      /* ./../lib/standard//kernel.nit:227 */
       REGB2 = TAG_Bool((REGB1)==(REGB2));
       /* ./syntax//typing.nit:1476 */
       REGB0 = REGB2;
@@ -8894,16 +9162,21 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
   if (UNTAG_Bool(REGB1)) {
     /* ./syntax//typing.nit:1513 */
     fra.me.REG[7] = CALL_metamodel___abstractmetamodel___MMLocalClass___super_methods_named(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[3]);
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
     }
     REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
     /* ./syntax//typing.nit:1514 */
     REGB2 = TAG_Int(1);
-    /* ./../lib/standard//kernel.nit:217 */
+    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 */
     REGB2 = TAG_Bool(UNTAG_Int(REGB1)>UNTAG_Int(REGB2));
     /* ./syntax//typing.nit:1514 */
     if (UNTAG_Bool(REGB2)) {
@@ -8955,11 +9228,11 @@ val_t syntax___typing___AAbsSendExpr___get_property(val_t p0, val_t p1, val_t p2
       fra.me.REG[4] = NIT_NULL;
       goto label7;
     } else {
-      /* ./../lib/standard//collection//array.nit:23 */
+      /* ./../lib/standard//collection//array.nit:24 */
       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, 23);
+        nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
       }
       REGB2 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[7]);
       /* ./syntax//typing.nit:1517 */
@@ -8967,7 +9240,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:210 */
+        /* ./../lib/standard//kernel.nit:227 */
         REGB1 = TAG_Bool((REGB2)==(REGB1));
         /* ./syntax//typing.nit:1517 */
         REGB3 = REGB1;
@@ -9133,7 +9406,7 @@ val_t syntax___typing___AAbsSendExpr___get_signature(val_t p0, val_t p1, val_t p
   return fra.me.REG[2];
 }
 val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -9141,12 +9414,15 @@ val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
   fra.me.line = 1544;
   fra.me.meth = LOCATE_syntax___typing___AAbsSendExpr___prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
+  /* ./syntax//typing.nit:1544 */
+  fra.me.REG[1] = fra.me.REG[0];
   /* ./syntax//typing.nit:1545 */
-  fra.me.REG[0] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1545);
@@ -9154,7 +9430,7 @@ val_t syntax___typing___AAbsSendExpr___prop(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AAbsSendExpr___return_type(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -9209,28 +9485,30 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   fra.me.REG[2] = p2;
+  /* ./syntax//typing.nit:1555 */
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./syntax//typing.nit:1557 */
-  fra.me.REG[3] = CALL_parser___parser_prod___ANode___parent(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(IS_EQUAL_NN(fra.me.REG[3],fra.me.REG[4]));
+  fra.me.REG[4] = CALL_parser___parser_prod___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)) {
   } else {
-    REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB1)) {
       REGB1 = TAG_Bool(false);
       REGB0 = REGB1;
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
       REGB0 = REGB1;
     }
   }
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
-    fra.me.REG[4] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
-    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[0],fra.me.REG[4]));
+    fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___top_block(fra.me.REG[1])(fra.me.REG[1]);
+    REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[5]));
     if (UNTAG_Bool(REGB0)) {
     } else {
-      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
+      REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
       REGB0 = REGB1;
     }
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
@@ -9241,71 +9519,71 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1558 */
     REGB0 = TAG_Int(3);
-    fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+    fra.me.REG[5] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
     if (!once_value_1) {
-      fra.me.REG[3] = BOX_NativeString("Error: Constructor invocation ");
+      fra.me.REG[4] = BOX_NativeString("Error: Constructor invocation ");
       REGB0 = TAG_Int(30);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_1 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_1 = fra.me.REG[4];
       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[4])(fra.me.REG[4], fra.me.REG[3]);
-    fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+    } else fra.me.REG[4] = once_value_1;
+    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]);
+    fra.me.REG[4] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+    CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
     if (!once_value_2) {
-      fra.me.REG[3] = BOX_NativeString(" must not be in nested block.");
+      fra.me.REG[4] = BOX_NativeString(" must not be in nested block.");
       REGB0 = TAG_Int(29);
-      fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-      once_value_2 = fra.me.REG[3];
+      fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+      once_value_2 = fra.me.REG[4];
       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[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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+    } else fra.me.REG[4] = once_value_2;
+    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]);
+    fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+    CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[5]);
   }
   /* ./syntax//typing.nit:1560 */
-  fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+  fra.me.REG[5] = CALL_syntax___syntax_base___AbsSyntaxVisitor___mmmodule(fra.me.REG[1])(fra.me.REG[1]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalClass___global(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMModule_____bra(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
   /* ./syntax//typing.nit:1561 */
-  fra.me.REG[4] = NIT_NULL;
+  fra.me.REG[5] = NIT_NULL;
   /* ./syntax//typing.nit:1562 */
-  fra.me.REG[5] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  fra.me.REG[6] = CALL_syntax___typing___TypingVisitor___explicit_super_init_calls(fra.me.REG[1])(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1562);
   }
   /* ./syntax//typing.nit:1563 */
-  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[5])(fra.me.REG[5]);
+  REGB0 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[6])(fra.me.REG[6]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1564 */
-    fra.me.REG[6] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[5])(fra.me.REG[5]);
-    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
+    fra.me.REG[0] = CALL_standard___collection___abstract_collection___SequenceRead___last(fra.me.REG[6])(fra.me.REG[6]);
+    REGB0 = TAG_Bool(fra.me.REG[0]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1564);
     }
-    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
-    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[6])(fra.me.REG[6]);
-    fra.me.REG[6] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[6])(fra.me.REG[6]);
-    fra.me.REG[4] = fra.me.REG[6];
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___local_class(fra.me.REG[0])(fra.me.REG[0]);
+    fra.me.REG[5] = fra.me.REG[0];
   }
   /* ./syntax//typing.nit:1566 */
-  fra.me.REG[6] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-  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___reverse_linear_extension(fra.me.REG[6])(fra.me.REG[6]);
+  fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
+  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___reverse_linear_extension(fra.me.REG[0])(fra.me.REG[0]);
   /* ./syntax//typing.nit:1567 */
   fra.me.REG[7] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_class(fra.me.REG[1])(fra.me.REG[1]);
-  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[3],fra.me.REG[7]));
+  REGB0 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[4],fra.me.REG[7]));
   if (UNTAG_Bool(REGB0)) {
   } else {
-    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[7]);
+    REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[7]);
     REGB0 = REGB1;
   }
   if (UNTAG_Bool(REGB0)) {
@@ -9314,7 +9592,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
     CALL_syntax___typing___TypingVisitor___explicit_other_init_call__eq(fra.me.REG[1])(fra.me.REG[1], REGB0);
   } else {
     /* ./syntax//typing.nit:1569 */
-    REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[3]);
+    REGB0 = CALL_standard___collection___abstract_collection___Collection___has(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[4]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:1570 */
@@ -9329,7 +9607,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       } else fra.me.REG[8] = once_value_3;
       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]);
-      fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[8] = 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[8]);
       if (!once_value_4) {
         fra.me.REG[8] = BOX_NativeString(" must be one in ");
@@ -9348,7 +9626,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         register_static_object(&once_value_5);
       } else fra.me.REG[8] = once_value_5;
       fra.me.REG[8] = fra.me.REG[8];
-      fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[8]);
+      fra.me.REG[8] = CALL_standard___string___Collection___join(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[8]);
       CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[7])(fra.me.REG[7], fra.me.REG[8]);
       if (!once_value_6) {
         fra.me.REG[8] = BOX_NativeString(".");
@@ -9360,13 +9638,13 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
       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]);
       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[0], 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 {
       /* ./syntax//typing.nit:1571 */
-      REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[3],fra.me.REG[4]));
+      REGB0 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[4],fra.me.REG[5]));
       if (UNTAG_Bool(REGB0)) {
       } else {
-        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+        REGB1 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[5]);
         REGB0 = REGB1;
       }
       if (UNTAG_Bool(REGB0)) {
@@ -9382,7 +9660,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         } else fra.me.REG[8] = once_value_7;
         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]);
-        fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+        fra.me.REG[8] = 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[8]);
         if (!once_value_8) {
           fra.me.REG[8] = BOX_NativeString(" is allowed.");
@@ -9394,68 +9672,73 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
         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]);
         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[0], 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:234 */
+        /* ./../lib/standard//collection//array.nit:269 */
         REGB0 = TAG_Int(0);
-        /* ./../lib/standard//collection//array.nit:235 */
-        REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+        /* ./../lib/standard//collection//array.nit:270 */
+        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, 235);
+          nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
         }
-        REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:236 */
-        fra.me.REG[7] = ATTR_standard___collection___array___Array____items(fra.me.REG[6]);
-        /* ./../lib/standard//collection//array.nit:237 */
+        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 */
         while(1) {
-          /* ./../lib/standard//collection//array.nit:23 */
-          REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6])!=NIT_NULL);
+          /* ./../lib/standard//collection//array.nit:24 */
+          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, 23);
+            nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 24);
           }
-          REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[6]);
-          /* ./../lib/standard//kernel.nit:215 */
+          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:232 */
           REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-          /* ./../lib/standard//collection//array.nit:237 */
+          /* ./../lib/standard//collection//array.nit:272 */
           if (UNTAG_Bool(REGB1)) {
-            /* ./../lib/standard//collection//array.nit:238 */
+            /* ./../lib/standard//collection//array.nit:273 */
             REGB1 = TAG_Bool(fra.me.REG[7]==NIT_NULL);
             if (UNTAG_Bool(REGB1)) {
-              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 238);
+              nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
             }
-            /* ./../lib/standard//collection//array.nit:654 */
+            /* ./../lib/standard//collection//array.nit:718 */
             fra.me.REG[8] = ((Nit_NativeArray)fra.me.REG[7])->val[UNTAG_Int(REGB0)];
             /* ./syntax//typing.nit:1575 */
-            REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[4]));
+            REGB1 = TAG_Bool(IS_EQUAL_ON(fra.me.REG[8],fra.me.REG[5]));
             if (UNTAG_Bool(REGB1)) {
             } else {
-              REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
+              REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[5]);
               REGB1 = REGB2;
             }
             if (UNTAG_Bool(REGB1)) {
               /* ./syntax//typing.nit:1576 */
-              fra.me.REG[4] = NIT_NULL;
+              fra.me.REG[5] = NIT_NULL;
             } else {
               /* ./syntax//typing.nit:1577 */
-              REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[3]));
+              REGB1 = TAG_Bool(IS_EQUAL_OO(fra.me.REG[8],fra.me.REG[4]));
               if (UNTAG_Bool(REGB1)) {
               } else {
-               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[3]);
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[8])(fra.me.REG[8], fra.me.REG[4]);
                REGB1 = REGB2;
               }
               if (UNTAG_Bool(REGB1)) {
                /* ./syntax//typing.nit:1578 */
-               REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+               REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
                if (UNTAG_Bool(REGB1)) {
                } else {
-               REGB2 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+               REGB2 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
                if (UNTAG_Bool(REGB2)) {
                REGB2 = TAG_Bool(false);
                REGB1 = REGB2;
                } else {
-               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+               REGB2 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
                REGB1 = REGB2;
                }
                }
@@ -9484,7 +9767,7 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
                } else fra.me.REG[8] = once_value_10;
                fra.me.REG[8] = fra.me.REG[8];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
-               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+               fra.me.REG[8] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
                if (!once_value_11) {
                fra.me.REG[8] = BOX_NativeString("");
@@ -9496,22 +9779,22 @@ void syntax___typing___ASuperInitCall___register_super_init_call(val_t p0, val_t
                fra.me.REG[8] = fra.me.REG[8];
                CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[9])(fra.me.REG[9], fra.me.REG[8]);
                fra.me.REG[9] = CALL_standard___string___Object___to_s(fra.me.REG[9])(fra.me.REG[9]);
-               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[9]);
+               CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3], fra.me.REG[9]);
                }
                /* ./syntax//typing.nit:1581 */
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[2]);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[6])(fra.me.REG[6], fra.me.REG[2]);
                /* ./syntax//typing.nit:1582 */
                goto label12;
               }
             }
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB1 = TAG_Int(1);
-            /* ./../lib/standard//kernel.nit:218 */
+            /* ./../lib/standard//kernel.nit:235 */
             REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-            /* ./../lib/standard//collection//array.nit:239 */
+            /* ./../lib/standard//collection//array.nit:274 */
             REGB0 = REGB1;
           } else {
-            /* ./../lib/standard//collection//array.nit:237 */
+            /* ./../lib/standard//collection//array.nit:272 */
             goto label13;
           }
         }
@@ -9767,7 +10050,7 @@ void syntax___typing___ASendExpr___after_typing(val_t p0, val_t p1){
   return;
 }
 void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
-  struct {struct stack_frame_t me; val_t MORE_REG[5];} fra;
+  struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
   val_t tmp;
@@ -9780,44 +10063,47 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
   fra.me.line = 1632;
   fra.me.meth = LOCATE_syntax___typing___ASendExpr___do_all_typing;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 6;
+  fra.me.REG_size = 7;
   fra.me.REG[0] = NIT_NULL;
   fra.me.REG[1] = NIT_NULL;
   fra.me.REG[2] = NIT_NULL;
   fra.me.REG[3] = NIT_NULL;
   fra.me.REG[4] = NIT_NULL;
   fra.me.REG[5] = NIT_NULL;
+  fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:1632 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:1634 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___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[2]);
+  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
   /* ./syntax//typing.nit:1635 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[2] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[4] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[2], REGB0, REGB1, fra.me.REG[3], fra.me.REG[4], fra.me.REG[5]);
+  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___syntax_base___AExpr___stype(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[5] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[6] = CALL_syntax___syntax_base___ASendExpr___closure_defs(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[3], REGB0, REGB1, fra.me.REG[4], fra.me.REG[5], fra.me.REG[6]);
   /* ./syntax//typing.nit:1636 */
-  fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+  fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[6]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(false);
       REGB1 = REGB0;
     } else {
-      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
+      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[6])(fra.me.REG[6], NIT_NULL);
       REGB1 = REGB0;
     }
   }
@@ -9825,96 +10111,96 @@ void syntax___typing___ASendExpr___do_all_typing(val_t p0, val_t p1){
     goto label1;
   }
   /* ./syntax//typing.nit:1637 */
-  fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
-  REGB1 = TAG_Bool(fra.me.REG[5]!=NIT_NULL);
+  fra.me.REG[6] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
+  REGB1 = TAG_Bool(fra.me.REG[6]!=NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1637);
   }
   /* ./syntax//typing.nit:1639 */
-  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
-  REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[6])(fra.me.REG[6]);
+  REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
   if (UNTAG_Bool(REGB1)) {
     /* ./syntax//typing.nit:1640 */
-    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
-    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[0] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[0] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[0])(fra.me.REG[0]);
+    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[0])(fra.me.REG[0]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
       /* ./syntax//typing.nit:1641 */
       REGB1 = TAG_Int(3);
-      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_2) {
-        fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
+        fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
         REGB1 = TAG_Int(33);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_2 = fra.me.REG[3];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_2 = fra.me.REG[5];
         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[4])(fra.me.REG[4], fra.me.REG[3]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+      } else fra.me.REG[5] = once_value_2;
+      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[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
       if (!once_value_3) {
-        fra.me.REG[3] = BOX_NativeString(" in a method.");
+        fra.me.REG[5] = BOX_NativeString(" in a method.");
         REGB1 = TAG_Int(13);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-        once_value_3 = fra.me.REG[3];
+        fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+        once_value_3 = fra.me.REG[5];
         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[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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+      } else fra.me.REG[5] = once_value_3;
+      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]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
     } else {
       /* ./syntax//typing.nit:1642 */
-      fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-      REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
+      fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         /* ./syntax//typing.nit:1643 */
         REGB1 = TAG_Int(3);
-        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+        fra.me.REG[0] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_4) {
-          fra.me.REG[3] = BOX_NativeString("Error: constructor ");
+          fra.me.REG[5] = BOX_NativeString("Error: constructor ");
           REGB1 = TAG_Int(19);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-          once_value_4 = fra.me.REG[3];
+          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          once_value_4 = fra.me.REG[5];
           register_static_object(&once_value_4);
-        } else fra.me.REG[3] = once_value_4;
-        fra.me.REG[3] = fra.me.REG[3];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-        fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
+        } else fra.me.REG[5] = once_value_4;
+        fra.me.REG[5] = fra.me.REG[5];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
+        fra.me.REG[5] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[5]);
         if (!once_value_5) {
-          fra.me.REG[3] = BOX_NativeString(" is not invoken on 'self'.");
+          fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
           REGB1 = TAG_Int(26);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB1);
-          once_value_5 = fra.me.REG[3];
+          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
+          once_value_5 = fra.me.REG[5];
           register_static_object(&once_value_5);
-        } else fra.me.REG[3] = once_value_5;
-        fra.me.REG[3] = fra.me.REG[3];
-        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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[4]);
+        } else fra.me.REG[5] = once_value_5;
+        fra.me.REG[5] = fra.me.REG[5];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[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_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[0]);
       } else {
         /* ./syntax//typing.nit:1645 */
-        CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5]);
+        CALL_syntax___typing___ASuperInitCall___register_super_init_call(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[6]);
       }
     }
   }
   /* ./syntax//typing.nit:1649 */
-  fra.me.REG[5] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[0])(fra.me.REG[0]);
-  ATTR_syntax___typing___AExpr____stype(fra.me.REG[0]) = fra.me.REG[5];
+  fra.me.REG[6] = CALL_syntax___syntax_base___AAbsSendExpr___return_type(fra.me.REG[2])(fra.me.REG[2]);
+  ATTR_syntax___typing___AExpr____stype(fra.me.REG[2]) = fra.me.REG[6];
   /* ./syntax//typing.nit:1650 */
   REGB1 = TAG_Bool(true);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB1;
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
 }
 val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -9922,12 +10208,14 @@ val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
   fra.me.line = 1655;
   fra.me.meth = LOCATE_syntax___typing___ASendReassignExpr___read_prop;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1655 */
-  fra.me.REG[0] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1655);
@@ -9935,7 +10223,7 @@ val_t syntax___typing___ASendReassignExpr___read_prop(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
@@ -9968,36 +10256,38 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
   fra.me.REG[6] = NIT_NULL;
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
+  /* ./syntax//typing.nit:1657 */
+  fra.me.REG[2] = fra.me.REG[0];
   /* ./syntax//typing.nit:1659 */
-  fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___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[2]);
+  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___syntax_base___AbsSyntaxVisitor___check_expr(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
   REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
   if (UNTAG_Bool(REGB0)) {
     goto label1;
   }
   /* ./syntax//typing.nit:1660 */
-  fra.me.REG[2] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[3] = CALL_syntax___syntax_base___AAbsAbsSendExpr___raw_arguments(fra.me.REG[2])(fra.me.REG[2]);
   /* ./syntax//typing.nit:1661 */
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___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]);
-  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
-  fra.me.REG[4] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3], REGB0, REGB1, fra.me.REG[4], fra.me.REG[2], NIT_NULL);
+  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]);
+  fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[5] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4], REGB0, REGB1, fra.me.REG[5], fra.me.REG[3], NIT_NULL);
   /* ./syntax//typing.nit:1662 */
-  fra.me.REG[4] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[0]);
+  fra.me.REG[5] = ATTR_syntax___typing___AAbsSendExpr____prop(fra.me.REG[2]);
   /* ./syntax//typing.nit:1663 */
-  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(false);
       REGB1 = REGB0;
     } else {
-      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
+      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[5])(fra.me.REG[5], NIT_NULL);
       REGB1 = REGB0;
     }
   }
@@ -10005,112 +10295,112 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
     goto label1;
   }
   /* ./syntax//typing.nit:1664 */
-  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1664);
   }
-  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
-  REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
+  REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
   if (UNTAG_Bool(REGB1)) {
     /* ./syntax//typing.nit:1665 */
-    fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
-    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
+    fra.me.REG[4] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
+    REGB1 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[4])(fra.me.REG[4]);
     REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
     if (UNTAG_Bool(REGB1)) {
       /* ./syntax//typing.nit:1666 */
       REGB1 = TAG_Int(3);
-      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+      fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
       if (!once_value_2) {
-        fra.me.REG[5] = BOX_NativeString("Error: try to invoke constructor ");
+        fra.me.REG[6] = 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);
-        once_value_2 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_2 = fra.me.REG[6];
         register_static_object(&once_value_2);
-      } else fra.me.REG[5] = once_value_2;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-      fra.me.REG[5] = CALL_standard___string___Object___to_s(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[5]);
+      } else fra.me.REG[6] = once_value_2;
+      fra.me.REG[6] = fra.me.REG[6];
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+      fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
       if (!once_value_3) {
-        fra.me.REG[5] = BOX_NativeString(" in a method.");
+        fra.me.REG[6] = 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);
-        once_value_3 = fra.me.REG[5];
+        fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+        once_value_3 = fra.me.REG[6];
         register_static_object(&once_value_3);
-      } else fra.me.REG[5] = once_value_3;
-      fra.me.REG[5] = fra.me.REG[5];
-      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-      fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+      } else fra.me.REG[6] = once_value_3;
+      fra.me.REG[6] = fra.me.REG[6];
+      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___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
     } else {
       /* ./syntax//typing.nit:1667 */
-      fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-      REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
+      fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         /* ./syntax//typing.nit:1668 */
         REGB1 = TAG_Int(3);
-        fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
+        fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB1);
         if (!once_value_4) {
-          fra.me.REG[5] = BOX_NativeString("Error: constructor ");
+          fra.me.REG[6] = BOX_NativeString("Error: constructor ");
           REGB1 = TAG_Int(19);
-          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB1);
-          once_value_4 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          once_value_4 = fra.me.REG[6];
           register_static_object(&once_value_4);
-        } else fra.me.REG[5] = once_value_4;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-        fra.me.REG[5] = CALL_standard___string___Object___to_s(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[5]);
+        } else fra.me.REG[6] = once_value_4;
+        fra.me.REG[6] = fra.me.REG[6];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
+        fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
         if (!once_value_5) {
-          fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
+          fra.me.REG[6] = 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);
-          once_value_5 = fra.me.REG[5];
+          fra.me.REG[6] = NEW_String_standard___string___String___with_native(fra.me.REG[6], REGB1);
+          once_value_5 = fra.me.REG[6];
           register_static_object(&once_value_5);
-        } else fra.me.REG[5] = once_value_5;
-        fra.me.REG[5] = fra.me.REG[5];
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
-        fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3]);
+        } else fra.me.REG[6] = once_value_5;
+        fra.me.REG[6] = fra.me.REG[6];
+        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___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4]);
       }
     }
   }
   /* ./syntax//typing.nit:1671 */
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___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]);
-  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  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]);
+  REGB1 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1671);
   }
-  fra.me.REG[3] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[3]);
-  fra.me.REG[3] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[3])(fra.me.REG[3]);
-  REGB1 = TAG_Bool((fra.me.REG[3]!=NIT_NULL) && VAL_ISA(fra.me.REG[3], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
+  fra.me.REG[4] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra.me.REG[5])(fra.me.REG[5], fra.me.REG[4]);
+  fra.me.REG[4] = CALL_metamodel___static_type___MMSignature___return_type(fra.me.REG[4])(fra.me.REG[4]);
+  REGB1 = TAG_Bool((fra.me.REG[4]!=NIT_NULL) && VAL_ISA(fra.me.REG[4], COLOR_metamodel___static_type___MMType, ID_metamodel___static_type___MMType)) /*cast MMType*/;
   if (UNTAG_Bool(REGB1)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1671);
   }
   /* ./syntax//typing.nit:1672 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[5])(fra.me.REG[5]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[0])(fra.me.REG[0]);
   REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
   if (UNTAG_Bool(REGB1)) {
-    fra.me.REG[5] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[3])(fra.me.REG[3]);
-    fra.me.REG[3] = fra.me.REG[5];
+    fra.me.REG[0] = CALL_metamodel___static_type___MMType___not_for_self(fra.me.REG[4])(fra.me.REG[4]);
+    fra.me.REG[4] = fra.me.REG[0];
   }
   /* ./syntax//typing.nit:1674 */
-  fra.me.REG[3] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[3]);
+  fra.me.REG[4] = CALL_syntax___typing___AReassignFormExpr___do_rvalue_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[4]);
   /* ./syntax//typing.nit:1675 */
-  REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+  REGB1 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
   if (UNTAG_Bool(REGB1)) {
   } else {
-    REGB0 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+    REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
     if (UNTAG_Bool(REGB0)) {
       REGB0 = TAG_Bool(false);
       REGB1 = REGB0;
     } else {
-      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[3])(fra.me.REG[3], NIT_NULL);
+      REGB0 = CALL_standard___kernel___Object_____eqeq(fra.me.REG[4])(fra.me.REG[4], NIT_NULL);
       REGB1 = REGB0;
     }
   }
@@ -10118,26 +10408,26 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
     goto label1;
   }
   /* ./syntax//typing.nit:1676 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
-  CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[3], fra.me.REG[5]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+  CALL_syntax___syntax_base___AbsSyntaxVisitor___check_conform(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[4], fra.me.REG[0]);
   /* ./syntax//typing.nit:1678 */
-  ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[0]) = fra.me.REG[4];
+  ATTR_syntax___typing___ASendReassignExpr____read_prop(fra.me.REG[2]) = fra.me.REG[5];
   /* ./syntax//typing.nit:1679 */
-  fra.me.REG[5] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[2])(fra.me.REG[2]);
-  fra.me.REG[2] = fra.me.REG[5];
+  fra.me.REG[0] = CALL_standard___collection___array___Collection___to_a(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[3] = fra.me.REG[0];
   /* ./syntax//typing.nit:1680 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[0])(fra.me.REG[0]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[5]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___AReassignFormExpr___n_value(fra.me.REG[2])(fra.me.REG[2]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[0]);
   /* ./syntax//typing.nit:1682 */
-  fra.me.REG[5] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  fra.me.REG[5] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[5])(fra.me.REG[5]);
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-  REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
+  fra.me.REG[0] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[0] = CALL_syntax___syntax_base___AExpr___stype(fra.me.REG[0])(fra.me.REG[0]);
+  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB1 = CALL_syntax___typing___AExpr___is_implicit_self(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+  REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[4])(fra.me.REG[4]);
   REGB2 = TAG_Int(3);
-  fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+  fra.me.REG[4] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
   if (!once_value_6) {
     fra.me.REG[6] = BOX_NativeString("");
     REGB2 = TAG_Int(0);
@@ -10146,10 +10436,10 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
     register_static_object(&once_value_6);
   } else fra.me.REG[6] = once_value_6;
   fra.me.REG[6] = fra.me.REG[6];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(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[6]);
+  fra.me.REG[6] = CALL_syntax___typing___ASendExpr___name(fra.me.REG[2])(fra.me.REG[2]);
   fra.me.REG[6] = CALL_standard___string___Object___to_s(fra.me.REG[6])(fra.me.REG[6]);
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
+  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[4])(fra.me.REG[4], fra.me.REG[6]);
   if (!once_value_7) {
     fra.me.REG[6] = BOX_NativeString("=");
     REGB2 = TAG_Int(1);
@@ -10158,86 +10448,86 @@ void syntax___typing___ASendReassignExpr___do_all_typing(val_t p0, val_t p1){
     register_static_object(&once_value_7);
   } else fra.me.REG[6] = once_value_7;
   fra.me.REG[6] = fra.me.REG[6];
-  CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[6]);
-  fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
-  fra.me.REG[3] = CALL_standard___symbol___String___to_symbol(fra.me.REG[3])(fra.me.REG[3]);
-  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1], fra.me.REG[5], REGB1, REGB0, fra.me.REG[3], fra.me.REG[2], NIT_NULL);
+  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___string___Object___to_s(fra.me.REG[4])(fra.me.REG[4]);
+  fra.me.REG[4] = CALL_standard___symbol___String___to_symbol(fra.me.REG[4])(fra.me.REG[4]);
+  CALL_syntax___typing___AAbsSendExpr___do_typing(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1], fra.me.REG[0], REGB1, REGB0, fra.me.REG[4], fra.me.REG[3], NIT_NULL);
   /* ./syntax//typing.nit:1683 */
-  REGB0 = TAG_Bool(fra.me.REG[4]==NIT_NULL);
+  REGB0 = TAG_Bool(fra.me.REG[5]==NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
     nit_abort("Reciever is null", NULL, LOCATE_syntax___typing, 1683);
   }
-  fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[4])(fra.me.REG[4]);
-  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
+  fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[5])(fra.me.REG[5]);
+  REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
   if (UNTAG_Bool(REGB0)) {
     /* ./syntax//typing.nit:1684 */
-    fra.me.REG[2] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
-    fra.me.REG[2] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[2])(fra.me.REG[2]);
-    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[2])(fra.me.REG[2]);
+    fra.me.REG[3] = CALL_syntax___syntax_base___AbsSyntaxVisitor___local_property(fra.me.REG[1])(fra.me.REG[1]);
+    fra.me.REG[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra.me.REG[3])(fra.me.REG[3]);
+    REGB0 = CALL_metamodel___abstractmetamodel___MMGlobalProperty___is_init(fra.me.REG[3])(fra.me.REG[3]);
     REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:1685 */
       REGB0 = TAG_Int(3);
-      fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+      fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
       if (!once_value_8) {
-        fra.me.REG[3] = BOX_NativeString("Error: try to invoke constructor ");
+        fra.me.REG[4] = BOX_NativeString("Error: try to invoke constructor ");
         REGB0 = TAG_Int(33);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-        once_value_8 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        once_value_8 = fra.me.REG[4];
         register_static_object(&once_value_8);
-      } else fra.me.REG[3] = once_value_8;
-      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]);
-      fra.me.REG[3] = 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[3]);
+      } else fra.me.REG[4] = once_value_8;
+      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[4] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+      CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
       if (!once_value_9) {
-        fra.me.REG[3] = BOX_NativeString(" in a method.");
+        fra.me.REG[4] = BOX_NativeString(" in a method.");
         REGB0 = TAG_Int(13);
-        fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-        once_value_9 = fra.me.REG[3];
+        fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+        once_value_9 = fra.me.REG[4];
         register_static_object(&once_value_9);
-      } else fra.me.REG[3] = once_value_9;
-      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]);
-      fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+      } else fra.me.REG[4] = once_value_9;
+      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]);
+      CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
     } else {
       /* ./syntax//typing.nit:1686 */
-      fra.me.REG[2] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[0])(fra.me.REG[0]);
-      REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[2])(fra.me.REG[2]);
+      fra.me.REG[3] = CALL_parser___parser_nodes___ASendExpr___n_expr(fra.me.REG[2])(fra.me.REG[2]);
+      REGB0 = CALL_syntax___typing___AExpr___is_self(fra.me.REG[3])(fra.me.REG[3]);
       REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
       if (UNTAG_Bool(REGB0)) {
         /* ./syntax//typing.nit:1687 */
         REGB0 = TAG_Int(3);
-        fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+        fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
         if (!once_value_10) {
-          fra.me.REG[3] = BOX_NativeString("Error: constructor ");
+          fra.me.REG[4] = BOX_NativeString("Error: constructor ");
           REGB0 = TAG_Int(19);
-          fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
-          once_value_10 = fra.me.REG[3];
+          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
+          once_value_10 = fra.me.REG[4];
           register_static_object(&once_value_10);
-        } else fra.me.REG[3] = once_value_10;
-        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]);
-        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]);
+        } else fra.me.REG[4] = once_value_10;
+        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[5] = CALL_standard___string___Object___to_s(fra.me.REG[5])(fra.me.REG[5]);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
         if (!once_value_11) {
-          fra.me.REG[4] = BOX_NativeString(" is not invoken on 'self'.");
+          fra.me.REG[5] = BOX_NativeString(" is not invoken on 'self'.");
           REGB0 = TAG_Int(26);
-          fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB0);
-          once_value_11 = fra.me.REG[4];
+          fra.me.REG[5] = NEW_String_standard___string___String___with_native(fra.me.REG[5], REGB0);
+          once_value_11 = fra.me.REG[5];
           register_static_object(&once_value_11);
-        } else fra.me.REG[4] = once_value_11;
-        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]);
-        fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
-        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[0], fra.me.REG[2]);
+        } else fra.me.REG[5] = once_value_11;
+        fra.me.REG[5] = fra.me.REG[5];
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[5]);
+        fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+        CALL_syntax___syntax_base___AbsSyntaxVisitor___error(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2], fra.me.REG[3]);
       }
     }
   }
   /* ./syntax//typing.nit:1691 */
   REGB0 = TAG_Bool(true);
-  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[0]) = REGB0;
+  ATTR_syntax___typing___AExpr____is_typed(fra.me.REG[2]) = REGB0;
   label1: while(0);
   stack_frame_head = fra.me.prev;
   return;
@@ -11770,7 +12060,7 @@ val_t syntax___typing___AInitExpr___compute_raw_arguments(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -11778,12 +12068,14 @@ val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
   fra.me.line = 1911;
   fra.me.meth = LOCATE_syntax___typing___AClosureCallExpr___variable;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1911 */
-  fra.me.REG[0] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AClosureCallExpr____variable(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1911);
@@ -11791,7 +12083,7 @@ val_t syntax___typing___AClosureCallExpr___variable(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AClosureCallExpr___compute_raw_arguments(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -11928,7 +12220,7 @@ val_t syntax___typing___ABreakClosureId___to_symbol(val_t p0){
   return fra.me.REG[0];
 }
 val_t syntax___typing___AClosureDef___closure(val_t p0){
-  struct {struct stack_frame_t me;} fra;
+  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;
@@ -11936,12 +12228,14 @@ val_t syntax___typing___AClosureDef___closure(val_t p0){
   fra.me.line = 1942;
   fra.me.meth = LOCATE_syntax___typing___AClosureDef___closure;
   fra.me.has_broke = 0;
-  fra.me.REG_size = 1;
+  fra.me.REG_size = 2;
   fra.me.REG[0] = NIT_NULL;
+  fra.me.REG[1] = NIT_NULL;
   fra.me.REG[0] = p0;
   /* ./syntax//typing.nit:1942 */
-  fra.me.REG[0] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[0]);
-  REGB0 = TAG_Bool(fra.me.REG[0]!=NIT_NULL);
+  fra.me.REG[1] = fra.me.REG[0];
+  fra.me.REG[1] = ATTR_syntax___typing___AClosureDef____closure(fra.me.REG[1]);
+  REGB0 = TAG_Bool(fra.me.REG[1]!=NIT_NULL);
   if (UNTAG_Bool(REGB0)) {
   } else {
     nit_abort("Cast failed", NULL, LOCATE_syntax___typing, 1942);
@@ -11949,7 +12243,7 @@ val_t syntax___typing___AClosureDef___closure(val_t p0){
   goto label1;
   label1: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[0];
+  return fra.me.REG[1];
 }
 val_t syntax___typing___AClosureDef___escapable(val_t p0){
   struct {struct stack_frame_t me;} fra;
@@ -12038,7 +12332,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:210 */
+    /* ./../lib/standard//kernel.nit:227 */
     REGB1 = TAG_Bool((REGB0)==(REGB1));
     /* ./syntax//typing.nit:1959 */
     REGB2 = REGB1;
@@ -12107,24 +12401,29 @@ 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:335 */
+  /* ./../lib/standard//kernel.nit:352 */
   while(1) {
-    /* ./../lib/standard//kernel.nit:215 */
+    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:232 */
     REGB0 = TAG_Bool(UNTAG_Int(REGB2)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//kernel.nit:335 */
+    /* ./../lib/standard//kernel.nit:352 */
     if (UNTAG_Bool(REGB0)) {
       /* ./syntax//typing.nit:1971 */
       REGB0 = REGB2;
       /* ./syntax//typing.nit:1972 */
       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___MapRead_____bra(fra.me.REG[6])(fra.me.REG[6], REGB0);
+      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, 1972);
       }
       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___MapRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
+      fra.me.REG[7] = CALL_standard___collection___abstract_collection___SequenceRead_____bra(fra.me.REG[7])(fra.me.REG[7], REGB0);
       fra.me.REG[7] = NEW_AutoVariable_syntax___syntax_base___AutoVariable___init(fra.me.REG[6], fra.me.REG[7]);
       /* ./syntax//typing.nit:1973 */
       fra.me.REG[6] = CALL_syntax___syntax_base___AClosureDef___variables(fra.me.REG[0])(fra.me.REG[0]);
@@ -12139,14 +12438,14 @@ void syntax___typing___AClosureDef___accept_typing2(val_t p0, val_t p1, val_t p2
       /* ./syntax//typing.nit:1975 */
       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:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB0 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB0 = TAG_Int(UNTAG_Int(REGB2)+UNTAG_Int(REGB0));
-      /* ./../lib/standard//kernel.nit:337 */
+      /* ./../lib/standard//kernel.nit:354 */
       REGB2 = REGB0;
     } else {
-      /* ./../lib/standard//kernel.nit:335 */
+      /* ./../lib/standard//kernel.nit:352 */
       goto label5;
     }
   }
@@ -12163,7 +12462,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:178 */
+    /* ./../lib/standard//kernel.nit:195 */
     REGB1 = TAG_Bool((REGB2)==(REGB1));
     /* ./syntax//typing.nit:1981 */
     REGB0 = REGB1;
@@ -12687,6 +12986,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
     static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -12708,7 +13008,12 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   /* ./syntax//typing.nit:2080 */
   REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(0);
-  /* ./../lib/standard//kernel.nit:217 */
+  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 */
   REGB1 = TAG_Bool(UNTAG_Int(REGB0)>UNTAG_Int(REGB1));
   /* ./syntax//typing.nit:2080 */
   if (UNTAG_Bool(REGB1)) {
@@ -12726,7 +13031,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   /* ./syntax//typing.nit:2083 */
   REGB1 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
   REGB0 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:218 */
+  /* ./../lib/standard//kernel.nit:235 */
   REGB0 = TAG_Int(UNTAG_Int(REGB1)+UNTAG_Int(REGB0));
   /* ./syntax//typing.nit:2083 */
   CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB0);
@@ -12735,7 +13040,7 @@ void syntax___typing___AOnceExpr___accept_typing(val_t p0, val_t p1){
   /* ./syntax//typing.nit:2087 */
   REGB0 = CALL_syntax___typing___TypingVisitor___once_count(fra.me.REG[3])(fra.me.REG[3]);
   REGB1 = TAG_Int(1);
-  /* ./../lib/standard//kernel.nit:220 */
+  /* ./../lib/standard//kernel.nit:237 */
   REGB1 = TAG_Int(UNTAG_Int(REGB0)-UNTAG_Int(REGB1));
   /* ./syntax//typing.nit:2087 */
   CALL_syntax___typing___TypingVisitor___once_count__eq(fra.me.REG[3])(fra.me.REG[3], REGB1);
index 6ed5a2a..626eca6 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/syntax/typing. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./syntax/typing. */
 #ifndef syntax___typing_sep
 #define syntax___typing_sep
 #include "syntax___scope._sep.h"
index 8e4d577..0efbec4 100644 (file)
@@ -1,5 +1,5 @@
 #include "tables._nitni.h"
-#include "../src/parser//tables_nit.h"
+#include "tables_nit.h"
 /* out/indirect function for tables::TablesCapable::lexer_goto */
 val_t TablesCapable_lexer_goto___out( val_t recv, val_t i, val_t j )
 {
index 70f9b77..f7a3d4e 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_TablesCapable{
 } TablesCapable;
 #endif
 
-#include "../src/parser//tables_nit.h"
+#include "./tables_nit.h"
 
 /* out/indirect function for tables::TablesCapable::lexer_goto */
 val_t TablesCapable_lexer_goto___out( val_t recv, val_t i, val_t j );
index 4a4c105..b5bbed7 100644 (file)
@@ -10,7 +10,7 @@ typedef struct s_Object{
 } Object;
 #endif
 
-#include "time_nit.h"
+#include ".././../lib/standard//time_nit.h"
 
 /* out/indirect function for time::Object::get_time */
 val_t Object_get_time___out( val_t recv );
index 95d46c2..e1bc6fe 100644 (file)
@@ -4,6 +4,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
   struct {struct stack_frame_t me; val_t MORE_REG[6];} fra;
   val_t REGB0;
   val_t REGB1;
+  val_t REGB2;
   val_t tmp;
   static val_t once_value_1; /* Once value */
   fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
@@ -22,6 +23,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
   fra.me.REG[0] = p0;
   fra.me.REG[1] = p1;
   /* ./utils.nit:21 */
+  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[Symbol]*/;
   if (UNTAG_Bool(REGB0)) {
   } else {
@@ -29,57 +31,62 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
   }
   /* ./utils.nit:24 */
   if (!once_value_1) {
-    fra.me.REG[0] = CALL_utils___Object___cmangle_table(fra.me.REG[0])(fra.me.REG[0]);
-    once_value_1 = fra.me.REG[0];
+    fra.me.REG[2] = CALL_utils___Object___cmangle_table(fra.me.REG[2])(fra.me.REG[2]);
+    once_value_1 = fra.me.REG[2];
     register_static_object(&once_value_1);
-  } else fra.me.REG[0] = once_value_1;
-  fra.me.REG[0] = fra.me.REG[0];
+  } else fra.me.REG[2] = once_value_1;
+  fra.me.REG[2] = fra.me.REG[2];
   /* ./utils.nit:25 */
-  fra.me.REG[2] = NEW_Buffer_standard___string___Buffer___init();
-  /* ./../lib/standard//collection//array.nit:234 */
+  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:235 */
+  /* ./../lib/standard//collection//array.nit:270 */
   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, 235);
+    nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 270);
   }
   REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
-  /* ./../lib/standard//collection//array.nit:236 */
+  /* ./../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:237 */
+  /* ./../lib/standard//collection//array.nit:272 */
   while(1) {
-    /* ./../lib/standard//collection//array.nit:23 */
+    /* ./../lib/standard//collection//array.nit:24 */
     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, 23);
+      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:215 */
+    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:232 */
     REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
-    /* ./../lib/standard//collection//array.nit:237 */
+    /* ./../lib/standard//collection//array.nit:272 */
     if (UNTAG_Bool(REGB1)) {
-      /* ./../lib/standard//collection//array.nit:238 */
+      /* ./../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, 238);
+        nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 273);
       }
-      /* ./../lib/standard//collection//array.nit:654 */
+      /* ./../lib/standard//collection//array.nit:718 */
       fra.me.REG[4] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
       /* ./utils.nit:27 */
-      REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[2])(fra.me.REG[2]);
+      REGB1 = CALL_standard___collection___abstract_collection___Collection___is_empty(fra.me.REG[0])(fra.me.REG[0]);
       REGB1 = TAG_Bool(!UNTAG_Bool(REGB1));
       if (UNTAG_Bool(REGB1)) {
         /* ./utils.nit:28 */
         REGB1 = TAG_Char('_');
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB1);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
         /* ./utils.nit:29 */
         REGB1 = TAG_Char('_');
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB1);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
         /* ./utils.nit:30 */
         REGB1 = TAG_Char('_');
-        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], REGB1);
+        CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], REGB1);
       }
       /* ./utils.nit:32 */
       REGB1 = TAG_Bool(false);
@@ -90,24 +97,24 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
       /* ./utils.nit:34 */
       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:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB1 = TAG_Int(1);
-      /* ./../lib/standard//kernel.nit:218 */
+      /* ./../lib/standard//kernel.nit:235 */
       REGB1 = TAG_Int(UNTAG_Int(REGB0)+UNTAG_Int(REGB1));
-      /* ./../lib/standard//collection//array.nit:239 */
+      /* ./../lib/standard//collection//array.nit:274 */
       REGB0 = REGB1;
     } else {
-      /* ./../lib/standard//collection//array.nit:237 */
+      /* ./../lib/standard//collection//array.nit:272 */
       goto label3;
     }
   }
   label3: while(0);
   /* ./utils.nit:55 */
-  fra.me.REG[2] = CALL_standard___string___Object___to_s(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]);
   goto label4;
   label4: while(0);
   stack_frame_head = fra.me.prev;
-  return fra.me.REG[2];
+  return fra.me.REG[0];
 }
       void OC_utils___Object___cmangle_2(struct stack_frame_t *closctx, val_t p0){
         struct {struct stack_frame_t me;} fra;
@@ -128,12 +135,22 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
         REGB0 = fra.me.REG[0];
         /* ./utils.nit:36 */
         REGB1 = TAG_Char('a');
-        /* ./../lib/standard//kernel.nit:356 */
+        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:384 */
         REGB1 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB1));
         /* ./utils.nit:36 */
         if (UNTAG_Bool(REGB1)) {
           REGB1 = TAG_Char('z');
-          /* ./../lib/standard//kernel.nit:354 */
+          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:382 */
           REGB1 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB1));
         } else {
           /* ./utils.nit:36 */
@@ -144,12 +161,22 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           REGB1 = TAG_Bool(true);
         } else {
           REGB2 = TAG_Char('A');
-          /* ./../lib/standard//kernel.nit:356 */
+          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:384 */
           REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
           /* ./utils.nit:36 */
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Char('Z');
-            /* ./../lib/standard//kernel.nit:354 */
+            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:382 */
             REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
           } else {
             /* ./utils.nit:36 */
@@ -162,12 +189,22 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           REGB1 = TAG_Bool(true);
         } else {
           REGB2 = TAG_Char('0');
-          /* ./../lib/standard//kernel.nit:356 */
+          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:384 */
           REGB2 = TAG_Bool(UNTAG_Char(REGB0)>=UNTAG_Char(REGB2));
           /* ./utils.nit:36 */
           if (UNTAG_Bool(REGB2)) {
             REGB2 = TAG_Char('9');
-            /* ./../lib/standard//kernel.nit:354 */
+            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:382 */
             REGB2 = TAG_Bool(UNTAG_Char(REGB0)<=UNTAG_Char(REGB2));
           } else {
             /* ./utils.nit:36 */
@@ -178,7 +215,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
         }
         if (UNTAG_Bool(REGB1)) {
           /* ./utils.nit:37 */
-          CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], REGB0);
+          CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB0);
           /* ./utils.nit:38 */
           REGB1 = TAG_Bool(false);
           closctx->REG[5] = REGB1;
@@ -191,7 +228,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:350 */
+            /* ./../lib/standard//kernel.nit:378 */
             REGB1 = TAG_Bool((REGB0)==(REGB1));
             /* ./utils.nit:40 */
             REGB2 = REGB1;
@@ -204,7 +241,7 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
           }
           if (UNTAG_Bool(REGB2)) {
             /* ./utils.nit:41 */
-            CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], REGB0);
+            CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB0);
             /* ./utils.nit:42 */
             REGB2 = TAG_Bool(true);
             closctx->REG[5] = REGB2;
@@ -213,20 +250,20 @@ val_t utils___Object___cmangle(val_t p0, val_t p1){
             closctx->REG[6] = REGB2;
           } else {
             /* ./utils.nit:44 */
-            REGB2 = CALL_standard___collection___abstract_collection___MapRead___has_key(closctx->REG[0])(closctx->REG[0], REGB0);
+            REGB2 = CALL_standard___collection___abstract_collection___MapRead___has_key(closctx->REG[2])(closctx->REG[2], REGB0);
             if (UNTAG_Bool(REGB2)) {
               /* ./utils.nit:45 */
               if (UNTAG_Bool(closctx->REG[6])) {
                /* ./utils.nit:46 */
                REGB2 = TAG_Char('_');
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], REGB2);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB2);
                /* ./utils.nit:47 */
                REGB2 = TAG_Char('_');
-               CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[2])(closctx->REG[2], REGB2);
+               CALL_standard___collection___abstract_collection___SimpleCollection___add(closctx->REG[0])(closctx->REG[0], REGB2);
               }
               /* ./utils.nit:49 */
-              fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(closctx->REG[0])(closctx->REG[0], REGB0);
-              CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[2])(closctx->REG[2], fra.me.REG[0]);
+              fra.me.REG[0] = CALL_standard___collection___abstract_collection___MapRead_____bra(closctx->REG[2])(closctx->REG[2], REGB0);
+              CALL_standard___collection___abstract_collection___Sequence___append(closctx->REG[0])(closctx->REG[0], fra.me.REG[0]);
               /* ./utils.nit:50 */
               REGB0 = TAG_Bool(false);
               closctx->REG[6] = REGB0;
index 17bac9c..da27b19 100644 (file)
@@ -1,4 +1,4 @@
-/* This C header file is generated by NIT to compile modules and programs that requires src/utils. */
+/* This C header file is generated by NIT to compile modules and programs that requires ./utils. */
 #ifndef utils_sep
 #define utils_sep
 #include "standard._sep.h"